Causal Masking
Causal Masking ogranicza przepływ informacji tak, aby reprezentacja danej pozycji nie korzystała z późniejszych pozycji sekwencji. W Self-attention modelu przewidującego następny token zwykle dopuszcza pozycję bieżącą i wcześniejsze.
Maska działa na dopuszczalność połączeń, a nie na znaczenie słów. Odrzuconej pozycji nie przyznaje się po prostu trochę mniejszej wagi: jej udział w wyniku attention ma wynosić zero. Implementacja TensorFlow pokazuje ten warunek i porównuje wyniki dla pełnej oraz skróconej sekwencji.
Które pozycje są dostępne
Dla trzech pozycji otrzymujemy:
| Pozycja query | Key 1 | Key 2 | Key 3 |
|---|---|---|---|
| 1 | tak | nie | nie |
| 2 | tak | tak | nie |
| 3 | tak | tak | tak |
Przy uczeniu przewidywania następnego tokena wejście [start, A, B] można zestawić z celami [A, B, C]. Druga pozycja widzi start i A, gdy ma przewidzieć B. Dostęp do bieżącej pozycji wejściowej nie ujawnia więc odpowiedzi. To ilustracja przesunięcia celów o jeden krok.
W Scaled Dot-Product Attention zakazane wyniki porównań zastępuje się matematycznie wartością minus nieskończoność przed softmax. Maskę i przesunięcie opisują Vaswani et al., §3.1 i §3.2.3.
Positional Encoding informuje o kolejności, ale samo nie blokuje dostępu. Maska paddingu rozwiązuje jeszcze inny problem: pomija sztuczne wypełnienie sekwencji, niezależnie od tego, czy leży ono w przyszłości.
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.