Back to archive
#ai#llm#glossary#aigen

Cross-attention

Przy tłumaczeniu model ma dwa różne teksty: oryginał i dopiero tworzoną odpowiedź. Gdy dopisuje kolejne słowo tłumaczenia, potrzebuje informacji z oryginału. Samo mieszanie już napisanej odpowiedzi nie dostarczy brakującej treści źródłowej.

Cross-attention pozwala pozycjom jednej sekwencji odczytywać informacje z drugiej. Query — lista liczb określająca potrzebę aktualnej pozycji — pochodzi z tworzonej odpowiedzi. Key służy do dopasowania fragmentów źródła, a value zawiera ich informacje do przekazania.

Każda pozycja odpowiedzi otrzymuje własną mieszankę informacji z oryginału. Dwie pozycje odpowiedzi i trzy fragmenty źródła dają dwa wyniki, po jednym dla odczytującej pozycji, nie trzy.

W Self-attention wszystkie te opisy pochodzą z tej samej sekwencji. „Cross” wskazuje różne źródła, a nie dwa koniecznie niezależne modele. Wagi nie muszą być dosłownym, poprawnym dopasowaniem słowo do słowa między językami.

Mechanizm i szczegóły

W oryginalnym Transformer query pochodziły ze strony decodera, natomiast key i value z wyjścia encodera. Paper nazywa tę część „encoder-decoder attention”. Attention Is All You Need, §3.2.3.

Wynik powstaje dla każdego query

Załóżmy, że decoder dostarcza dwa wektory query, a encoder trzy pary key–value. Każde query ma wtedy trzy możliwe połączenia ze źródłem. Powstają dwa wektory wyniku, po jednym dla każdej pozycji query, a nie trzy wektory odpowiadające długości wejścia encodera.

W tłumaczeniu można to rozumieć tak: reprezentacja tworzonej części odpowiedzi określa, jak połączyć informacje z reprezentacji zdania źródłowego. To przykład przepływu informacji, nie gwarancja, że pojedyncza waga attention jest poprawnym dopasowaniem słów między językami.

Implementacja CrossAttention w TensorFlow przekazuje osobno sekwencję query i kontekst key–value. Sama operacja nie przenosi informacji bezpośrednio między pozycjami query; każda odczytuje kontekst.

Cross-attention może korzystać z Multi-Head Attention. „Cross” mówi o źródłach reprezentacji, a „multi-head” o wielu zestawach projekcji. Dwie sekwencje nie muszą pochodzić z dwóch niezależnie wytrenowanych modeli: encoder i decoder mogą być częściami jednego modelu.