Alterna · учебный материал
14.6 Несколько отдельных способов собрать информацию
Каждая голова работает со своей частью координат и своими долями. Результаты соединяются, а не усредняются автоматически.
Что в этом материале
- Несколько подпространств, затем объединение
Содержание и основные понятия
На предыдущей странице: как доли превращаются в смесь.
Каждая голова работает со своей частью координат и своими долями. Результаты соединяются, а не усредняются автоматически.
Запрос сравнивается с ключами; полученные доли взвешивают передаваемые значения. Будущее недоступно при предсказании продолжения. Несколько голов проводят независимые сравнения.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Несколько подпространств, затем объединение
В multi-head варианте проекции делятся на hгрупп координат. При d_model=d и d_head=d/h каждая head независимо вычисляет scores, mask, softmax и смешивание. Затем outputs
конкатенируются
, а не усредняются:
MHA
(
X
)
=
Concat
(
O
1
,
…
,
O
h
)
W
O
.
\operatorname{MHA}(X)=\operatorname{Concat}(O_1,\ldots,O_h)W_O.
MHA
(
X
)
=
Concat
(
O
1
,
…
,
O
h
)
W
O
.
Если d=4,h=2, каждая head имеет width2. Для n=3 каждая attention matrix [3,3], head output[3,2], concat[3,4], W_O[4,4]. При фиксированном d сами dense projection matrices сохраняют число параметров; меняется группировка dot products и softmax.
Эксперимент.
Выберите preset3×4 и две головы. Сравните их коэффициенты и outputs; затем поставьте одну head при тех же проекциях. Это не две копии одинаковой функции: разбиение координат меняет расчёт similarity.
Если d не делится на h, конфигурация этой реализации отклоняется. В полном framework возможны другие размерности Q/K/V, но их нужно задавать явно. Head с совпадающими проекциями может дублировать другую; число heads само по себе не гарантирует более богатое или качественное представление.
Под капотом.
Лаборатория хранит все h·n² coefficients ради наблюдаемости. Это не обещание оптимального расхода памяти настоящего inference-engine. Далее добавим
нормирование, позиции и FFN
и получим целый decoder block.
Concat восстанавливает общую ширину, W_O смешивает координаты.
Одного внимания недостаточно. Как соединить его с уже знакомой сетью?
Python-примеры главы 14
Академическая база →