COMRAD404 / GLOSSARY

Трансформер (архитектура)

Трансформер — архитектура нейросетей, где токены связываются через attention. Она стала основой LLM, но не всегда подходит при жёстких лимитах памяти и задержки.

Трансформер — это архитектура нейросетей для работы с последовательностями, в которой ключевую роль играет механизм self-attention: модель оценивает, какие части входа важны друг для друга, и строит представление без пошагового прохода, как в классических RNN. Именно поэтому трансформеры стали базой современных языковых моделей, систем перевода, поиска и мультимодальных моделей. Но это не универсальный выбор: стандартный attention дорог по памяти и времени на длинных последовательностях, модели обычно требуют предобучения или больших данных, а при жёстких ограничениях на задержку, бюджет или длину контекста лучше подходят упрощённые архитектуры, специализированные варианты attention или даже более простые базовые модели.

Простыми словами

Если упростить, трансформер читает текст не строго слева направо по одному слову, а сопоставляет каждый токен со всеми остальными токенами в текущем окне контекста. За счёт этого он может быстро уловить зависимость между удалёнными словами, например связать местоимение с объектом несколькими предложениями выше или понять, к какому условию относится исключение в длинной инструкции.

В отличие от рекуррентных сетей, трансформер хорошо параллелится на GPU и TPU: токены внутри слоя можно обрабатывать одновременно. Это стало одним из главных факторов его практической ценности. Архитектура оказалась удобной не только для генерации текста, но и для классификации, извлечения сущностей, суммаризации, ответа на вопросы, кода, изображений и аудио.

Важно не путать трансформер как архитектуру и конкретные семейства моделей. BERT — это трансформер-энкодер, GPT — декодерный трансформер, а классический машинный перевод из исходной статьи строился как связка encoder-decoder.

Как это работает

Токены, эмбеддинги и позиция

Сначала входной текст разбивается на токены. Это могут быть слова, части слов или служебные куски текста в зависимости от токенизатора. Каждый токен превращается в вектор — эмбеддинг. Поскольку сама операция attention не знает порядок элементов, в представление добавляется информация о позиции: через позиционные эмбеддинги или позиционные кодировки.

На этом этапе модель уже работает не с буквами и не со словами как таковыми, а с последовательностью векторов фиксированной размерности.

Self-attention

В каждом слое для каждого токена вычисляются три представления: Q (query), K (key) и V (value). Дальше модель сравнивает Q текущего токена с K остальных токенов и получает веса внимания. Чем выше вес, тем сильнее текущий токен должен учитывать другой токен при обновлении своего состояния.

Практически это означает следующее:

  1. токен формулирует, что именно он ищет в контексте;
  2. остальные токены сообщают, какую информацию они могут дать;
  3. модель агрегирует релевантные V по найденным весам.

Если в предложении есть фраза «банк повысил ставку», внимание может сместиться к финансовому контексту; если «берег реки», то к другому значению того же слова. Это не «понимание» в человеческом смысле, а статистическая настройка представлений на данных.

Многоголовое внимание, слои и маски

Обычно используется multi-head attention: несколько «голов» внимания смотрят на вход с разных точек зрения. Одна может сильнее отслеживать синтаксис, другая — дальние зависимости, третья — локальный контекст. После attention идёт позиционно-независимая полносвязная сеть, а вокруг блоков применяются остаточные связи и нормализация слоёв.

У трансформера есть несколько основных конфигураций:

  • encoder-only — получает контекст сразу с обеих сторон и хорошо подходит для классификации, поиска, извлечения признаков;
  • decoder-only — предсказывает следующий токен, видя только левый контекст, и используется в генеративных языковых моделях;
  • encoder-decoder — сначала кодирует вход, затем декодирует выход, что удобно для перевода, суммаризации и других задач преобразования последовательности в последовательность.

В декодере применяется маска, запрещающая смотреть в будущие токены. Иначе модель на обучении просто увидела бы правильный ответ заранее.

Обучение и инференс

Архитектура обычно сначала предобучается на больших корпусах, а затем дообучается под задачу. Для encoder-моделей это может быть классификация или ранжирование, для decoder-моделей — продолжение текста, диалог, генерация кода.

На инференсе стандартный attention имеет сложность порядка O(n^2) по длине последовательности n, потому что сравниваются пары токенов. Это одна из главных причин, почему очень длинный контекст резко увеличивает требования к памяти и вычислениям.

Зачем нужно

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

  • Лучше ловит дальние зависимости по сравнению с классическими рекуррентными моделями.
  • Хорошо переносит знания через предобучение и последующий fine-tuning или prompting.
  • Универсален: одна и та же базовая идея работает в тексте, коде, изображениях и аудио.
  • Удобен для инфраструктуры: параллелизм упрощает обучение на ускорителях.

Но выбирать трансформер имеет смысл не всегда. Если задача простая, данные табличные, тексты очень короткие, а latency-контур жёсткий, сильный baseline на линейной модели или маленькой CNN может оказаться рациональнее.

Пример

Практический пример — маршрутизация обращений в службе поддержки. Допустим, у вас есть короткие тексты заявок, и нужно автоматически определить команду: биллинг, доставка, возвраты, технические проблемы.

  1. Берёте предобученный encoder-трансформер, например мультиязычную или русскоязычную модель, а не обучаете сеть с нуля.
  2. Токенизируете обращения, задаёте ограничение по длине, например 128–256 токенов, чтобы контролировать память и задержку.
  3. Добавляете классификационную голову поверх выходного представления и дообучаете модель на размеченных примерах.
  4. Проверяете ошибки по классам: трансформер часто путается не в «сложных словах», а в пересечении бизнес-контекстов, например между возвратом и отменой заказа.
  5. Сравниваете с базовым решением, например TF-IDF + Logistic Regression. Для коротких тикетов простой baseline иногда почти не уступает, а по цене и задержке выигрывает.

Здесь трансформер полезен, когда формулировки пользователей разнообразны, много синонимов и важен контекст фразы. Если же тексты шаблонные и классы различаются по нескольким ключевым словам, архитектура может быть избыточной.

Заблуждения и ограничения

Заблуждение 1: attention равен пониманию. На практике attention — это способ взвешивать контекст. Он помогает модели строить полезные представления, но сам по себе не доказывает смысловое понимание.

Заблуждение 2: веса внимания объясняют решение модели. Использовать attention как объяснение нужно очень осторожно. Это внутренний механизм, но не гарантированно надёжная интерпретация причин ответа.

Заблуждение 3: трансформер всегда лучше. Нет. На маленьких данных без качественного предобучения модель легко переобучается. В задачах со строгими ограничениями по памяти и задержке она может быть непрактичной. Для длинных последовательностей стандартный attention быстро дорожает. Для изображений и сигналов иногда полезны архитектуры с более сильным встроенным индуктивным bias.

Ограничение 1: стоимость длинного контекста. При росте окна контекста растут вычисления и память. Поэтому в продакшене часто используют сокращение контекста, retrieval, sparse attention или специальные длинноконтекстные варианты.

Ограничение 2: зависимость от токенизации и данных. Ошибки на редких терминах, кодах товаров, адресах и смешанных языках нередко связаны не с «слабостью интеллекта», а с тем, как текст был разбит на токены и чем модель видела на обучении.

Ограничение 3: генеративные ошибки. Декодерные трансформеры могут уверенно генерировать неверные факты или несуществующие ссылки. Архитектура хорошо моделирует распределение текста, но не гарантирует истинность.

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

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

Чем трансформер отличается от RNN?

RNN обрабатывает последовательность шаг за шагом, передавая состояние дальше. Трансформер сопоставляет токены через attention и поэтому лучше параллелится и обычно легче ловит дальние зависимости.

Что такое encoder-only, decoder-only и encoder-decoder?

Encoder-only подходит для понимания и классификации текста, decoder-only — для генерации следующего токена, encoder-decoder — для задач преобразования одного текста в другой, например перевода или суммаризации.

Можно ли обучить трансформер с нуля на небольшой выборке?

Обычно это плохая идея. На малых данных разумнее брать предобученную модель и делать fine-tuning, либо начать с более простого baseline и проверить, нужен ли трансформер вообще.

Почему длинный контекст так дорог?

В стандартной реализации attention сравнивает токены попарно, поэтому вычислительная и memory-нагрузка растут примерно квадратично по длине последовательности.

Связанные понятия

  • Self-attention — механизм, который позволяет токену учитывать другие токены той же последовательности.
  • Positional encoding — способ добавить информацию о порядке токенов.
  • BERT — семейство encoder-моделей на базе трансформера.
  • GPT — семейство decoder-only моделей для авторегрессионной генерации.
  • Tokenization — разбиение текста на единицы, с которыми работает модель.
  • Fine-tuning — дообучение предобученной модели на прикладной задаче.
  • Context window — максимальное число токенов, которые модель может учитывать за один проход.

Читайте также

LINKS