18 / 37 · Трансформеры
Позиционные представления
Self-attention эквивариантен относительно перестановок, поэтому порядок нужно добавить ко входу. Заметка доказывает эквивариантность в одну строку, выводит синусоидальное кодирование и его свойство сдвига, считает небольшой пример и сравнивает фиксированные, выученные и ротационные позиции.
На этой странице 10
Заметка о трансформере добавила к эмбеддингам токенов позиционный сигнал перед первым блоком и отложила вопрос о том, что такое . Эта заметка начинает с того, почему сигнал необходим, — на это уходит одна строка алгебры, — затем строит кодирование из исходной статьи и альтернативы, которые его сменили.
Обозначения. — последовательность после эмбеддинга; — матрица перестановки ; — позиция; — позиционная матрица со строками .
Отправная точка: без позиций#
Применим self-attention к переставленному входу . Проекции действуют построчно, поэтому становятся . Тогда
где использованы и то, что построчный softmax коммутирует с одновременной перестановкой строк и столбцов. Выход для переставленного входа — переставленный выход: self-attention эквивариантен относительно перестановок (permutation-equivariant). Полносвязный слой, LayerNorm и остаточные связи действуют по позициям и тоже эквивариантны. Рассуждение верно для внимания без маски или с маской, которая переставляется вместе с токенами, как маска паддинга. Каузальная маска привязана к позициям, а не к токенам, поэтому произвольные перестановки она нарушает: в декодере первый токен смотрит только на себя, какое бы слово это ни было. У энкодера каузальной маски нет, поэтому энкодер без позиционного входа вычисляет для «dog bites man» и «man bites dog» одни и те же три вектора в разном порядке, и классификатор, который их агрегирует, не различит эти предложения. У рекуррентной сети такой проблемы не было, потому что она читала токены по порядку; цена параллелизма в том, что порядок приходится возвращать вручную.
Синусоидальное кодирование#
Vaswani et al. (2017) задают для позиции и индекса измерения
Каждая пара измерений — синус и косинус одного и того же угла с . Частоты образуют геометрическую прогрессию: у пары измерений 0 длина волны позиций, у последней пары, , — , что при росте приближается к : около 19 869 позиций при и 60 611 при . Младшие измерения быстро меняются с позицией и различают соседей; старшие меняются медленно и кодируют грубое положение.
Синусоидальное позиционное кодирование: четыре из шестнадцати измерений
Разобранный пример#
, то есть две пары частот: и .
| pos | ||||
|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 1 |
| 1 | 0.841 | 0.540 | 0.010 | 1.000 |
| 2 | 0.909 | −0.416 | 0.020 | 1.000 |
| 3 | 0.141 | −0.990 | 0.030 | 1.000 |
Строки различны и ограничены отрезком , а медленная пара меняется на за шаг, так что позиции 1 и 2 в медленных измерениях ближе друг к другу, чем позиции 1 и 30. Вектор прибавляется к эмбеддингу токена (умноженному на , чтобы их величины были сравнимы), и одна и та же таблица используется для каждой последовательности; прибавляется она один раз, перед первым блоком.
Свойства#
Относительный сдвиг — это поворот. Для фиксированного сдвига пара в позиции — линейная функция пары в позиции , не зависящая от :
что есть формула синуса и косинуса суммы. Авторы предполагали, что это позволяет линейной проекции во внимании выделять относительные позиции; скалярное произведение действительно зависит только от . Пользуется ли этим обученная модель — вопрос эмпирический.
Нет параметров и, в принципе, нет максимальной длины. Формулу можно вычислить в любой позиции. На практике модели обучаются на последовательностях до некоторой длины и дальше работают хуже, потому что шаблоны внимания, выученные на коротких последовательностях, не переносятся на сочетания позиционных векторов, которых при обучении не было.
Повтор внутри измерения — не коллизия. Любой отдельный синус повторяется, так что у позиций и совпадает измерение . У остальных измерений несоизмеримые периоды, поэтому две позиции в любом практическом диапазоне не совпадают по всему вектору.
Выученные абсолютные позиции#
Заменим формулу таблицей свободных параметров , nn.Embedding(max_len, d), обучаемой вместе со всем остальным. Так делают BERT с , GPT-2 с 1024 и модель перевода из следующей заметки с 32. Это проще, работает примерно так же, как синусоиды, на задачах обучающей длины (Vaswani et al., 2017, таблица 3, строка E), и имеет жёсткий максимум: у позиции дальше нет строки. Таблица стоит параметров, 0.4 млн у BERT-base.
Относительные и ротационные позиции#
Обе схемы выше кодируют абсолютную позицию и оставляют вниманию выводить относительные расстояния. Более поздние модели кодируют относительный сдвиг напрямую, потому что для большинства языковых отношений важно, насколько далеко друг от друга два токена, а не где в документе они стоят.
Относительные позиционные смещения (relative position biases) прибавляют к оценке запроса и ключа выученный скаляр (T5, где один скаляр общий для сдвигов, сгруппированных в корзины, расширяющиеся с расстоянием) или фиксированный штраф, пропорциональный (ALiBi, Press, Smith and Lewis, 2022), без всякого позиционного вектора на входе.
Ротационные позиционные эмбеддинги (rotary, RoPE; Su et al., 2024) переносят синусоиды со входа в оценки внимания. Каждый запрос и ключ головы ширины разбивается на двумерных пар, и пара в позиции поворачивается на угол , где . Поскольку скалярное произведение двух повёрнутых векторов зависит только от разности углов поворота, оценка зависит от содержимого двух токенов и от , а не от и по отдельности. Свойство сдвига синусоидальной схемы становится точным и встроенным в каждый слой внимания. Llama 3.2 1B — модель из заметок о GPT и обучении на инструкциях — использует RoPE. У поворота нет параметров, а основание можно увеличить, чтобы растянуть обученную модель на более длинный контекст.
| Схема | Где применяется | Параметры | Максимальная длина | Что кодирует |
|---|---|---|---|---|
| Синусоидальная | Прибавляется ко входу | 0 | В принципе нет | Абсолютную позицию со структурой сдвига |
| Выученная таблица | Прибавляется ко входу | Абсолютную позицию | ||
| Относительное смещение / ALiBi | Оценки внимания | или 0 | Немного экстраполирует | Относительный сдвиг |
| RoPE | Запросы и ключи | 0 | Обучающая длина, расширяемая | Относительный сдвиг в скалярном произведении |
Что изменилось#
| Рекуррентная модель | Трансформер + позиции | |
|---|---|---|
| Источник порядка | Последовательное чтение | Явный позиционный сигнал |
| Цена | Неявная | От до параметров |
| Параллельно по позициям | Нет | Да |
| Обобщение по длине | Любая длина, слабая память | Зависит от схемы |
Ограничения#
- Абсолютные схемы не экстраполируют. У выученной таблицы жёсткий предел, у синусоид — мягкий.
- Прибавленные сигналы конкурируют с содержимым. В схемах с прибавлением ко входу позиционный вектор делит измерений с вектором токена; модель должна научиться их разделять.
- Длинные контексты нагружают любую схему. Какой позиционный метод лучше всего обобщается на длины за пределами обучения — открытый эмпирический вопрос, и ответ зависит от данных и реализации внимания.
- Позиции — индексы, а не структура. Ни одна схема не знает о предложениях, абзацах или синтаксисе; это приходится выучивать по токенам.
Что нужно запомнить#
- Self-attention без маски эквивариантен относительно перестановок: . Порядок нужно добавлять; каузальная маска нарушает эту симметрию, потому что привязана к позициям.
- Синусоидальное кодирование: и от , длины волн в геометрической прогрессии от до , чуть меньше при большом ; сдвиг на — фиксированный поворот каждой пары.
- Выученные таблицы проще и ограничены .
- RoPE поворачивает запросы и ключи так, что оценки зависят от относительного сдвига; параметров нет, используется в современных моделях из одного декодера.
- Схема определяет, как модель справляется с длинами, на которых не обучалась.
Ноутбук#
week05_transformer.ipynb. Номера ячеек считают все ячейки, включая текстовые, начиная с 1. Приведённые числа взяты из прогона, сохранённого в курсе; у ячеек, изменённых с тех пор под текущие версии библиотек, сохранённого выхода нет.
- Ячейка 34 приводит синусоидальные формулы, диапазон длин волн и дропаут, применяемый к сумме эмбеддингов и позиций.
- Ячейка 35 реализует
PositionalEncoder: частоты вычисляются как для чётных , таблица формы[1, max_length, d]заполняется синусами в чётных столбцах и косинусами в нечётных и хранится как необучаемый параметр, аforwardприбавляет ко входу первыеTстрок и применяет дропаут. Ячейка 36 указывает на ротационные эмбеддинги как на современную альтернативу.
week04_lstm_attention_transformer.ipynb, ячейка 58, использует выученную таблицу nn.Embedding(max_len, hidden_size) с max_len = 32, индексируемую arange(T) % max_len, так что более длинные входы не падают, а идут по кругу.
week08_modern_LLM.ipynb, ячейки 18–19, печатает деревья модулей контрольных точек Llama 3.2 1B; RoPE в них — модуль rotary_emb.
Дальше#
С вниманием, блоком и позициями архитектура готова. Следующая заметка возвращается к немецко-английской задаче, на которой курс оставил LSTM с BLEU 0.152, обучает трансформер с тем же бюджетом параметров, измеряет вклад cross-attention, глубины и лучевого поиска и читает карты внимания.
Литература#
- A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, Ł. Kaiser, I. Polosukhin. Attention Is All You Need. NeurIPS, 2017. §3.5 (позиционное кодирование), таблица 3, строка E (выученное и синусоидальное).
- J. Gehring, M. Auli, D. Grangier, D. Yarats, Y. N. Dauphin. Convolutional Sequence to Sequence Learning. ICML, 2017. Выученные абсолютные позиции в нерекуррентной модели.
- P. Shaw, J. Uszkoreit, A. Vaswani. Self-Attention with Relative Position Representations. NAACL, 2018.
- O. Press, N. A. Smith, M. Lewis. Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation. ICLR, 2022. ALiBi.
- J. Su, M. Ahmed, Y. Lu, S. Pan, W. Bo, Y. Liu. RoFormer: Enhanced Transformer with Rotary Position Embedding. Neurocomputing, 568, 2024. RoPE.
- A. Kazemnejad. Transformer Architecture: The Positional Encoding. 2019. Вывод свойства сдвига через матрицу поворота.