Alterna · учебный материал

15.3 Позиция через поворот координат

Можно вводить порядок, вращая пары координат запроса и ключа. Длина сохраняется, а их сравнение зависит от относительного положения.

Что в этом материале

Содержание и основные понятия

На предыдущей странице: почему порядок слов имеет значение.
Можно вводить порядок, вращая пары координат запроса и ключа. Длина сохраняется, а их сравнение зависит от относительного положения.
Вектор получает позиционную информацию, обменивается сведениями и отдельно перерабатывает своё состояние. Остаточные суммы сохраняют прежний путь. Последняя таблица выдаёт оценки словаря.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
От абсолютных углов к относительной разности
RoPE применяет вращения к парам координат Q и K. Для пары[a,b] в позицииp и частотеω:
R
(
p
ω
)
(
a
b
)
=
(
a
cos
⁡
(
p
ω
)
−
b
sin
⁡
(
p
ω
)
a
sin
⁡
(
p
ω
)
+
b
cos
⁡
(
p
ω
)
)
.
R(p\omega)\begin{pmatrix}a\\b\end{pmatrix}=
\begin{pmatrix}a\cos(p\omega)-b\sin(p\omega)\\a\sin(p\omega)+b\cos(p\omega)\end{pmatrix}.
R
(
p
ω
)
(
a
b
​
)
=
(
a
cos
(
p
ω
)
−
b
sin
(
p
ω
)
a
sin
(
p
ω
)
+
b
cos
(
p
ω
)
​
)
.
Вращение сохраняет L2-норму. Поскольку R(m)ᵀR(n)=R(n−m), dot вращённых query/key зависит от разности позиций при фиксированных исходных векторах. L07 §§3.2–3.4.
Для q=k=[1,0], ω=1, позиции0иπ/2 как математические углы дают ортогональные направления и dot0. В реальном позиционном коде p целое, а уголpω; это не указание использовать дробный token index.
Для каждой head width d_h пары получают частоты10000^(−2j/d_h). В этой реализации d_h должна быть чётной. V не вращается; RoPE не прибавляет position-вектор к embedding. Переключение между sinusoidal и RoPE меняет способ введения положения, а не включает оба одновременно.
Эксперимент.
Сдвиньте позиции query/key на одинаковое число и сравните dot при неизменных исходных векторах. Не делайте вывод о монотонном уменьшении score с расстоянием: вращения дают колебательные компоненты. Поддержка больших position indices не доказывает качество длинного контекста.
from math import sin,cos,pi
a,b=3,4; angle=pi/2
rot=[a*cos(angle)-b*sin(angle),a*sin(angle)+b*cos(angle)]
assert abs(rot[0]+4)<1e-12 and abs(rot[1]-3)<1e-12
assert abs(sum(v*v for v in rot)-25)<1e-12
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Относительный dot выводится из R_mᵀR_n=R_(n−m).
Переработка каждого токена отдельно. Как этот вопрос продолжает полученный результат?
Python-примеры главы 15
Академическая база →

Структурная карта учебников