Sobes.tech
Middle — Senior
133

Расскажите про multi-head attention в деталях: что такое Q/K/V, как считаются веса внимания, зачем несколько голов.

Answer from AI

sobes.tech AI

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

  • Q (Query), K (Key), V (Value) — это три матрицы, получаемые из входных данных с помощью обучаемых линейных преобразований. Каждая позиция в последовательности преобразуется в три вектора:

    • Query — запрос, по которому ищется релевантная информация.
    • Key — ключ, с которым сравнивается запрос.
    • Value — значение, которое возвращается в ответ на запрос.
  • Вычисление весов внимания:

    1. Считается скалярное произведение Query и Key для каждой пары позиций.
    2. Результат масштабируется (обычно делится на корень из размерности ключей) для стабилизации градиентов.
    3. Применяется softmax, чтобы получить вероятностное распределение весов.
    4. Весы умножаются на соответствующие Value, и результаты суммируются — это и есть выход внимания.
  • Зачем несколько голов (multi-head)? Несколько голов позволяют модели смотреть на информацию с разных «углов зрения», то есть каждая голова учится выделять разные зависимости и паттерны в данных. Это повышает выразительность и качество модели.

Пример упрощённо:

# Для каждой головы:
Q_i = X * W_Q_i
K_i = X * W_K_i
V_i = X * W_V_i

attention_weights = softmax((Q_i @ K_i.T) / sqrt(d_k))
output_i = attention_weights @ V_i

# Объединяем выходы всех голов
output = concat(output_1, ..., output_h) * W_O

Где W_Q_i, W_K_i, W_V_i, W_O — обучаемые матрицы, d_k — размерность ключей, h — число голов.