Scaled Dot-Product Attention
Model ma połączyć informacje z kilku fragmentów zdania. Jeden fragment jest bardziej przydatny, drugi mniej. Potrzebna jest konkretna metoda policzenia ich udziałów, a następnie złożenia informacji w jeden wynik.
Scaled Dot-Product Attention porównuje liczbowe opisy query i key, zamienia wyniki na wagi i miesza odpowiadające im value. Każdy opis jest wektorem, czyli listą liczb. Query opisuje aktualną potrzebę danej pozycji, key służy do dopasowania, a value zawiera informację, którą można przekazać.
Porównanie polega na pomnożeniu odpowiadających sobie liczb i dodaniu iloczynów. Wynik dzieli się przez pierwiastek z długości listy, aby jego skala nie rosła nadmiernie z wymiarem. Softmax przelicza wyniki na nieujemne udziały sumujące się do jedności.
Jeżeli udziały wynoszą 25% i 75%, a przekazywane liczby to 2 i 6, otrzymujemy 0,25 × 2 + 0,75 × 6 = 5. To uproszczenie do jednej liczby; rzeczywiste value są listami. Udziały mówią o mieszaniu informacji, a nie o szansie, że odpowiedź jest poprawna.
Mechanizm i szczegóły
Bez maskowania i dropout zapis wygląda tak:
zawiera query, — key, a — value. Wektory zajmują wiersze macierzy; 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 i , a dwa value to i . Wynik wynosi:
To wymyślony przykład rachunku. Wagi rozdzielają udział value; nie są prawdopodobieństwami poprawności odpowiedzi modelu.
Dzielenie przez 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.