Alterna · учебный материал
14.2 Три роли одного представления
Запрос — с чем сравнивать, ключ — что сравнивается, значение — что передавать. Это аналогия ролей; все три объекта являются числовыми векторами.
Что в этом материале
- Три роли одного представления
Содержание и основные понятия
На предыдущей странице: зачем словам обмениваться данными.
Запрос — с чем сравнивать, ключ — что сравнивается, значение — что передавать. Это аналогия ролей; все три объекта являются числовыми векторами.
Запрос сравнивается с ключами; полученные доли взвешивают передаваемые значения. Будущее недоступно при предсказании продолжения. Несколько голов проводят независимые сравнения.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Три роли одного представления
Для X[n,d_model] матрицы W_Q,W_K,W_V переводят каждую строку в query, key и value. В простом случае ширины одинаковы:
Q
=
X
W
Q
,
K
=
X
W
K
,
V
=
X
W
V
,
W
∗
∈
R
d
×
d
.
Q=XW_Q,\quad K=XW_K,\quad V=XW_V,\qquad W_*\in\mathbb R^{d\times d}.
Q
=
X
W
Q
,
K
=
X
W
K
,
V
=
X
W
V
,
W
∗
∈
R
d
×
d
.
Если W_Q=I, то Q=X. Но identity — это матрица проекции; Q не обязана быть квадратной или единичной. В default X=[[1,0],[0,1],[1,1]] имеет shape[3,2], а каждая проекция[2,2].
При W_Q=[[2,0],[0,1]] первая query становится[2,0], третья[2,1]. W_K и W_V можно оставить прежними: тогда изменён способ сравнения query, но не сами values. В реальной модели эти матрицы обучаются совместно с loss; ползунок лаборатории лишь задаёт их вручную.
Эксперимент.
Сначала поменяйте W_Q, затем W_V. В первом случае меняются scores и coefficients; во втором при неизменных Q/K coefficients остаются прежними, меняется содержимое смеси. Shapes проверяются до вычисления: произвольный reshape не исправляет несогласованные матрицы.
X=[[1,0],[0,1],[1,1]]; W=[[2,0],[0,1]]
Q=[[sum(row[k]*W[k][j] for k in range(2)) for j in range(2)] for row in X]
assert Q==[[2,0],[0,1],[2,1]]
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Similarity определяется Q/K, содержимое смеси определяется V.
Подготовим масштаб оценок. Как этот вопрос продолжает полученный результат?
Python-примеры главы 14
Академическая база →