Middle — Senior
132
Расскажите про multi-head attention в деталях: что такое Q/K/V, как считаются веса внимания, зачем несколько голов.
Answer from AI
sobes.tech AI
Multi-head attention — ключевой механизм в трансформерах, который позволяет модели одновременно фокусироваться на разных частях входной последовательности.
-
Q (Query), K (Key), V (Value) — это три матрицы, получаемые из входных данных с помощью обучаемых линейных преобразований. Каждая позиция в последовательности преобразуется в три вектора:
- Query — запрос, по которому ищется релевантная информация.
- Key — ключ, с которым сравнивается запрос.
- Value — значение, которое возвращается в ответ на запрос.
-
Вычисление весов внимания:
- Считается скалярное произведение Query и Key для каждой пары позиций.
- Результат масштабируется (обычно делится на корень из размерности ключей) для стабилизации градиентов.
- Применяется softmax, чтобы получить вероятностное распределение весов.
- Весы умножаются на соответствующие 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 — число голов.