Self-attention
Self-attention to mechanizm obliczający reprezentację pozycji na podstawie informacji z tej samej sekwencji. Wektory query, key i value powstają z reprezentacji jej tokenów. Wspólne źródło nie oznacza, że te trzy wektory są identyczne: mogą powstawać przez różne uczone projekcje.
Query danej pozycji jest porównywane z key dostępnych pozycji. Otrzymane wagi określają udział ich value w wyniku. W Transformer obliczenie to realizuje m.in. Scaled Dot-Product Attention. Opis i implementacja: Dive into Deep Learning, §11.6.1.
Co ogranicza dostęp do innych pozycji
Weźmy trzy pozycje sekwencji. Bez maski reprezentacja drugiej może korzystać ze wszystkich trzech, także z siebie. Z maską przyczynową trzecia pozycja jest dla niej niedostępna. To nadal Self-attention: zmienił się zakres dostępu, a nie źródło query, key i value.
Tak rozróżniono encoder i decoder w oryginalnym paperze, §3.2.3. Samo słowo „self” nie oznacza więc dostępu do przyszłych tokenów.
W pełnym wariancie liczba porównywanych par rośnie kwadratowo z długością sekwencji. Dla 100 pozycji jest ich 10 000, a dla 200 już 40 000. To ilustracja liczby par, nie pomiar czasu konkretnej implementacji. Porównanie kosztu: §11.6.2.
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.