Positional encoding — метод, который добавляет модели информацию о позиции токенов в последовательности для корректной обработки порядка.
Определение
Positional encoding — это механизм, который позволяет трансформерным моделям учитывать порядок токенов. Поскольку self-attention не имеет встроённого понятия последовательности, positional encoding явно добавляет координаты позиции каждого токена. Кодировка включается в скрытые представления модели и влияет на веса внимания, позволяя системе понимать относительные и абсолютные зависимости.
Как работает
Основная идея заключается в добавлении векторной позиции к эмбеддингу токена. Существует два ключевых подхода: фиксированные кодировки и обучаемые кодировки.
- синусно-косинусные кодировки — фиксированные, детерминированные векторы, основанные на разных частотах;
- обучаемые позиционные эмбеддинги — параметры, которые оптимизируются вместе с моделью;
- относительное позиционное кодирование — модель учитывает не абсолютные координаты, а разницу между токенами;
- ротационные позиционные кодировки (RoPE) — представления, создающие вращения в пространстве признаков, позволяющие учитывать относительные зависимости;
- ALiBi-кодирование — добавление линейных смещений к вниманию для масштабируемой работы с длинными контекстами.
На практике позиционный вектор просто прибавляется (или конкатенируется) к эмбеддингу токена, после чего подаётся в слои self-attention. Это формирует «координатную сетку» внутри представлений модели.
Где применяется
- Все трансформеры: языковые, мультимодальные, аудио-, видео- и кодовые модели.
- Системы обработки последовательностей переменной длины.
- Модели со сверхдлинными контекстами.
- Архитектуры, работающие с временными рядами.
- Обработка структурированных последовательностей: логи, события, команды.
- Визуальные трансформеры — кодирование координат патчей.
Практические примеры использования
В языковых моделях positional encoding позволяет корректно понимать порядок слов, токенов и зависимостей: без этого self-attention не различает, что идёт раньше или позже.
В длительных контекстах применяются RoPE и ALiBi: они масштабируются на тысячи и десятки тысяч токенов, сохраняя относительные отношения между токенами и снижая деградацию внимания.
В визуальных трансформерах позиционные кодировки задают структуру изображения: патчи без координат были бы для модели неразличимыми.
В моделях для временных рядов позиционные кодировки указывают, где в последовательности находится значение, позволяя распознавать тренды и временные зависимости.
Преимущества и ограничения
- Плюс: позволяет attention-механизму обрабатывать порядок токенов.
- Плюс: универсальный механизм для всех типов последовательностей.
- Плюс: поддерживает как абсолютные, так и относительные зависимости.
- Плюс: RoPE и ALiBi масштабируются на длинные контексты.
- Минус: фиксированные кодировки плохо масштабируются.
- Минус: обучаемые эмбеддинги не интерполируются за пределами обученных длин.
- Минус: неудачный выбор схемы ограничивает длину контекста.
- Минус: несовместимость некоторых схем между моделями и форматами внимания.
Связанные термины
- Self-attention
- Transformer architecture
- RoPE
- ALiBi
- Relative positional encoding
- Token embeddings
- Long-context architectures