Transformer
transformer — архитектура нейросети на основе attention
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 не даёт готового объяснения решения.