alterna ai
ALTERNA AI / ГЛАВА 14 · 01

14.1 Зачем словам обмениваться данными

Мы умеем преобразовывать векторы и превращать оценки в доли.

Чтобы обработать одно слово, полезна информация о соседних. Сначала сравниваем запрос и ключи, потом смешиваем передаваемые значения.

Запрос сравнивается с ключами; полученные доли взвешивают передаваемые значения. Будущее недоступно при предсказании продолжения. Несколько голов проводят независимые сравнения.

Смешивание зависит от текущего входа

Покоординатный FFN обрабатывает каждую позицию отдельно. Чтобы связать представления разных токенов, нужен механизм обмена. Attention формирует output как взвешенную сумму values, а coefficients зависят от query и keys. Никакого буквального «вопроса словами» у query-вектора нет. L06 §3.2.

oi=∑jaijvj,aij≥0,∑jaij=1.o_i=\sum_j a_{ij}v_j,\qquad a_{ij}\ge0,\quad\sum_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 Академическая база →