Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Дополнительные детальные вопросы: 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.