Robocikowo>ROBOCIKOWO
Architektura

Cross-Attention

2017AktywnyOpublikowano: 29 września 2026Aktualizacja: 29 września 2026Opublikowany
Wariant mechanizmu uwagi, w którym Q pochodzi z jednej sekwencji, a K i V z drugiej, łącząc dwie różne reprezentacje lub modalności.
Kluczowa innowacja
Uwaga, w której zapytania (Q) pochodzą z jednej sekwencji, a klucze i wartości (K, V) z drugiej — dzięki czemu jeden strumień informacji może warunkować się na drugim (np. dekoder na enkoderze, obraz na tekście).
Kategoria
Architektura
Poziom abstrakcji
Building block
Poziom operacji
Element architekturyWarstwa
Zastosowania
Uwaga enkoder-dekoder w Transformerze (tłumaczenie maszynowe, streszczanie)Warunkowanie tekstem w Latent Diffusion / Stable DiffusionModele multimodalne (fuzja tekstu i obrazu, np. Flamingo)Perceiver / Perceiver IO (rzutowanie na tablicę latentną)Modele Vision-Language-Action (fuzja obserwacji wizualnej z językiem)

Jak działa

1. Sekwencja „pytająca" (np. dekoder) jest rzutowana liniowo na macierz zapytań Q. 2. Sekwencja „źródłowa" (np. wyjście enkodera) jest rzutowana na macierze kluczy K i wartości V. 3. Wyliczane są iloczyny skalarne Q·Kᵀ, skalowane przez 1/√d_k i przepuszczane przez softmax, dając wagi uwagi wskazujące, jak bardzo każda pozycja pytająca odwołuje się do każdej pozycji źródłowej. 4. Wagi te mnożą wartości V, dając kontekstowe reprezentacje. 5. W praktyce operacja jest wielogłowicowa (multi-head): Q, K, V dzieli się na h głów liczonych równolegle, a wyniki łączy i rzutuje przez macierz wyjściową. Kluczowe: Q ma inne źródło niż K i V, sekwencje mogą mieć różne długości, a maska przyczynowa nie jest stosowana (w przeciwieństwie do maskowanej self-attention dekodera). Podczas dekodowania autoregresyjnego K i V z enkodera liczone są raz i cache'owane dla wszystkich kroków.

Rozwiązany problem

Jak pozwolić jednej sekwencji (lub modalności) korzystać z informacji zawartej w innej, potencjalnie o innej długości? Cross-attention rozwiązuje problem warunkowego łączenia dwóch reprezentacji — np. dopasowania tłumaczenia do zdania źródłowego, obrazu do opisu tekstowego czy akcji robota do obserwacji wizualnej — bez konieczności kompresji sekwencji źródłowej do pojedynczego wektora, co było wąskim gardłem wcześniejszych architektur enkoder-dekoder.

Komponenty

Query projection (z sekwencji pytającej)Rzutuje sekwencję docelową/dekodera na przestrzeń zapytań Q.

Liniowa projekcja W_Q stosowana do sekwencji pytającej. To ona odróżnia cross-attention od self-attention — Q pochodzi z innego strumienia niż K i V.

INSekwencja pytająca (np. stany dekodera).
OUTZapytania po podziale na głowice.
Key & Value projections (z sekwencji źródłowej)Rzutują sekwencję źródłową/enkodera na klucze K i wartości V.

Projekcje W_K i W_V stosowane do sekwencji źródłowej. W dekodowaniu autoregresyjnym liczone raz i cache'owane, bo źródło się nie zmienia.

INSekwencja źródłowa (np. wyjście enkodera).
OUTKlucze i wartości po podziale na głowice.
Scaled dot-product attention + softmaxWylicza wagi uwagi między pozycjami pytającymi a źródłowymi i agreguje wartości.

softmax(Q·Kᵀ / √d_k)·V. Bez maski przyczynowej; opcjonalna maska dopełnienia (padding) po stronie źródła.

OUTKontekstowe reprezentacje per głowica.

Oficjalna

Multi-head concat + output projectionŁączy wyniki głowic i rzutuje z powrotem do d_model.

Konkatenacja h głowic i liniowa projekcja W_O.

OUTWyjście warstwy cross-attention.

Implementacja

Pułapki implementacyjne
Pomylenie źródła Q z K/VWysoka

Q musi pochodzić z sekwencji pytającej (dekoder), a K i V z sekwencji źródłowej (enkoder). Zamiana źródeł niszczy warunkowanie.

Rozwiązanie:Jawnie przekazuj osobne tensory query oraz key/value do warstwy uwagi i testuj kształty.
Błędne maskowanieŚrednia

Cross-attention nie używa maski przyczynowej — potrzebna jest tylko maska dopełnienia po stronie źródła. Dodanie maski causal błędnie ogranicza dostęp do wejścia.

Rozwiązanie:Stosuj wyłącznie key_padding_mask dla źródła; nie przekazuj maski przyczynowej.
Brak cache'owania K/V enkoderaŚrednia

W dekodowaniu autoregresyjnym K i V ze źródła nie zmieniają się; przeliczanie ich w każdym kroku marnuje obliczenia.

Rozwiązanie:Wylicz K i V enkodera raz i przechowuj w cache uwagi krzyżowej na czas całego dekodowania.

Ewolucja

Oryginalny paper · 2017 · NeurIPS 2017 · Ashish Vaswani
Attention Is All You Need
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin
2014
Uwaga w RNN enkoder-dekoder (prekursor cross-attention)
Punkt przełomowy

Bahdanau i in. wprowadzają uwagę między dekoderem a stanami enkodera w tłumaczeniu maszynowym — dekoder odwołuje się do sekwencji źródłowej.

2017
Transformer formalizuje encoder-decoder (cross) attention
Punkt przełomowy

Vaswani i in. definiują warstwę encoder-decoder attention ze skalowaną uwagą iloczynu skalarnego i wieloma głowicami; Q z dekodera, K i V z enkodera.

2021
Perceiver — cross-attention do tablicy latentnej

Perceiver używa cross-attention, by rzutować bardzo duże wejścia na zwartą tablicę latentną, oddzielając koszt od długości wejścia.

2021
Latent Diffusion — warunkowanie tekstem przez cross-attention
Punkt przełomowy

Rombach i in. wprowadzają cross-attention w UNet, by warunkować generowanie obrazu na osadzeniach tekstu — podstawa Stable Diffusion.

2022
Flamingo — bramkowana cross-attention w modelu multimodalnym

Flamingo wstrzykuje reprezentacje wizualne do zamrożonego modelu językowego przez bramkowane warstwy cross-attention.

Hiperparametry (konfigurowalne osie)

Liczba głowic (h)Wysoka

Liczba równoległych głowic uwagi.

8Transformer base (Vaswani i in., 2017).
Wymiar klucza/zapytania (d_k)Średnia

Wymiar na głowicę, używany w skalowaniu 1/√d_k.

64d_model 512 / 8 głowic.
Wymiar modelu (d_model)Średnia

Wymiar osadzeń wejściowych i wyjściowych warstwy.

512Transformer base.

Złożoność obliczeniowa

Złożoność czasowa: O(n_q · n_kv · d). Złożoność przestrzenna: O(n_q · n_kv).

Wąskie gardło obliczeniowe

Iloczyn macierzowy Q·Kᵀ i softmax

Główny koszt to iloczyny skalarne między zapytaniami a kluczami oraz normalizacja softmax; przy długich sekwencjach źródłowych rośnie liniowo z n_kv.

Paradygmat wykonania

Tryb główny
Gęsty

Uwaga gęsta: każda pozycja pytająca odwołuje się do wszystkich pozycji źródłowych (poza maskowanym dopełnieniem).

Wzorzec aktywacji
Wszystkie ścieżki aktywne
Mechanizm routingu

Równoległość

Poziom równoległości
W pełni równoległy

W treningu wszystkie pozycje pytające liczone równolegle. Przy dekodowaniu autoregresyjnym pozycje pytające powstają sekwencyjnie, ale K i V ze źródła liczone są raz i cache'owane.

Zakres
TreningPomiędzy tokenami

Wymagania sprzętowe

Podstawowe

Operacja zdominowana przez gęste iloczyny macierzowe (Q·Kᵀ, ·V), idealna dla rdzeni tensorowych.

Dobry fit

Systoliczne jednostki mnożenia macierzy dobrze obsługują wsadowe iloczyny uwagi.

Możliwe

Działa na CPU i innych akceleratorach, lecz z gorszą przepustowością przy długich sekwencjach źródłowych.