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.
