Путешествие токена: что конкретно происходит внутри трансформера. softmax.. softmax. Алгоритмы.. softmax. Алгоритмы. Блог компании Wunder Fund.. softmax. Алгоритмы. Блог компании Wunder Fund. искусственный интеллект.. softmax. Алгоритмы. Блог компании Wunder Fund. искусственный интеллект. Машинное обучение.. softmax. Алгоритмы. Блог компании Wunder Fund. искусственный интеллект. Машинное обучение. трафнсформеры.

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

Путешествие токена: что конкретно происходит внутри трансформера - 1

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

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

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

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

Путешествие токена: что конкретно происходит внутри трансформера - 2

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

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

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

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

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

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

Токенизация

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

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

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

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

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

Путешествие токена: что конкретно происходит внутри трансформера - 3

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

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

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

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

Вот формула:

Путешествие токена: что конкретно происходит внутри трансформера - 4

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

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

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

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

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

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

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

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

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

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

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

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

Путешествие токена: что конкретно происходит внутри трансформера - 9

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

Путешествие токена: что конкретно происходит внутри трансформера - 10

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

Путешествие токена: что конкретно происходит внутри трансформера - 11

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

Конец пути

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

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

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

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

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

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

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

Автор: mr-pickles

Источник

Rambler's Top100