Что такое Transformer? Как работают Transformer-модели

Команда NeuronAIОбъясняем AI19.10.20269 мин чтения

Transformer («трансформер») — это архитектура нейронной сети, созданная для того, чтобы находить связи между частями данных, особенно в последовательностях вроде текста.

Модели Transformer лежат в основе большинства современных больших языковых моделей. Их также применяют в распознавании речи, компьютерном зрении, переводе, генерации кода и многих других AI-системах.

Центральная идея — attention, механизм внимания. Вместо того чтобы читать предложение строго слово за словом, Transformer может одновременно смотреть на связи между многими токенами и решать, какие части контекста важнее всего.

Упрощенно данные проходят через Transformer так:

  1. Текст разбивается на токены.
  2. Каждый токен превращается в вектор — эмбеддинг, к которому добавляется информация о позиции.
  3. Слои Transformer повторяют два шага: сначала attention, затем feed-forward-обработку.
  4. В результате у каждого токена появляется представление, которое учитывает контекст.
  5. На его основе модель делает прогноз или формирует результат.

Именно эта конструкция изменила современный AI.

Откуда появилась архитектура Transformer?

Архитектура Transformer была представлена в 2017 году в статье “Attention Is All You Need”.

В то время многие языковые системы опирались на рекуррентные нейронные сети — RNN. RNN обрабатывает последовательность шаг за шагом: сначала первый токен, затем второй, потом третий и так далее.

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

Transformer пошел другим путем. Вместо рекуррентности он в основном использовал механизмы attention для моделирования связей внутри последовательности.

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

Что такое attention?

Attention — это механизм, который помогает модели определить, какие части входных данных наиболее важны друг для друга.

Рассмотрим английское предложение, в котором местоимение может относиться к разным словам:

“The animal did not cross the street because it was tired.” (Животное не перешло улицу, потому что оно устало.)

Чтобы понять, к чему относится “it” — к животному или к улице, — модели нужен контекст из начала предложения. Хорошая модель должна придать связи между “it” и “animal” больше веса, чем несвязанным словам.

Attention позволяет вычислять такие связи. Упрощенно он работает в четыре шага:

  1. Взять текущий токен.
  2. Сравнить его с остальными токенами.
  3. Назначить каждому оценку важности.
  4. Объединить самый полезный контекст.

В результате представление каждого токена включает информацию из других важных для него токенов.

Что такое self-attention?

Если attention сравнивает элементы внутри одной и той же последовательности, это называется self-attention.

Допустим, на входе такое предложение (английское слово bank означает и «банк», и «берег»):

“The bank raised interest rates.” (Банк повысил процентные ставки.)

При обработке слова “bank” модель смотрит на остальные токены и понимает, что речь идет о финансовой организации. Теперь сравните:

“The boat reached the river bank.” (Лодка добралась до берега реки.)

Здесь окружающие токены указывают на другое значение: «берег реки».

Self-attention позволяет представлению токена меняться в зависимости от всей последовательности. Это одна из причин, по которым Transformer-модели так хорошо работают с языком: слова интерпретируются не по отдельности, а в контексте.

Что такое query, key и value?

Attention в Transformer часто объясняют с помощью трех понятий. Математика может быть подробной, но интуиция понятна:

  • Query (Q): какую информацию я ищу?
  • Key (K): какую информацию предлагает этот токен?
  • Value (V): какую информацию нужно передать дальше?

Для каждого токена модель создает представления query, key и value.

Query сравниваются с key, чтобы оценить, сколько внимания один токен должен уделить другому. Затем по этим оценкам объединяются value.

Как создавать полезные представления Q, K и V, модель учится в процессе обучения.

Зачем нужны несколько attention head?

Transformer обычно выполняет attention не один раз, а использует multi-head attention: несколько вычислений attention идут параллельно, и у каждого свои обучаемые параметры.

Разные head могут находить разные типы связей. Например, один head может быть полезен для близких грамматических связей, а другой — для дальних зависимостей, имен и ссылок на них, структуры предложения или смысловых отношений.

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

Как Transformer понимает порядок слов?

Сам по себе self-attention не знает, какой токен стоял раньше, а какой позже. Если те же токены переставить, модель должна уметь заметить разницу.

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

Оригинальный Transformer использовал positional encoding. В современных моделях применяют разные подходы. Один из самых распространенных — RoPE (rotary positional embeddings); он помогает attention учитывать относительные позиции токенов.

Благодаря позиционной информации Transformer отличает “Dog bites man” (собака кусает человека) от “Man bites dog” (человек кусает собаку), хотя в обеих фразах одни и те же три слова. В английском языке смысл здесь задает именно порядок слов.

Что находится внутри слоя Transformer?

Transformer состоит из повторяющихся блоков. Упрощенный блок включает две основные части: шаг attention и следующую за ним feed-forward сеть.

В реальных блоках Transformer есть также нормализация и residual connections (остаточные связи): они помогают информации и градиентам устойчиво проходить через глубокую сеть.

Attention смешивает информацию между токенами. Feed-forward часть выполняет дополнительные обучаемые преобразования для каждой позиции.

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

Encoder, decoder и decoder-only Transformer

Оригинальный Transformer создавался для машинного перевода и состоял из двух основных частей. Encoder читал входное предложение и строил его контекстное представление. Decoder на основе этого представления формировал переведенное предложение.

Encoder

Encoder читает входную последовательность и строит представления, насыщенные контекстом.

Модели на основе encoder полезны, когда нужно в основном понять входные данные или классифицировать их.

Decoder

Decoder генерирует выходную последовательность.

При генерации текста он обычно использует causal mask: она не позволяет модели смотреть на будущие токены, которые еще не сгенерированы.

Decoder-only

Многие современные LLM построены на decoder-only Transformer. Вместо отдельных encoder и decoder они используют стек causal-блоков Transformer и раз за разом предсказывают следующий токен.

Упрощенный процесс работы LLM выглядит так:

  1. Промпт разбивается на токены.
  2. Токены проходят через блоки Transformer.
  3. Модель выдает вероятности для следующего токена.
  4. Выбирается один токен.
  5. Выбранный токен добавляется к тексту, и процесс повторяется с шага 2.

Так архитектура Transformer напрямую связана с предсказанием следующего токена, о котором мы писали в статьях про LLM и токенизацию.

Почему Transformer-модели стали так важны?

Есть несколько причин.

1. Они умеют моделировать дальние связи

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

2. Обучение хорошо распараллеливается

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

Генерация текста устроена иначе: decoder-only модель по-прежнему создает по одному токену за раз, как в процессе выше.

3. Они хорошо масштабируются

Исследователи обнаружили, что Transformer-модели заметно выигрывают от увеличения объема данных, числа параметров и вычислений. Это сделало архитектуру подходящей для быстрого роста больших языковых моделей.

4. Архитектура гибкая

Transformer больше не ограничен переводом и даже текстом. Основную идею attention можно адаптировать к разным типам данных.

Все ли Transformer-модели — это LLM?

Нет. LLM — лишь одно из применений технологии Transformer.

Transformer также используют в:

  • компьютерном зрении: классификация изображений и Vision Transformer;
  • речи: распознавание речи и моделирование аудио;
  • переводе: преобразование текста с одного языка на другой;
  • коде: автодополнение и генерация кода;
  • мультимодальном AI: объединение текста, изображений, аудио или видео;
  • анализе временных рядов: моделирование связей между упорядоченными измерениями.

Поэтому эти два термина нельзя считать синонимами:

  • Transformer — это архитектура.
  • LLM — это тип языковой модели, который часто строится на этой архитектуре.

Как это выглядит в реальной модели NeuronAI?

Идеи Transformer напрямую связаны и с собственными LLM-разработками NeuronAI.

MustaqiLLM — это decoder-only Transformer из 36 блоков. В карточке модели на Hugging Face указаны Grouped-Query Attention (GQA), где 28 query head используют 4 общих key/value head, и RoPE для позиционной информации.

GQA — современный вариант attention. Благодаря меньшему числу key/value head по сравнению со стандартным multi-head attention он уменьшает объем памяти, который модель использует при генерации текста.

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

Есть ли у Transformer недостатки?

Да. У сильных сторон есть своя цена.

Стандартный self-attention сравнивает каждый токен с каждым другим, поэтому объем вычислений растет примерно как квадрат длины последовательности. Чем длиннее последовательность, тем больше вычислений и памяти может потребоваться.

Крупные Transformer-модели также могут требовать:

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

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

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

Понимают ли Transformer-модели язык как люди?

Не в человеческом смысле. Transformer изучает статистические и структурные связи в обучающих данных.

Self-attention позволяет строить очень богатые представления контекста, но это не стоит автоматически считать человеческим пониманием или рассуждением. Transformer может дать гладкий и убедительный ответ и все равно ошибиться.

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

Самый простой способ запомнить

Если запомнить только одну мысль, пусть это будет она:

Transformer — это архитектура нейронной сети, которая с помощью attention определяет, как разные части последовательности связаны друг с другом.

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

Архитектура появилась как новый подход к машинному переводу. Сегодня Transformer-модели лежат в основе значительной части современного AI: от LLM и чат-ботов до речи, кода, изображений и мультимодальных систем.

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