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

Вот основные темы, которые мы рассмотрим:

  • Как токенизация, эмбеддинги и позиционная информация применяются при подготовке входных данных.

  • Какой вклад в результат вносят механизмы множественного (многоголового) внутреннего внимания (multi-head self-attention) и структуры, представляющие собой нейронные сети с прямой связью (feed-forward network, FFN).

  • Как выходной линейный слой и функция softmax формируют прогнозы, касающиеся вероятности появления следующих токенов.

Начало путешествия

Большие языковые модели (Large language model, LLM) основаны на трансформерной архитектуре, представляющей собой сложную нейронную сеть глубокого обучения. В качестве входных данных такие сети используют последовательности эмбеддингов токенов. Дальше идёт многоступенчатый процесс обработки этих данных. Он выглядит как последовательность из множества операций, предусматривающих применение механизмов внимания и преобразование данных с помощью нейронных сетей с прямой связью. После этого на выходе модели оказывается распределение вероятностей, указывающее на следующий токен, который должен быть сгенерирован в ходе формирования ответа модели. Как описать путешествие отдельного токена входной последовательности по модели, его путь от её входа к выходу?

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

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

Вход в трансформер: путь от обычного текста к входным эмбеддингам

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

Токенизация

Токенизатор — это алгоритмический компонент модели, который обычно работает в тесном взаимодействии с трансформенными подсистемами LLM. Он берёт исходную текстовую последовательность, например — промпт, написанный пользователем, и разбивает её на отдельные токены. Иногда это — компоненты, представляющие собой части слов или байты, а иногда это — целые слова. Далее — каждый токен в исходном материале сопоставляется с идентификатором i.

Создание эмбеддингов токенов

В модели имеется обучаемая таблица эмбеддингов E, имеющая размерность |V| × d (размер словаря x размерность эмбеддинга). Подбор идентификаторов для последовательности длины n приводит к созданию матрицы эмбеддингов X размерностью n × d. Получается, что каждый идентификатор токена сопоставляется с вектором эмбеддинга размерности d, который формирует одну строку матрицы X. Два вектора эмбеддинга будут похожими друг на друга в том случае, если они связаны с токенами, имеющими схожее значение, например — король (king) и император (emperor), или — наоборот. Важно то, что на этой стадии работы модели каждый эмбеддинг токена несёт семантическую и лексическую информацию о конкретном токене. При этом в нём, по крайней мере пока, нет информации о других элементах последовательности.

Позиционное кодирование

Прежде чем данные в полном объёме попадут во внутренние механизмы трансформера, необходимо внедрить в каждый вектор эмбеддинга токена (то есть — в каждую строку матрицы эмбеддингов X) сведения о позиции токена в исходной текстовой последовательности. Эту процедуру ещё называют внедрением позиционной информации, она обычно выполняется с привлечением тригонометрических функций, вроде синуса и косинуса, но эту задачу можно решить и прибегнув к обучению позиционных эмбеддингов. К уже имеющемуся вектору эмбеддинга e_t, связанному с токеном, прибавляется почти остаточный (nearly-residual) компонент:

Здесь p_pos(t) — это обычно функция позиции токена t в последовательности, в основе которой лежат тригонометрические преобразования. В результате вектор эмбеддинга, который ранее содержал лишь сведения о том, что это за токен, теперь несёт в себе информацию относительно того, что это за токен и где именно он находится во входной последовательности. Всё это символизирует блок Input Embedding (входной эмбеддинг) на вышеприведённой схеме.

А теперь пришло время спуститься в глубины трансформера и увидеть то, что там происходит!

Спуск в глубины трансформера: путь от входных эмбеддингов к выходным вероятностям

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

Вот формула:

Она описывает представление токена в слое 0 (то есть — в первом слое модели). В обобщённом виде мы будем использовать конструкцию вида h_t^{(l)} для обозначения представления эмбеддинга токена в слое l.

Механизм множественного внимания

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

Результатом прохождения представления токена h_t^{(l)} через механизм множественного внимания, расположенный внутри слоя, является контекстно-обогащённое или контекстно-зависимое представление токена (и не забудьте о том, что в представление токена заранее внедрены сведения о его позиции в последовательности!). Благодаря использованию в слоях трансформера остаточных связей и нормализации, новые векторы превращаются в устойчивые сочетания предыдущих вариантов собственных представлений и выходных данных механизма множественного внимания. Это помогает улучшить согласованность всего этого процесса, который многократно повторяется в слоях модели.

Нейронная сеть с прямой связью

Дальше нас ждёт сравнительно простая операция — обработка данных с помощью слоёв, в которых реализованы нейронные сети с прямой связью (FFN). Например — такой слой может быть представлен многослойным перцептроном (multilayer perceptron, MLPs), который применяется к каждому из токенов. Цель этого шага — в дальнейшем преобразовании и уточнении признаков токена, которые постепенно изучает модель.

Главное различие между этим шагом работы и шагом, где применяется механизм множественного внимания, заключается в следующем. Механизм внимания внедряет в представление каждого токена контекстную информацию, относящуюся ко всей последовательности токенов. А на шаге, где применяется FFN, каждый токен обрабатывается по-отдельности, здесь уточняются контекстные паттерны, уже включённые в состав его представления. Делается это для того, чтобы извлечь из него полезные «знания». Эти слои тоже снабжены остаточными связями и нормализацией. После того, как их работа завершается, мы получаем обновлённые представления токенов h_t^{(l+1)}, которые используются как входные данные для следующего слоя трансформера, а значит — обрабатываются ещё одним блоком множественного внимания.

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

Пункт назначения

Что же происходит в самом конце? В последнем трансформерном слое, через который проходят данные, формируется итоговое представление токена h_t*^{(l)}, (где t* — это текущая позиция прогнозируемого токена), которое пропускают через линейный выходной слой, а после этого обрабатывают функцией softmax.

Линейный слой формирует ненормализованные оценки, называемые логитами (logit), а softmax преобразует их в предсказания вероятности появления следующего токена.

Вот как вычисляются логиты:

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

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

Вероятности вычисляются для всех токенов, находящихся в словаре. Затем выбирается следующий токен, который будет сгенерирован LLM. Часто — тот, которому соответствует наибольшая вероятность, хотя нередко применяются и другие стратегии декодирования выходных данных моделей.

Конец пути

Мы с вами совершили путешествие по архитектуре трансформера, не слишком сильно углубляясь в технические детали. Мы стремились разобраться с тем, что именно происходит с текстом, который поступает на вход LLM. А именно — с тем, как этот текст, на уровне отдельного токена, обрабатывается и преобразуется внутри модели, как он, в итоге, превращается в выходные данные — в следующее слово, которое генерирует модель.

Надеемся — вам понравилось. А если повезёт — в ближайшем будущем мы с вами отправимся ещё в какое-нибудь интересное место.

О, а приходите к нам работать? ? ?

Мы в wunderfund.io занимаемся высокочастотной алготорговлей с 2014 года. Высокочастотная торговля — это непрерывное соревнование лучших программистов и математиков всего мира. Присоединившись к нам, вы станете частью этой увлекательной схватки.

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

Сейчас мы ищем плюсовиков, питонистов, дата-инженеров и мл-рисерчеров.

Присоединяйтесь к нашей команде

Комментарии (1)


  1. Miceh
    08.12.2025 09:54

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