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

14.4 Нельзя читать ещё не известный ответ

На предыдущей странице: подготовим масштаб оценок.

При обучении продолжению будущие слова уже находятся в примере, но использовать их как вход для раннего прогноза нельзя. Причинная маска запрещает такие связи.

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

Запрет применяется до нормировки

Causal mask разрешает позиции j≤i, включая текущую. Запрещённым scores присваивается−∞, затем отдельно нормируется каждая query-строка:

Aij=exp⁡(Sij+Mij)∑rexp⁡(Sir+Mir),Mij={0j≤i−∞j>i.A_{ij}=\frac{\exp(S_{ij}+M_{ij})}{\sum_r\exp(S_{ir}+M_{ir})},\quad M_{ij}=\begin{cases}0&j\le i\\-\infty&j>i.\end{cases}

Для устойчивости перед exp вычитается максимум разрешённых scores. В запрещённых ячейках coefficient становится0. Если просто поставить score0, его экспонента будет1, и запрет не сработает.

В default первая query имеет только один доступный key, поэтому строка A=[1,0,0]. Вторая имеет scores[0,1/√2,−∞]; её coefficients [α,1−α,0], где α=1/(1+exp(1/√2)).

Эксперимент. Измените только последнюю строку X. Первые две output rows при causal mask должны остаться прежними. Затем отключите mask и повторите: влияние будущего может появиться. Это диагностическая абляция, не допустимый режим авторегрессионного decoder на этапе обучения next-token prediction.

Полностью запрещённая строка не имеет нормированного распределения. Стандартная causal mask с разрешённой диагональю её не создаёт; если в дальнейшем добавится padding mask, этот случай нужно обработать явно.

from math import exp,sqrt
a=1/(1+exp(1/sqrt(2)))
weights=[a,1-a,0]
assert abs(sum(weights)-1)<1e-12

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

exp(0)=1 не исключает вклад; exp(−∞)=0.

Как доли превращаются в смесь. Как этот вопрос продолжает полученный результат?

Python-примеры главы 14 Академическая база →