Модификации RoPE: От тригонометрии к относительным позициям
Дружище, если ты следил за нашей предыдущей дискуссией о RoPE, то у меня для тебя нечто взрывное! Сегодня мы продолжим путь по этому бездонному океану информации и обнаружим все модификации RoPE, которые словно звезды на ночном небе освещают путь в мир глубокого обучения. Готовься, впереди нас ждет целых три поста, полных знаний, так что пристегнись!
Позиционное Кодирование: Зачем оно вообще нужно?
Прежде чем мы погрузимся в дебри модификаций, давай определим основное значение Positional Encoding — это как некое GPS для трансформеров, помогающее им ориентироваться в порядках слов. Оно предоставляет машине информацию о том, где именно находится слово в предложении. Мы тут говорим о относительных и абсолютных позициях, а если без заумств — это очень важно!
Вехи развития позиционного кодирования
Время в нашем повествовании идет стремительно, поэтому давай вернемся к основным вехам, начиная с 2017 года.
📅 2017 год
С выходом "ванильного" трансформера на сцену мир увидел тригонометрические функции, которые добавлялись к эмбеддингу каждого токена. Прелесть этого подхода в том, что он мог кодировать любую позицию, даже ту, которая превышает максимальную длину обучающей выборки. Но, как говорил великий философ (или это был просто мой друг с работы?), "в каждой бочке меда есть ложка дегтя". В нашем случае это была неэффективность работы с длинными последовательностями и нереальный уровень неоптимальности.
📅 2018 год
Годом позже пришел BERT с его новым гениальным подходом — вместо тригонометрии разработчики решили добавить обучаемый слой nn.Embedding. Представляешь, теперь модель сама учит, как выглядит позиция токена, как будто это новый стиль рисования! Она суммирует векторы слова и его позиции, и, о чудо, результат оказался лучше. Но тут опять закралась вышеприведенная проблема: модель не могла экстраполировать знания за пределы максимальной длины, как виртуоз без инструмента в незнакомом городе. Это, конечно, не весело, но мы это пережили.
Переход к относительным позициям
Но не всё потеряно! Именно в этот момент взорвался тот самую идею относительных позиций. Вместо того чтобы заморачиваться с абсолютными позициями — кто там знает, где какие токены находятся в предложении, когда ты читаешь стихи Пушкина, — авторы научили моделировать их относительные позиции. Зачем нам эта абсолютка, если у нас есть Relative Position Encoding (RPE)? Это как сравнивать температуру на солнце с температурой в тени, гораздо полезнее знать, насколько холодно или тепло по сравнению с чем-то, верно?
В итоге, новое позиционное кодирование стало частью механизма Attention. Оно добавляет информацию о позиции в запросы и ключи, как будто шепчет модели: "Эй, не забывай, где именно ты находишься среди этих токенов!"
Итак, мой дорогой читатель, это был краткий экскурс в мир позиционного кодирования. Жди следующую часть, где мы исследуем более интересные инсайты по RoPE и его модификациям. Оставайся с нами, будет жжот!
Вам также может понравиться






















