Архитектура Transformer, лежащая в основе GPT-4, LLaMA и других современных моделей, обрабатывает слова в предложении не последовательно, а одновременно. Из-за этого фразы «Cat eats mouse» и «Mouse eats cat» для модели без дополнительной информации выглядят одинаково. Чтобы решить эту проблему, в статье «Attention Is All You Need» (2017) исследователи Google предложили использовать позиционное кодирование — способ добавить к вектору каждого слова информацию о его позиции в тексте.

Автор эксперимента на платформе Habr решила проверить, как разные математические базисы для позиционного кодирования влияют на способность модели различать слова. Для этого она взяла две фразы-палиндрома: «Fall leaves as soon as leaves fall» и «Never odd or even». В первой фразе слово «fall» встречается дважды: как существительное и как глагол, что создает дополнительную сложность для модели. Во второй фразе интерес представляют слова «odd» (нечетный) и «even» (четный), которые должны быть противопоставлены друг другу.

БазисОписаниеРезультат на палиндромах
Только контентМодель не видит порядок словНе различает одинаковые слова
ЛинейныйПорядковый номер словаГрадиент, но не различает «fall»
ФурьеСинусы и косинусыПлавные изменения, но не различает «fall»
Комплексные экспонентыУгол поворота вектораИзолирует «fall» от «leaves», но не полностью
Полиномы ЧебышеваОртогональные полиномыРазличает «fall» и «odd/even»

В ходе эксперимента сравнивались пять подходов: только смысловые векторы слов без позиционной информации, линейный базис (порядковый номер слова), базис Фурье (синусы и косинусы), комплексные экспоненты (кодирование углом поворота вектора) и полиномы Чебышева. Для каждого подхода строились тепловые карты косинусного сходства между эмбеддингами слов. Все вычисления выполнялись на Python с использованием PyTorch и matplotlib.

В эксперименте сравнивались пять базисов: контент без позиции, линейный, Фурье, комплексные экспоненты и полиномы Чебышева.

Результаты показали, что разные базисы по-разному влияют на восприятие модели. Без позиционного кодирования модель не различает одинаковые слова с разным смыслом. Линейный базис добавляет градиент от начала к концу предложения, но также не помогает различить «fall» в разных значениях. Базис Фурье дает более плавные изменения, но также не разделяет пару «fall». Комплексные экспоненты изолируют «fall» от «leaves», но не полностью различают два «fall». Только полиномы Чебышева смогли уловить разницу между существительным и глаголом «fall», а также разделить слова «odd» и «even» во второй фразе.

Полиномы Чебышева — это ортогональные полиномы, часто используемые в теории приближений. Их свойство отличать начало и конец последовательности, вероятно, и позволило модели лучше улавливать грамматические конструкции, такие как «leaves fall» (подлежащее + сказуемое). Отсутствие симметрии в тепловой карте для полиномов Чебышева указывает на то, что этот базис учитывает направление текста.

Этот эксперимент носит исследовательский характер и не означает, что полиномы Чебышева должны заменить стандартное синусоидальное кодирование во всех моделях. Однако он демонстрирует, что выбор базиса для позиционного кодирования может влиять на способность модели различать слова с одинаковым написанием, но разным значением. Для разработчиков, работающих над улучшением архитектур трансформеров, это может быть полезным направлением для дальнейших исследований.