Back to archive
#ai#llm#glossary#aigen

Scaled Dot-Product Attention

Scaled Dot-Product Attention oblicza ważoną sumę wektorów value. Wagi wynikają z iloczynów skalarnych query i key, podzielonych przez pierwiastek z ich wymiaru i przekształconych przez softmax.

Bez maskowania i dropout zapis wygląda tak:

Attention(Q,K,V)=softmax(QKTdk)V\operatorname{Attention}(Q,K,V)=\operatorname{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

QQ zawiera query, KK — key, a VV — value. Wektory zajmują wiersze macierzy; dkd_k jest wymiarem query i key. Softmax działa osobno dla każdego query, po dostępnych key. Macierz jego wyników służy do połączenia value. Wyprowadzenie i implementacja: Dive into Deep Learning, §11.3.3.

Mały przykład wyniku

Załóżmy, że softmax wyznaczył wagi 0,250{,}25 i 0,750{,}75, a dwa value to [2;0][2;0] i [0;4][0;4]. Wynik wynosi:

0,25[2;0]+0,75[0;4]=[0,5;3].0{,}25[2;0]+0{,}75[0;4]=[0{,}5;3].

To wymyślony przykład rachunku. Wagi rozdzielają udział value; nie są prawdopodobieństwami poprawności odpowiedzi modelu.

Dzielenie przez dk\sqrt{d_k} przeciwdziała wzrostowi skali iloczynów wraz z wymiarem. Zbyt duże wartości mogą nasycać softmax i zmniejszać jego gradienty. Uzasadnienie podano w Attention Is All You Need, §3.2.1.

Ta operacja nie przesądza, skąd pochodzą dane. W Self-attention query, key i value wywodzą się z jednej sekwencji; w attention między sekwencjami ich źródła się różnią. Multi-Head Attention wykonuje takie obliczenia na kilku uczonych projekcjach.

Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.