Spis treści
Mechanizm uwagi (uczenie maszynowe)
Mechanizm uwagi – mechanizm uczenia maszynowego symulujący działanie ludzkiej uwagi poprzez przypisywanie różnych poziomów ważności różnym słowom w zdaniu[1]. Mechanizm nadaje wagę każdemu słowu, obliczając „miękkie” wagi dla numerycznej reprezentacji słowa, zwanej jego osadzeniem (ang. embedding), w określonym oknie kontekstu (części zdania).
Obliczanie tych wag może odbywać się jednocześnie w modelach zwanych transformatorami lub pojedynczo w modelach zwanych rekurencyjnymi sieciami neuronowymi. W przeciwieństwie do „twardych” wag, z góry określonych i stałych podczas treningu, „miękkie” wagi mogą dostosowywać się i zmieniać przy każdym użyciu modelu.
Mechanizm został rozwinięty w 2017 w odpowiedzi na słabe strony wykorzystania informacji pochodzących z ukrytych stanów rekurencyjnych sieci neuronowych. Rekurencyjne sieci neuronowe faworyzują nowsze informacje zawarte w słowach na końcu zdania, podczas gdy oczekuje się, że informacje znajdujące się wcześniej w zdaniu będą tłumione. Uwaga pozwala na obliczenie ukrytej reprezentacji tokenu równego dostępu do dowolnej części zdania bezpośrednio, a nie tylko poprzez poprzedni stan ukryty[2].
Kalendarium
[edytuj | edytuj kod]- 1990. – Opracowano metodę fast weight controller [3][4]. Wagi neuronów uzyskują szybkie połączenia dynamiczne, które są podobne do kluczy i wartości
- 2014 – Zaproponowało mechanizm uwagi w rekurencyjnych sieciach neuronowych aby usprawnić tłumaczenie długich zdań[5]
- 2015 – Aplikacje mechanizmu uwagi w analizie obrazów[6][7][5]
- 2017 – Zdefiniowanie mechanizmu transformatora[2]
Przykład działania
[edytuj | edytuj kod]Powiązanie różnych części zdania lub obrazu może pomóc w zrozumieniu jego struktury. Mechanizm uwagi daje sieci neuronowej możliwość osiągnięcia tego celu. Na przykład, gdy sieć przetwarza słowo „that” w zdaniu „See that girl run”, chcemy, aby rozpoznała, że odnosi się ono do słowa „girl”. Poniższy diagram pokazuje, w jaki sposób odpowiednio wytrenowana sieć może to osiągnąć.

- Macierz wejściowa osadzonych słów oznaczona jako X ma rozmiar 4 × 300.
- Wektor x reprezentuje osadzenie słowa „that”.
- Głowa uwagi składa się z trzech trenowanych sieci neuronowych. Każda z nich zawiera 100 neuronów i wykorzystuje macierz wag o wymiarach 300 × 100.
- [*] Skalowanie softmaxu przez zapobiega dużej zmienności w , która mogłaby sprawić, że jedno słowo nadmiernie zdominuje wynik, co skutkowałoby skupieniem uwagi wyłącznie na jednym słowie — tak jak miałoby to miejsce w przypadku dyskretnego maksimum (hard max).
- Uwaga dotycząca zapisu: Na schemacie przyjęto powszechnie stosowane założenie, że wektory są wierszami, co stoi w sprzeczności ze standardową notacją matematyczną, w której wektory są kolumnami. Poprawnym matematycznie podejściem byłoby zatem dokonanie transpozycji wektora kontekstowego i zastosowanie softmaxu kolumnowego, co prowadzi do zgodnej z konwencją formy wzoru: .
Struktura danych wejściowych jest zakodowana w macierzach wag Qw i Kw, natomiast macierz wag Vw reprezentuje tę strukturę w postaci cech istotnych dla danego zadania. Z tego powodu komponenty głowy uwagi nazywane są Query (zapytanie, Q), Key (klucz, K) i Value (wartość, V) – jest to analogia niezbyt precyzyjna, a być może nawet myląca, zaczerpnięta z relacyjnych baz danych.
Możemy znacznie przyspieszyć obliczenia, równolegle przetwarzając opisane wyżej operacje. Warto zauważyć, że wektor kontekstu dla słowa „that” nie zależy od wektorów kontekstu pozostałych słów; dlatego można obliczyć wszystkie wektory kontekstu jednocześnie, wykorzystując macierz X, zawierającą osadzenia wyrazów, zamiast pojedynczego wektora x w poprzednim wzorze. W tym przypadku funkcję softmax należy stosować w ujęciu macierzowym – niezależnie dla każdego wiersza. Zapewnia to istotną przewagę obliczeniową w porównaniu z sieciami rekurencyjnymi, które muszą przetwarzać dane sekwencyjnie.
Przykład tłumaczenia
[edytuj | edytuj kod]Aby zbudować maszynę tłumaczącą z angielskiego na francuski, wstawia się jednostkę uwagi do podstawowego modelu kodera-dekodera, jak na diagramie poniżej. W najprostszym przypadku jednostka uwagi składa się z iloczynów skalarnych stanów rekurencyjnych kodera i nie wymaga treningu. W praktyce jednostka uwagi składa się z trzech warstw sieci neuronowej, które są w pełni połączone i trenowane, nazywanych query (zapytanie), key (klucz) i value (wartość).
Na powyższej grafice lewa strona (czarne linie) to mechanizm kodera-dekodera, środkowa pomarańczowa część to jednostka uwagi, zaś prawa strona (kolory oraz szara powierzchnia) to obliczona wartość. Szare regiony macierzy H i wektora w są wyzerowane. Liczbowe indeksy dolne wskazują rozmiary wektorów, natomiast indeksy i-1 oraz i oznaczają kolejne kroki.
Interpretacja wag
[edytuj | edytuj kod]Podczas tłumaczenia między językami proces dopasowania wyrazów polega na łączeniu odpowiadających słów ze zdania źródłowego ze słowami w zdaniu docelowym. System, który przeprowadza tłumaczenie w sposób naiwny, bez uwzględniania szyku słów, można modelować za pomocą macierzy mającej najwyższe wartości wzdłuż głównej przekątnej. Przewaga wartości poza przekątną pokazuje jednak, że mechanizm uwagi działa znacznie bardziej subtelnie.
Weźmy przykład tłumaczenia zdania I love you na język francuski. W pierwszym kroku dekodera 94% uwagi przypada na angielskie słowo I, więc sieć generuje je. W drugim kroku 88% wagi przypisane jest trzeciemu słowu you, co skutkuje wyborem t’. W ostatnim kroku 95% uwagi koncentruje się na słowie love, dlatego sieć proponuje aime. Dzięki temu uzyskujemy tłumaczenie zdania "je t' aime" z angielskiego na francuski.
Poniższa tabela pokazuje połączone wektory dopasowania:
I | love | you | |
---|---|---|---|
je | 0.94 | 0.02 | 0.04 |
t' | 0.11 | 0.01 | 0.88 |
aime | 0.03 | 0.95 | 0.02 |
Reprezentacja matematyczna
[edytuj | edytuj kod]Standardowy mechanizm uwagi (skalowany iloczyn skalarny)
[edytuj | edytuj kod]Skalowany iloczyn skalarny trzech macierzy jest zdefiniowany jako:
Gdzie oznacza transpozycję, zaś funkcja softmax jest zastosowana niezależnie dla każdego wiersza argumentu. Macierz (od ang. queries) zawiera zapytań (takich jak słowa), a macierze łącznie zawierają nieuporządkowany zbiór par key-value (pol. klucz-wartość).
Uwaga wieloczłonowa
[edytuj | edytuj kod]
Uwaga wieloczłonowa (ang. Multi-head attention) jest definiowana jak poniżej:
Każdy człon jest definiowany jak poniżej:
, gdzie są matrycami parametrów.
Samouwaga
[edytuj | edytuj kod]Mechanizm samouwagi (ang. self-attention) jest uproszczoną wersją standardowego mechanizmu z tą różnicą, że macierze są tą samą wartością. Kodery i dekodery transformatora mogą używać mechanizmu samouwagi z pewnymi zastrzeżeniami.
Samouwaga kodera
[edytuj | edytuj kod]W przypadku kodera, można skorzystać ze zwykłej metody osadzania słów, dzięki czemu uzyskujemy tablicowanie zdania, przez konwersję zdania do ciągu wektorów:
Co można zapisać prościej:
Ten proces można wykonać kilkukrotnie aby uzyskać wielowarstwowy mechanizm uwagi, co jest związane z możliwością łączeń każdego wektora z każdym.
Samouwaga dekodera
[edytuj | edytuj kod]
Przez to, że w poprzednim przypadku każdy wektor łączy się z każdym innym wektorem, nie można metody opisanej powyżej użyć w dekoderze, ponieważ to by oznaczało czytanie z przyszłości. Aby zaadresować ten problem, macierz wag maskuje się macierzą górnotrójkątną (ang. causal masking):
Przypisy
[edytuj | edytuj kod]- ↑ Zhaoyang Niu , Guoqiang Zhong , Hui Yu , A review on the attention mechanism of deep learning, „Neurocomputing”, 452, 2021, s. 48–62, DOI: 10.1016/j.neucom.2021.03.091 [dostęp 2024-05-26] (ang.).
- ↑ a b Ashish Vaswani i inni, Attention Is All You Need, [w:] arXiv, 2017, DOI: 10.48550/ARXIV.1706.03762, arXiv:1706.03762 .
- ↑ Jürgen Schmidhuber , Learning to Control Fast-Weight Memories: An Alternative to Dynamic Recurrent Networks, „Neural Computation”, 4 (1), 1992, s. 131–139, DOI: 10.1162/neco.1992.4.1.131, ISSN 0899-7667 [dostęp 2025-04-17] .
- ↑ Geoffrey E. Hinton , David C. Plaut , Using Fast Weights to Deblur Old Memories, „Proceedings of the Annual Meeting of the Cognitive Science Society”, 9 (0), 1987 [dostęp 2025-04-17] (ang.).
- ↑ a b Dzmitry Bahdanau , Kyunghyun Cho , Yoshua Bengio , Neural Machine Translation by Jointly Learning to Align and Translate, arXiv, 19 maja 2016, DOI: 10.48550/arXiv.1409.0473 [dostęp 2025-04-17] .
- ↑ Oriol Vinyals i inni, Show and Tell: A Neural Image Caption Generator [online], 2015, s. 3156–3164 [dostęp 2025-04-17] .
- ↑ Kelvin Xu i inni, Show, Attend and Tell: Neural Image Caption Generation with Visual Attention, PMLR, 1 czerwca 2015, s. 2048–2057 [dostęp 2025-04-17] (ang.).
Linki zewnętrzne
[edytuj | edytuj kod]- Attention and Augmented Recurrent Neural Networks, Distill (2016)
- Speech and Language Processing, (2022)
- Attention and Memory in Deep Learning, DeepMind, UCL (2020)