Cross-attention
Cross-attention pobiera query z jednej sekwencji reprezentacji, a key i value z drugiej. Dla każdego query oblicza wynik przez połączenie informacji z dostępnych value. Od Self-attention różni się pochodzeniem danych: tam wszystkie trzy zestawy wywodzą się z tej samej sekwencji.
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.
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.