Transformer

transformer — архитектура нейросети на основе attention

Раздел
Основы AI
Обновлено
11.08.26

Transformer — архитектура нейросети, представленная в статье Attention Is All You Need в 2017 году. Она обрабатывает последовательность через attention: каждый элемент строит новое представление с учётом других элементов. На этой идее основано множество языковых, визуальных, аудио- и мультимодальных моделей.

Коротко

Transformer строит представление каждого токена с учётом других токенов в доступном контексте. Attention вычисляет, какие связи полезны именно для текущего преобразования, а feed-forward блоки обрабатывают результат. Повторение таких слоёв позволяет модели работать с языком, изображениями и другими последовательностями.

Зачем понадобилась новая архитектура

Рекуррентные сети обрабатывали последовательность шаг за шагом и переносили состояние вперёд. Это естественно для текста, но усложняет параллельное обучение и передачу информации через длинную цепочку.

Transformer предложил другой путь: во время обучения многие позиции можно обработать одновременно, а связь между ними строится через attention. Первоначальная архитектура создавалась для машинного перевода и содержала encoder и decoder.

Токены и позиции

Текст сначала разбивается на токены. Каждый токен превращается в embedding — вектор чисел.

Сам attention не знает порядок. Поэтому к представлению добавляется информация о позиции: фиксированная, обучаемая, относительная или встроенная другим способом. Без неё последовательности с одинаковыми токенами выглядели бы слишком похожими.

токены + позиции → transformer blocks → новые представления

Как работает self-attention

Для каждого входного вектора слой строит три представления:

  • Query — что эта позиция ищет;
  • Key — по каким признакам её можно найти;
  • Value — какую информацию она передаст.

Query одной позиции сравнивается с Key других. После масштабирования и softmax получаются веса, которыми смешиваются Value.

Упрощённая формула:

Attention(Q, K, V) = softmax(QKᵀ / √d) V

Это не поиск одного «главного слова». Позиция собирает взвешенную смесь информации, а смысл весов зависит от слоя, головы и входа.

Multi-Head Attention

Один attention-блок делится на несколько heads. Каждая работает в своём подпространстве и может улавливать разные типы связей.

После этого результаты объединяются и снова проецируются. Нельзя надёжно назначить каждой head человеческую роль вроде «грамматика» или «имена»: иногда такая интерпретация помогает исследованию, но не является постоянной функцией блока.

Остальные части transformer-блока

Attention — только половина слоя. Обычно рядом есть:

  • feed-forward или другой токен-независимый блок;
  • residual connections;
  • normalization;
  • dropout или другие методы регуляризации;
  • позиционные механизмы;
  • иногда routing, convolution или дополнительные адаптеры.

Конкретный порядок различается между архитектурами. Слово Transformer описывает семейство, а не один неизменный чертёж.

Encoder, decoder и encoder-decoder

Encoder-only

Каждая позиция может учитывать контекст с обеих сторон. Такой режим удобен для классификации, поиска, embeddings и понимания входа.

Decoder-only

Используется causal mask: позиция не видит будущие токены. Модель предсказывает продолжение и подходит для авторегрессионной генерации.

Encoder-decoder

Encoder обрабатывает вход, decoder строит выход и через cross-attention обращается к представлениям encoder. Это естественная схема для преобразования одной последовательности в другую.

Названия «encoder» и «decoder» описывают роль блоков. Реальные модели могут добавлять vision encoder, audio encoder, retrieval и другие части.

Обучение и генерация

При обучении decoder-модели известна вся целевая последовательность, поэтому предсказания для многих позиций считаются параллельно под causal mask.

При авторегрессионной генерации следующего токена ещё нет. Модель выбирает его, добавляет к контексту и только затем переходит дальше. KV cache сохраняет промежуточные Key и Value, но последовательную зависимость не отменяет.

Отсюда важное различие: Transformer хорошо параллелит обучение, а генерация текста токен за токеном остаётся частично последовательной.

Почему attention требует памяти

В классическом полном self-attention каждая позиция сравнивается с каждой. Матрица связей растёт примерно квадратично с длиной последовательности.

Длинный контекст поэтому влияет не только на число входных токенов, но и на память, prefill и стоимость. Разреженное, локальное, блочное и линейное attention меняют этот баланс, а некоторые архитектуры используют recurrent или state-space механизмы.

Размер заявленного окна сам по себе не показывает, насколько хорошо модель использует информацию в его середине.

Transformer за пределами текста

Изображение можно разделить на patches и представить как последовательность. Аудио — на кадры или токены. Видео добавляет пространственные и временные позиции.

Transformer может быть:

  • языковой моделью;
  • vision encoder;
  • denoiser в diffusion pipeline;
  • мультимодальным связующим блоком;
  • частью модели белков, действий робота или временных рядов.

Это не означает, что все данные обрабатываются одинаково. Токенизация, позиции, objective и decoder остаются специфичными для модальности.

Attention не равно объяснение

Карту attention легко визуализировать, но высокий вес не обязательно означает причинную важность токена для финального ответа. В модели много слоёв, residual-путей и нелинейных преобразований.

Для объяснения поведения attention-карту дополняют ablation, gradient-based анализом, контрфактическими тестами и проверкой на новых примерах.

Маски

Mask ограничивает, какие позиции могут взаимодействовать:

  • causal mask закрывает будущее;
  • padding mask исключает пустые позиции;
  • local mask оставляет соседнее окно;
  • custom mask задаёт структуру задачи.

Маска влияет на доступную информацию, но не является системой безопасности. Текст, видимый модели, всё ещё может содержать нежелательные инструкции или данные.

С чем часто путают

  • Transformer и LLM. LLM — языковая модель большого масштаба; Transformer — одна из архитектурных основ.
  • Attention и память продукта. Attention работает внутри текущего входа, а долгосрочные факты хранит отдельный слой приложения.
  • Context window и знание. Большое окно позволяет принять больше входа, но не добавляет источники автоматически.
  • Transformer и diffusion. Diffusion описывает процесс генерации, а Transformer может быть denoiser внутри него.
  • Параллельное обучение и параллельная генерация. Это разные режимы вычислений.

Ограничения

  • полное attention дорого на длинных последовательностях;
  • позиционная информация требует отдельного механизма;
  • авторегрессионный вывод остаётся последовательным;
  • модель может игнорировать или путать далёкий контекст;
  • attention-веса трудно интерпретировать напрямую;
  • архитектура не гарантирует фактическую точность и безопасность.

Гибриды с state-space, recurrence, convolution и routing исследуют другие компромиссы. Победитель зависит от задачи, оборудования и реализации.

Частые ошибки

  • «Каждое слово смотрит на все остальные одинаково». Веса различаются, а mask может закрывать часть позиций.
  • «Attention показывает ход мысли». Это промежуточная вычислительная величина, а не готовое объяснение.
  • «Чем больше heads, тем лучше». Количество связано с размером и дизайном модели, но не является отдельной метрикой качества.
  • «Длинное окно решает RAG». Поиск и контекстное окно решают разные задачи и часто работают вместе.
  • «Все Transformer одинаковы». Порядок normalization, позиции, activation, routing и attention могут сильно отличаться.

Частые вопросы

Почему делят на √d? При большой размерности скалярные произведения растут по масштабу, и softmax может стать слишком резким. Деление стабилизирует значения.

Что хранит KV cache? Key и Value уже обработанных токенов для слоёв decoder. Это экономит повторные вычисления при продолжении текста, но занимает память.

Transformer обязательно генерирует текст? Нет. Encoder может только строить embedding или классифицировать вход, а Transformer внутри diffusion-модели обновляет визуальный latent.

Есть ли альтернативы? Да: recurrent, convolutional и state-space архитектуры, а также гибриды. Их сравнивают по качеству, памяти, задержке и удобству обучения на конкретной задаче.

Главное

Transformer обрабатывает последовательность через attention и многослойные преобразования. Его ключевая сила — гибкая связь между позициями и параллельная обработка обучающих примеров. Ограничения тоже важны: длинный контекст дорог, generation остаётся последовательной, а attention не даёт готового объяснения решения.