Дополнительные детальные вопросы: RoPE
Почему позиционное кодирование с поворотом (RoPE) устроено именно как матрица поворота, стоит за этим элегантный математический вывод и продуманные инженерные решения.
Главную идею можно выразить одной фразой: введя операцию с «абсолютной» позицией, в скалярном произведении внимания естественным образом проявляется зависимость от «относительной» позиции.
Ниже логика вывода и инженерные соображения.
1. Основной мотив: как точно выразить относительную позицию
В механизме самовнимания Transformer ключевой вычисляется скалярным произведением Query и Key: .
Если не добавлять никакого позиционного кодирования, это скалярное произведение зависит только от семантики токенов и «не видит» позиции.
Авторы RoPE (Су Цзяньлинь и другие) предложили идею: можно ли найти функцию позиционного кодирования так, чтобы скалярное произведение Query с позицией и Key с позицией зависело только от исходных признаков этих двух токенов и их относительной позиции ?
На языке математики это значит, что мы ищем функцию , удовлетворяющую равенству:
2. Математический вывод: сведение к комплексной плоскости
Чтобы решить это уравнение, авторы использовали двумерную комплексную плоскость.
Если рассматривать двумерный вектор признаков как комплексное число , то приведённое выше скалярное произведение эквивалентно умножению комплексных чисел (со взятием действительной части):
(Примечание: — комплексно сопряжённое к .)
Исходя из цели, определим функцию как умножение на комплексной плоскости на поворотный множитель , зависящий от позиции :
Тогда их скалярное произведение в комплексной области упрощается:
Вывод: результат скалярного произведения содержит и только содержит информацию об относительной позиции .
Если вернуться от комплексных чисел к привычному матричному представлению в действительных числах, умножение на эквивалентно умножению на двумерную матрицу поворота:
Это и есть основа формулы из иллюстрации.
3. Обобщение на большие размерности и инженерные соображения
В реальных больших моделях размерность признаков намного больше 2. Инженерные решения RoPE устроены так:
- Ортогональные подпространства из пар координат: RoPE делит -мерное пространство признаков на двумерных подпространств и применяет описанную матрицу поворота в каждой плоскости.
- Экспоненциальное затухание по частоте (штраф за расстояние): для разных двумерных плоскостей задаются разные базовые частоты поворота . Обычно берут . Это значит:
- ранние размерности признаков (низкочастотная часть) поворачиваются очень быстро и чувствительны к локальным изменениям позиции;
- поздние размерности (высокочастотная часть) поворачиваются очень медленно и захватывают глобальные дальние зависимости.
- Затухание с расстоянием: сочетание разных частот приводит к тому, что при росте относительного расстояния математическое ожидание скалярного произведения снижается. Так модель получает естественное «чувство расстояния»: чем дальше токены, тем меньше склонны веса внимания.
- Эффективность вычислений: хотя в формуле записано матричное умножение, в реализациях на PyTorch это на самом деле сильно разреженная блочно-диагональная матрица. Не нужно выполнять плотное умножение матриц со сложностью : достаточно поменять элементы местами с изменением знака и перемножить (например,
[-q1, q0]), и сложность падает до .
RoPE объединяет абсолютную и относительную позицию, поэтому LLaMA, Qwen и другие современные крупные модели почти поголовно используют именно RoPE.
В академических и промышленных исследованиях сейчас особенно популярно направление экстраполяции по длине (Length Extrapolation): как обучить модель на коротких текстах, а применять на длинных. Примеры таких методов — масштабирование углов поворота на основе NTK-Aware Scaling или YaRN.