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.