Как стать автором
Обновить

Retrieval Transformer в картинках

Время на прочтение6 мин
Количество просмотров6K
Автор оригинала: Jay Alammar

Резюме: Новые языковые модели могут быть намного меньше GPT-3, но при этом достигать сравнимых результатов благодаря использованию запросов к базе данных или поиску информации в Интернете. Ключевая идея заключается в том, что построение все более и более крупных моделей — не единственный способ повысить качество.


Последние несколько лет ознаменовались появлением больших языковых моделей (Large Language Models, LLM) — моделей машинного обучения, которые способствовали быстрому развитию сферы машинной обработки и генерации естественного языка. Некоторые из основных вех развития области с 2017 года включают в себя:


  • Оригинальный Трансформер (Transformer) бьет предыдущие рекорды качества машинного перевода.
  • BERT популяризирует процесс предварительного обучения, а затем тонкой настройки, а также контекстуализированные эмбеддинги слов на основе Трансформера. В скором времени он начинает использоваться в Google Search и Bing Search.
  • GPT-2 демонстрирует способность компьютера достигать сравнимого с человеком качества написания текстов.
  • Сначала T5, а затем T0 раздвигают границы трансферного обучения (обучение модели на одной задаче, а затем ее успешное применение для смежных), представляя множество различных задач в виде задачи преобразования текста в текст.
  • GPT-3 показала, что массовое масштабирование генеративных моделей может привести к возникновению самых удивительных приложений (и индустрия продолжает обучать все более крупные модели, такие как Gopher, MT-NLG и т. д.).

Какое-то время казалось, что масштабирование все более и более крупных моделей является основным способом повышения производительности. Недавние разработки в этой области, такие как RETRO Transformer от DeepMind и WebGPT от OpenAI, обращают эту тенденцию вспять, показывая, что небольшие генеративные языковые модели могут работать наравне с большими, если мы дополняем их возможностью искать или запрашивать необходимую информацию.


В данной статье рассказывается о RETRO (Retrieval-Enhanced TRansfOrmer) от DeepMind и о том, как она работает. Модель показывает результаты, сравнимые с GPT-3, несмотря на то, что она составляет всего 4% от размера последней (7.5 миллиардов параметров против 185 миллиардов у GPT-3 Da Vinci).



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


RETRO была представлена в статье Improving Language Models by Retrieving from Trillions of Tokens, которая основывается и, в свою очередь, продолжает широкий спектр работ исследовательского сообщества, посвященных задаче извлечения информации. Однако данная статья посвящена объяснению работы самой модели, а не тому, что нового она привнесла в данную область исследований.


Почему это важно: отделение языковой информации от знаний о мире


Языковое моделирование обучает модели предсказывать следующее слово — по сути, заполнять пропуск в конце предложения.


Заполнение пропуска иногда требует знания фактической информации (такой как имена или даты). Например:



Затравка на входе: «Фильм Дюна был выпущен в ...».


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



Затравка на входе: «его популярность распространялась из уст в уста, чтобы позволить Герберту начать работать в полную ...».


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


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



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


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


Технически RETRO представляет собой модель энкодер-декодер, как и оригинальный Трансформер. Однако в RETRO входная последовательность дополняется извлеченной из базы данных информацией. Модель находит наиболее вероятные последовательности в базе данных и добавляет их на вход. Здесь происходит магия, и RETRO генерирует выходной прогноз.



RETRO использует базу данных для дополнения входной последовательности. Для извлечения необходимой информации из базы данных используется первоначальный текст на входе.


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


Исследование базы данных для извлечения информации RETRO


База данных — это хранилище ключей-значений.


Ключ представляет собой стандартный эмбеддинг предложения, полученный с помощью BERT'а.


Значение представляет собой текст, состоящий из двух частей:


  • «Сосед» (Neighbor), который используется для вычисления ключа;
  • «Завершение» (Completion), продолжение текста в исходном документе.

База данных RETRO содержит 2 триллиона многоязычных токенов на основе набора данных MassiveText. И «сосед», и «завершение» имеют длину не более 64 токенов.



Заглянув внутрь базы данных RETRO, можно увидеть примеры пар ключ-значение. Значение содержит текст «соседа» и «завершения».


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


Поиск в базе данных


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



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


Этот эмбеддинг предложения затем используется в приближенном поиске ближайшего соседа (https://github.com/google-research/google-research/tree/master/scann).


Извлекаются два ближайших соседа, и их текст становится частью входа в RETRO.



Эмбеддинг предложения из BERT'а используется для извлечения ближайших соседей из нейронной базы данных RETRO. Затем они добавляются к входным данным языковой модели.


Теперь это входные данные в RETRO. Входная последовательность и два её ближайших соседа из базы данных (и их продолжения).


Начиная с этого момента блоки Трансформера и RETRO включают в свою обработку фактическую информацию.



Полученные соседи добавляются на вход языковой модели. Однако внутри модели они обрабатываются немного по-другому.


Высокоуровневая архитектура RETRO


Архитектура RETRO представляет собой стек энкодера и стек декодера.



RETRO Трансформер состоит из стека энкодера (для обработки соседей) и стека декодера (для обработки входных данных).


Энкодер состоит из стандартных блоков энкодера Трансформера (внутреннее внимание (self-attention) + FFNN). Насколько можно судить, RETRO использует энкодер, состоящий из двух блоков энкодера Трансформера.


Стек декодера чередует два типа блоков декодера:


  • Стандартный блок декодера Трансформера (ATTN + FFNN)
  • Блок декодера RETRO (ATTN + Chunked Cross Attention (CCA) + FFNN)


Три типа блоков Трансформера, из которых состоит RETRO.


Давайте начнем с рассмотрения стека энкодера, который обрабатывает извлеченные соседи, в результате чего получаются матрицы KEYS и VALUES, которые позже будут использоваться в механизме внимания (чтобы освежить знания, см. Трансформер в картинках).



Стек энкодера обрабатывает извлеченные соседи, в результате чего получаются матрицы KEYS и VALUE.


Блоки декодера обрабатывают входной текст так же, как GPT. Он применяет внутреннее внимание к токену входа (каузально, поэтому обращает внимание только на предыдущие токены), затем пропускает его через слой FFNN.



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


Только достигнув декодера RETRO, мы начнем включать извлеченную фактическую информацию. Каждый третий блок, начиная с 9, является RETRO-блоком (что позволяет его входу обслуживать соседей). Итак, слои 9, 12, 15…32 — это блоки RETRO.



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


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



Блок декодера RETRO извлекает информацию из ближайших соседей с использованием Chunked Cross-Attention.


Предыдущие работы


Дополнение языковых моделей методами извлечения информации – активно развивающаяся область исследований. Некоторые из предыдущих работ в этой сфере включают:



Авторы


Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Публикации