Back to archive
#ai#llm#glossary#aigen

Self-attention

W zdaniu „Anna odłożyła książkę, bo była ciężka” samo słowo „była” niewiele wyjaśnia. Trzeba połączyć je z wcześniejszymi fragmentami. Model przetwarzający tekst potrzebuje sposobu, żeby opis jednego miejsca uwzględniał informacje z innych miejsc tego samego tekstu.

Self-attention tworzy taki opis przez ważone mieszanie informacji z dostępnych tokenów, czyli kawałków tekstu. Dla każdej pozycji model przygotowuje trzy listy liczb: query do szukania powiązań, key do porównania i value zawierające informację do przekazania. Są to wyuczone reprezentacje, nie dosłowne pytania ani hasła w słowniku.

Dla pozycji „była” jej query porównuje się z key innych fragmentów, np. „Anna” i „książkę”. Wyniki wyznaczają udziały informacji przekazywanej z ich value. Gdy większy udział otrzyma fragment o książce, jego opis mocniej wpłynie na nowy opis „była”. „Self” oznacza, że wszystkie trzy rodzaje danych pochodzą z tej samej sekwencji.

Przykład ze zdaniem pokazuje potrzebę kontekstu, ale nie gwarantuje, że konkretne obliczenie poprawnie rozpozna odniesienie zaimka. Dostępne pozycje może dodatkowo ograniczać Causal Masking. Wagi attention nie są oceną prawdziwości całej odpowiedzi.

Mechanizm i szczegóły

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.