Samouwaga to podstawowy mechanizm stosowany w sieciach neuronowych, szczególnie widoczny w modelach transformatorowych, pozwalający na efektywne przetwarzanie danych sekwencyjnych. Umożliwia modelowi różne ważenie różnych słów lub elementów w sekwencji, koncentrując się bardziej na odpowiednich częściach podczas obliczeń.
Składniki samouwagi
-
Zapytania, Klucze i Wartości: W procesie samouważności sekwencja wejściowa jest przekształcana na trzy wektory: Zapytanie, Klucz i Wartość. Wektory te uzyskuje się z sekwencji wejściowej poprzez transformacje liniowe, generując te składowe, które zostaną wykorzystane do obliczenia wyników uwagi.
-
Wyniki uwagi: Po uzyskaniu tych wektorów wyniki uwagi są obliczane poprzez pomiar podobieństwa pomiędzy wektorem zapytania i wektorami kluczowymi * ze wszystkich elementów sekwencji*. Zwykle robi się to za pomocąiloczynu skalarnego, po którym następujeskalowaniei zastosowaniefunkcji softmax w celu uzyskania wag uwagi dla każdego elementu.
-
Suma ważona: Uzyskane wagi uwagi są używane do ważenia wektorów wartości. Ważona suma tych wartości, oparta na odpowiednich wagach uwagi, daje wynik warstwy samouważności.
-
Uwaga wielogłowa: Aby uchwycić różne relacje między słowami lub elementami, wykonuje się równolegle wiele zestawów transformacji Zapytanie, Klucz i Wartość, co skutkuje wieloma zestawami wag uwagi i wektorów wyjściowych. Są one następnie łączone i ponownie przekształcane w celu uzyskania ostatecznego wyniku.
Ułatwianie uczenia się zależności dalekiego zasięgu
Samouważność doskonale radzi sobie z wychwytywaniem zależności dalekiego zasięgu w sekwencjach ze względu na jej zdolność do bezpośredniego modelowania interakcji pomiędzy wszystkimi elementami w sekwencji. Tradycyjne architektury, takie jak rekurencyjne sieci neuronowe (RNN), borykają się z problemem zanikających lub eksplodujących problemów z gradientem, co ogranicza ich zdolność do uczenia się zależności dalekiego zasięgu. Z drugiej strony samouważność może uchwycić relacje między odległymi słowami lub elementami bez tych problemów, dzięki czemu jest skuteczniejsza w zrozumieniu kontekstu i relacji w sekwencji.
Przewaga nad tradycyjnymi architekturami
-
Równoległość: Samouwaga pozwala na równoległe obliczanie wyników uwagi dla wszystkich elementów w sekwencji, co czyni ją bardziej efektywną niż przetwarzanie sekwencyjne w RNN.
-
Zależności dalekiego zasięgu: W przeciwieństwie do RNN, które ze względu na swoją sekwencyjną naturę mają trudności z wychwytywaniem zależności na duże odległości, samouważność może skutecznie wychwytywać te zależności.
-
Zmniejszona długość ścieżki: Samouwaga bezpośrednio łączy wszystkie elementy w sekwencji, zmniejszając długość ścieżki pomiędzy odległymi elementami, umożliwiając lepszy przepływ gradientu podczas treningu.
Ograniczenia i złożoność obliczeniowa
-
Złożoność kwadratowa: Samouważność obejmuje porównania parami pomiędzy wszystkimi elementami sekwencji, co skutkuje kwadratowym wzrostem obliczeń wraz ze wzrostem długości sekwencji. Może to być kosztowne obliczeniowo w przypadku bardzo długich sekwencji.
-
Wymagania dotyczące pamięci: Transformatory, ze względu na mechanizmy samokontroli, często wymagają więcej pamięci w porównaniu do prostszych architektur, takich jak CNN lub RNN.
-
Maskowanie uwagi: Radzenie sobie z sekwencjami o różnej długości wymaga użycia masek uwagi do obsługi dopełnienia, co może zwiększyć złożoność modelu i procesu uczenia.
Pomimo tych ograniczeń samouważność okazała się bardzo skutecznym mechanizmem w zadaniach związanych z przetwarzaniem języka naturalnego, a trwające badania mają na celu rozwiązanie jej złożoności obliczeniowej w celu uzyskania jeszcze większej wydajności i skalowalności.