Self-attention против cross-attention

Мы разобрали self-attention. Есть и второй режим — cross-attention. Этот короткий урок различает их и показывает, где применяется каждый.

Cross-attention — внимание, где запросы берутся из одной последовательности, а ключи и значения — из другой, что связывает два разных потока информации.

Self-attention: смотрим сами на себя

В self-attention (мы его уже считали) query, key и value происходят из одной и той же последовательности. Токены предложения смотрят друг на друга, чтобы уточнить свой смысл по контексту. Это основной механизм внутри GPT-подобных моделей: каждый токен обогащается информацией от остальных токенов того же текста.

Cross-attention: смотрим на другой источник

В cross-attention запросы берутся из одной последовательности, а ключи и значения — из другой. Классический пример — машинный перевод в архитектуре энкодер-декодер: декодер, порождая перевод, через cross-attention «заглядывает» в закодированное исходное предложение. Query — это текущее состояние перевода («что я генерирую сейчас»), а key/value — представление оригинала («что было в исходнике»).

Self-attentionCross-attention
Откуда Qиз последовательности Xиз последовательности X
Откуда K, Vиз той же Xиз другой последовательности Y
Зачемпонять токен по контекстусвязать два потока (например, перевод и оригинал)

Где какой режим встречается

  • Декодер-онли (GPT, Claude): только self-attention. Модель работает с одной последовательностью — запрос и ответ идут единым потоком токенов, отдельного «источника» нет.
  • Энкодер-декодер (классический перевод, T5): self-attention внутри энкодера, self-attention внутри декодера и cross-attention из декодера в энкодер.
  • Мультимодальные модели: cross-attention часто связывает текст с другим типом данных — например, токены ответа «смотрят» на представление картинки.

Почему современные чат-LLM — декодер-онли

Большинство популярных чат-моделей построены по схеме декодер-онли: всё (системный промпт, вопрос, ответ) — одна последовательность токенов, и работает только self-attention с причинной маской (о ней — в следующем разделе). Это проще, отлично масштабируется и идеально ложится на задачу «предсказать следующий токен». Cross-attention же незаменим там, где есть два явно разных входа — оригинал и перевод, картинка и подпись.

Итог

  • Self-attention: Q, K, V из одной последовательности — токены уточняют смысл по контексту.
  • Cross-attention: Q из одной последовательности, K и V — из другой; связывает два потока.
  • GPT-подобные модели — декодер-онли, только self-attention.
  • Cross-attention живёт в энкодер-декодерах (перевод) и мультимодальных моделях.
Проверьте себя
1. Чем cross-attention отличается от self-attention?
AОн не использует softmax
BQuery берётся из одной последовательности, а key и value — из другой
CОн работает без матриц
DОн не даёт весов внимания
2. Какой механизм внимания используют GPT-подобные модели?
AТолько cross-attention
BТолько self-attention (они декодер-онли)
CНи тот, ни другой
DВнимание им не нужно
3. Где cross-attention особенно уместен?
AВ энкодер-декодерах для перевода и в мультимодальных моделях
BТолько в токенизаторах
CНигде, он устарел
DВ подсчёте параметров
Поддержать проект