← Назад к вопросам

В чём разница между self-attention и cross-attention?

2.4 Senior🔥 161 комментариев
#NLP и обработка текста#Глубокое обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Self-Attention vs Cross-Attention в трансформерах

Основное различие

Self-attention — это механизм, где каждый токен внутри одной последовательности обращает внимание на все остальные токены этой же последовательности. Cross-attention — это взаимодействие между двумя разными последовательностями, где один набор токенов обращает внимание на другой набор.

Self-Attention

В self-attention все три компоненты (Query, Key, Value) происходят из одного источника — входной последовательности:

# Допустим, у нас есть входная последовательность X размера (batch, seq_len, dim)
Q = X @ W_q  # Queries
K = X @ W_k  # Keys
V = X @ W_v  # Values

# Вычисляем attention weights
attention_weights = softmax(Q @ K.T / sqrt(dim))

# Применяем к Values
output = attention_weights @ V

Примеры использования:

  • Кодировщик (encoder) в трансформере анализирует отношения внутри одного текста
  • BERT использует self-attention для понимания контекста каждого слова относительно соседних
  • Декодировщик на этапе обучения (masked self-attention для предотвращения утечки информации из будущих токенов)

Cross-Attention

В cross-attention Query происходит из одной последовательности, а Key и Value — из другой:

# Query из последовательности декодера
Q = decoder_output @ W_q

# Key и Value из последовательности кодера
K = encoder_output @ W_k
V = encoder_output @ W_v

# Вычисляем attention weights между ними
attention_weights = softmax(Q @ K.T / sqrt(dim))

# Результат показывает, на какие части кодера обращает внимание декодер
output = attention_weights @ V

Примеры использования:

  • Machine translation: декодер смотрит на исходный текст
  • Vision-Language модели: текстовый декодер обращает внимание на признаки изображения
  • Retrieval Augmented Generation (RAG): декодер смотрит на релевантные документы

Практические различия

АспектSelf-AttentionCross-Attention
Источник QСама последовательностьДругая последовательность (обычно декодер)
Источник K, VСама последовательностьДругая последовательность (обычно кодер)
ИспользованиеПонимание отношений внутри одного текстаСвязь между двумя разными модальностями/текстами
МаскированиеЧасто маскируют будущие позицииНе маскируют обычно
Матрица attentionКвадратная (seq_len × seq_len)Прямоугольная (decoder_seq × encoder_seq)

Визуализация

Само-внимание: каждое слово смотрит на все слова в своём предложении. Кросс-внимание: слово из перевода смотрит на слова из оригинала.

Вывод

Оба механизма критичны для современных трансформеров. Self-attention позволяет модели понимать отношения внутри одного контекста, а cross-attention enables bridging между разными источниками информации, что делает трансформеры универсальными архитектурами для множества задач.

В чём разница между self-attention и cross-attention? | PrepBro