Mechanizm uwagi (ang. attention mechanism) to technika, dzięki której model uczenia maszynowego potrafi zdecydować, które fragmenty danych wejściowych są w danym momencie ważne, i przypisać im większą wagę przy generowaniu wyniku. Zamiast traktować całe wejście jednakowo, model dla każdego elementu liczy zestaw wag (tzw. attention scores) i tworzy ważoną sumę reprezentacji pozostałych elementów. To właśnie ten mechanizm jest sercem architektury transformer, opisanej w pracy „Attention Is All You Need” z 2017 roku, na której opierają się dzisiejsze modele językowe jak GPT czy BERT.
Jak to działa
W najpopularniejszym wariancie, czyli self-attention, każdy token zamienia się na trzy wektory: query, key i value (zapytanie, klucz, wartość). Model porównuje query jednego tokena z key wszystkich pozostałych — im bardziej pasują, tym wyższa waga. Po przeskalowaniu i przepuszczeniu przez softmax dostajesz rozkład wag, którym mnożysz wektory value. Efekt: reprezentacja słowa „bank” zmienia się w zależności od tego, czy w zdaniu obok jest „rzeka”, czy „kredyt”.
Dzięki temu model łapie zależności między odległymi fragmentami tekstu bez krok-po-kroku przetwarzania jak w starszych sieciach RNN. Praktyczny bonus: obliczenia da się zrównoleglić, co bardzo przyspiesza trening. W praktyce używa się multi-head attention — kilku „głów” liczących uwagę równolegle, gdzie każda może wyłapywać inny typ relacji (gramatykę, kontekst znaczeniowy itd.).
Przykład z praktyki
Jeśli korzystasz z biblioteki Hugging Face transformers, możesz podejrzeć wagi uwagi, ustawiając output_attentions=True przy ładowaniu modelu, np. BertModel.from_pretrained("bert-base-uncased", output_attentions=True). W zwróconym obiekcie znajdziesz tensor attentions o kształcie [warstwy, głowy, tokeny, tokeny]. Wrzucając to do narzędzia BertViz, zobaczysz mapę cieplną pokazującą, na które słowa model „patrzył” przy interpretacji danego tokena. Świetne do debugowania, gdy model dziwnie klasyfikuje zdania.
Częste błędy i mity
Po pierwsze, wagi uwagi to nie to samo co „wyjaśnienie decyzji modelu” — wysoka uwaga nie zawsze oznacza, że dany token faktycznie wpłynął na wynik. To temat sporny w badaniach, więc nie traktuj heatmap jako dowodu w sądzie. Po drugie, klasyczna self-attention ma złożoność kwadratową względem długości sekwencji (O(n²)), więc bardzo długie konteksty potrafią zjeść pamięć GPU — stąd warianty typu FlashAttention czy sparse attention. Po trzecie: „attention” w transformerze to coś innego niż ludzka uwaga, mimo zbieżnej nazwy. To czysta matematyka, nie intuicja.
Pojęcia powiązane: transformer, self-attention, multi-head attention, query/key/value, softmax, embedding, model językowy (LLM), positional encoding.