Alterna · учебный материал
14.1 Зачем словам обмениваться данными
Чтобы обработать одно слово, полезна информация о соседних. Сначала сравниваем запрос и ключи, потом смешиваем передаваемые значения.
Что в этом материале
- Смешивание зависит от текущего входа
Содержание и основные понятия
Мы умеем преобразовывать векторы и превращать оценки в доли.
Чтобы обработать одно слово, полезна информация о соседних. Сначала сравниваем запрос и ключи, потом смешиваем передаваемые значения.
Запрос сравнивается с ключами; полученные доли взвешивают передаваемые значения. Будущее недоступно при предсказании продолжения. Несколько голов проводят независимые сравнения.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Смешивание зависит от текущего входа
Покоординатный FFN обрабатывает каждую позицию отдельно. Чтобы связать представления разных токенов, нужен механизм обмена. Attention формирует output как взвешенную сумму values, а coefficients зависят от query и keys. Никакого буквального «вопроса словами» у query-вектора нет. L06 §3.2.
o
i
=
∑
j
a
i
j
v
j
,
a
i
j
≥
0
,
∑
j
a
i
j
=
1.
o_i=\sum_j a_{ij}v_j,\qquad a_{ij}\ge0,\quad\sum_j a_{ij}=1.
o
i
=
j
∑
a
ij
v
j
,
a
ij
≥
0
,
j
∑
a
ij
=
1.
Для values[1,0] и[0,1], weights[.25,.75] получаем[.25,.75]. Это смесь, не обязательно копия одного value. Если все scores равны, нормировка даёт равные coefficients по доступным позициям.
Эксперимент.
Измените одну строку X и проследите, какие outputs изменились. В causal-режиме поздняя позиция не должна влиять на более ранние. В немаскированном режиме такой путь разрешён.
Легко ошибиться.
Coefficients attention не являются parameters W. Они вычисляются заново по входу. Яркая heatmap сама по себе не доказывает человеческую интерпретацию «важности» и не является полной причинной картой решения большой модели.
values=[[1,0],[0,1]]; weights=[.25,.75]
out=[sum(a*v[j] for a,v in zip(weights,values)) for j in range(2)]
assert out==[.25,.75]
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Weights attention зависят от входа и нормированы по keys.
Три роли одного представления. Как этот вопрос продолжает полученный результат?
Python-примеры главы 14
Академическая база →