Wróć do ścieżek
Moduł 3

Positional Encoding: kolejność ma znaczenie

„kot śpi pies chrapie" i „pies śpi kot chrapie" to dla wektorów słów ten sam zbiór. Model dostaje „paczkę" wektorów a sam z siebie nie wie, co było pierwsze. Tu dokładasz brakującą informację: pozycję.

III etap

Widzisz, mamy jeszcze jeden etap, zanim nasze zdanie trafi do modelu. Wiemy już, że zdanie zostało podzielone na tokeny, a tokeny zamienione na wektory — pora dołożyć kolejną informację: jaką pozycję token zajmuje w zdaniu. Na przykładzie Dzisiaj będzie padać chcemy zapisać, że Dzisiaj jest pierwsze, będzie drugie, a padać trzecie. I znowu pojawia się problem: nie możemy po prostu dopisać liczb 1, 2, 3, bo niosłyby mylącą informację o wielkości. Sam numer pozycji jest informacją o kolejności, ale jego wartość narzuca też konkretną zależność między pozycjami.

Warto wspomnieć, że problem ten pojawił się stosunkowo późno i wynikał z architektury modelu, którą będziemy jeszcze omawiać. Trzeba bowiem pamiętać, że w tej architekturze zdanie jest przetwarzane inaczej niż wcześniej — wszystkie tokeny naraz, a nie po kolei. To właśnie dlatego kolejność trzeba zakodować osobno.

Praca, o której mowa, jest w zasadzie przełomem w modelach językowych i będziemy do niej często wracać. Nosi tytuł „Attention Is All You Need" i została opublikowana w 2017 roku. My w tym rozdziale przyjrzymy się tylko jednemu opisanemu w niej mechanizmowi — positional encoding.

Wzór wygląda następująco:

input = embedding("king") + PE(pos)

  • PE(pos) — Wektor pozycji, tej samej długości co wymiar embeddingu, (wiemy, że wektory możemy dodać tylko wtedy, jeśli mają ten sam wymiar)

Zaloguj się, aby czytać dalej

To tylko początek modułu. Załóż darmowe konto lub zaloguj się, aby mieć dostęp do bezpłatnych modułów.