Трансфо́рмер () — архитектура глубоких нейронных сетей, представленная в 2017 году исследователями из Google Brain / Google Research в статье «Внимание — это всё, что вам нужно».

По аналогии с рекуррентными нейронными сетями (РНС / RNN) трансформеры предназначены для обработки последовательностей, таких как текст на естественном языке, и решения таких задач как машинный перевод и автоматическое реферирование. В отличие от РНС, трансформеры не требуют обработки последовательностей по порядку. Например, если входные данные — это текст, то трансформеру не требуется обрабатывать конец текста после обработки его начала. Благодаря этому трансформеры распараллеливаются легче, чем РНС и могут быть быстрее обучены.

Преимущество трансформеров заключается в отсутствии рекуррентных блоков, поэтому они требуют меньше времени на обучение по сравнению даже с улучшенными архитектурами РНС / RNN, такими как «долгая краткосрочная память» (LSTM). Дальнейшие модификации трансформеров получили широкое распространение при обучении больших языковых моделей (БЯМ / LLM) на обширных наборах данных.

Архитектура сети Архитектура трансформера состоит из кодировщика и декодировщика. Кодировщик получает на вход векторизованую последовательность с позиционной информацией. Декодировщик получает на вход часть этой последовательности и выход кодировщика. Кодировщик и декодировщик состоят из слоев. Слои кодировщика последовательно передают результат следующему слою в качестве его входа. Слои декодировщика последовательно передают результат следующему слою вместе с результатом кодировщика в качестве его входа.

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

Позиционное кодирование Позиционное кодирование (Positional Encoding) — важный компонент трансформеров (Transformer), который позволяет модели учитывать порядок элементов в последовательности, поскольку сам механизм Self-Attention не имеет встроенного понимания позиций. Трансформеры обрабатывают входные данные параллельно (в отличие от RNN), поэтому без дополнительных меток модель "не видит" порядок элементов. Позиционное кодирование добавляет информацию о позиции каждого токена в последовательности. В статье использовались синусоидальные и косинусоидальные волновые функции для кодирования позиции токена в эмбеддинг.

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

Синусоидальные функции (sin/cos) выбраны потому, что они позволяют модели легко интерполировать на более длинные последовательности, чем встречались при обучении. .

Внимание на основе скалярного произведения

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

Использование

Трансформеры используются в Яндекс.Переводчике, Яндекс.Новостях, Google Переводчике.

На основе архитектурной модели трансформер была создана модель только с декодировщиком (Decoder-only model), из которой, в результате предобучения на больших объемах языковых данных создана серия моделей генеративных предобученных трансформеров, известных как GPT. В частности, на основе GPT версии 3.5, модифицированной с использованием усиления модели GPT способности следовать предложенных пользователем командам (модель InstructGPT) был создан специальный генеративный ИИ чатбот (Generative AI chatbot) ChatGPT.

Примечания

См. также LLM

Категория:Нейронные сети