Если вы до сих пор считаете, что positional encoding в трансформерах — это знаменитые sin/cos из статьи 2017 года, то боюсь, что собеседование для вас закончится автоматическим реджектом.
Позиционное кодирование заметно эволюционировало с момента появления оригинальной статьи о трансформерах. В современных LLM и моделях компьютерного зрения, таких как FLUX, уже давно не используется классическое sin/cos-кодирование.
Про это почему-то не знают 80% кандидатов на интервью, хотя, казалось бы, эта информация уже давно перешла в разряд «базовой классики».
В этой статье я разберу популярные вопросы с технических собеседований, связанные с позиционным кодированием: как оно устроено, как реализуется в современных моделях, расскажу про relative encodings, как устроено позиционное кодирование в T5, а также завершим обзор rotary embeddings.
Разбирать темы будем в формате реального собеседования — покажу, как правильно отвечать на вопросы, чтобы производить впечатление опытного специалиста и показать своё глубокое понимание устройства трансформеров.
Формат: вопрос — ответ.
Вопрос 1. Зачем в трансформере позиционное кодирование, что это такое?
Ответ:
Для начала коротко расскажу об устройстве трансформера и операции self-attention.
Небольшое напоминание (mini-recap) про архитектуру трансформера:
Предположим, что мы работаем с текстовыми данными. На первом этапе последовательность слов нужно преобразовать в числовой формат, удобный для нейросетки — этот процесс называется токенизацией . Каждому слову (грубо говоря, хотя на деле токены — это более атомарные единицы, чем целое слово) присваивается свой уникальный вектор — эмбеддинг , который передаётся в нейросеть для дальнейшей обработки и получения предсказания.

Трансформер изначально не учитывает порядок слов в предложении. Механизм внимания работает с элементами как с множеством, а не как с последовательностью. То есть для него “кошка видит собаку” и “собака видит кошку” — одинаковые наборы слов.
Позиционное кодирование (positional encoding) — это способ добавить в модель информацию о позиции каждого токена в последовательности. В оригинальной статье оно прибавляется к эмбеддингам токенов до входа в первый слой self-attention.
Если ты посмотришь на матрицу внимания, то увидишь, что она показывает, какие токены "обращают внимание" друг на друга. Но если мы не скажем модели, где какой токен стоит, она просто будет считать их без учёта порядка. Это может привести к тому, что семантика предложения будет потеряна.
