Трансформеры

Вы ошеломлены количеством моделей трансформаторов и не имеете ни малейшего представления о сходствах и различиях между ними? Что ж, вы пришли в нужное место. В этом рассказе дается обзор современных моделей трансформаторов и их взаимосвязи.

Этот рассказ организован следующим образом. В разделе 1 я дам краткое введение в предмет. В разделе 2 я объясню несколько концепций машинного обучения, которые помогут вам лучше понять модель Transformer и ее варианты. В разделе 3 я расскажу вам о нейронном машинном переводе и о том, как это было сделано до Transformer. В разделе 4 я расскажу о механизме внимания и о том, как он был изобретен. В Разделе 5 я подробно объясню модель Transformer и ее части. В Разделе 6 я перечислю различные задачи, которые используют Transformer. И, наконец, в разделе 7 я рассмотрю несколько вариантов Transformer, объясню их сходства и различия, а также в какой задаче они должны использоваться. Рассказ завершается в разделе 8.

1. Введение

Что касается обработки естественного языка (НЛП), за последние 20 лет был достигнут большой прогресс. От статистического НЛП, основанного на сложных рукописных правилах, до репрезентативного обучения и машинного обучения в стиле глубокой нейронной сети, достижения самых современных результатов во многих задачах НЛП - технология доступна сейчас как никогда. Последние достижения в области НЛП включают Transformer - новую архитектуру нейронной сети, способную решать многие задачи НЛП. Хоть эти модели и большие, разобраться в них не так уж и сложно. Но прежде чем мы погрузимся в реальные модели, давайте рассмотрим основы.

2. Предпосылки машинного обучения

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

Выбор модели

Помимо параметров, которые модель изучает, у каждой модели есть гиперпараметры, которые необходимо установить заранее. Выбор оптимальных гиперпараметров обычно осуществляется путем: 1) разделения набора данных на соотношение 60% / 20% / 20% (или наборов для обучения / проверки / тестирования), 2) фиксации гиперпараметров и обучения модели с использованием набора поездов, 3 ) оценка производительности на проверочном наборе; 4) шаги 2) и 3) повторяются до тех пор, пока не будет получен лучший набор гиперпараметров; 5) окончательная производительность модели будет отражена в тестовом наборе.

Функции активации

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

Одной из таких функций является функция активации ReLU (Rectified Linear Unit).

Помимо нелинейности, это помогает улучшить сходимость глубоких нейронных сетей.

Другой - GELU (линейная единица измерения гауссовской ошибки).

Он сочетает в себе ReLU, Dropout и Zoneout в одной функции активации.

Регуляризация

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

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

Рекуррентные нейронные сети используют Zoneout. Он работает аналогично Dropout, но вместо удаления сохраняет некоторые скрытые объекты.

Классификация

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

Однако для общей задачи классификации мы будем использовать функцию softmax, которая выводит распределение вероятностей по классам.

Репрезентативное обучение

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

3. Нейронный машинный перевод.

В отличие от статистических систем перевода на основе фраз, нейронный машинный перевод использует нейронные сети для повышения производительности перевода, отсюда и слово «нейронный» в его названии. Но не все нейронные сети подходят для таких задач. Одним из конкретных типов нейронной сети, которая используется в нейронном машинном переводе, является рекуррентная нейронная сеть (RNN) и ее улучшенные варианты, такие как Long Sort-Term Memory (LSTM) [1] и Gated Recurrent Unit (GRU). [2]

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

Архитектура модели

Большинство моделей, используемых для нейронного машинного перевода, имеют архитектуру кодер-декодер. [3] И кодер, и декодер в большинстве архитектур являются RNN. Причина использования двух RNN (кодировщика и декодера) вместо одной (только кодировщика) заключается в том, что использование только одной RNN не может применяться к проблемам, в которых входные и выходные последовательности имеют разную длину и имеют немонотонные отношения. Кроме того, вместо RNN используются LSTM, потому что они могут захватывать долгосрочные временные зависимости. Затем оба компонента настраиваются совместно.

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

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

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

4. Внимание

Впервые представленный в [4], перевод работает следующим образом.

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

Затем список векторов внедрения передается через кодировщик двунаправленной RNN (BiRNN). BiRNN состоит из двух RNN, работающих отдельно. Прямая RNN кодирует список в исходном порядке. Обратная RNN кодирует список в обратном порядке.

Наконец, скрытое состояние прямой RNN и скрытое состояние обратной RNN для каждого входного вектора объединяются, создавая так называемые аннотации.

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

В декодере выходное предложение также разбивается на токены, и каждый токен встраивается.

Затем для каждого вектора внедрения декодер создает свой вектор контекста.

А вот и внимание.

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

Наконец, как вектор контекста, так и предыдущий выходной вектор проходят через декодер RNN для предсказания следующего выходного токена.

5. Трансформатор

Как модель нейронного машинного перевода, преобразователь [5] следует той же архитектуре кодер-декодер, но вместо RNN его части немного отличаются.

Кодер и декодер состоят из нескольких уровней.

Каждый уровень в кодировщике имеет два подуровня: 1) самовнимание с несколькими головками и 2) точечную полностью подключенную нейронную сеть с прямой связью. Поверх каждого подслоя есть нормализация слоя.

Уровни декодера аналогичны, с двумя дополнениями: 1) внимание кодера-декодера, которое находится между двумя подуровнями, упомянутыми ранее, и 2) самовнимание с несколькими головками маскируется.

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

Сначала я объясню каждый из подуровней, а затем расскажу о потоке данных в этой архитектуре.

Слои

Давайте посмотрим на подуровни, общие для кодировщика и декодера.

Встраивания
В этот слой вводится список токенов (например, [«Привет», «мир», «!»]).

Для каждого токена просматривается таблица поиска и извлекается соответствующий вектор внедрения.

Результатом этого слоя является матрица X сгруппированных векторов вложения.

Позиционное кодирование
Входными данными для этого уровня является матрица X сгруппированных векторов внедрения.

К X добавляется матрица, содержащая позиционную информацию.

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

Результатом этого слоя является матрица, полученная в результате суммирования.

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

Самовнимание с несколькими головами
Входными данными для этого подслоя является матрица X из слоя ниже.

Первоначально матрица X состоит из составных векторов внедрения с добавленным позиционным кодированием.

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

Затем матрицы Q и K: 1) умножаются для получения оценок внимания, 2) масштабируются для стабилизации градиентов и 3) результирующая матрица передается через функцию softmax (применяется построчно). Выходные вероятности функции softmax используются для масштабирования матрицы V, в результате чего получается выходная матрица Z. Это самовнимание. Название происходит от того факта, что мы позволяем каждому токену соответствовать другим токенам в предложении.

Разумно думать, что один токен будет заботиться о себе больше, чем о других. Вот где в игру вступает мультиголовка. Матрицы Q, K и V проецируются в h различных подпространств с использованием разных наборов матриц WQ, WK и WV. Затем к каждому подпространству применяется самовнимание. Полученные h матриц затем объединяются и умножаются на еще одну матрицу, WO, которая дает окончательную выходную матрицу, Z. Последнее умножение необходимо для сохранения выходной размерности.

Результатом этого слоя является результирующая матрица Z.

Существует четыре причины использования слоев самовнимания в отличие от повторяющихся (или даже сверточных) слоев: 1) Общая вычислительная сложность для каждого слоя - слои самовнимания быстрее, чем повторяющиеся слои, когда длина последовательности меньше размерности представления ( что чаще всего имеет место),
2) Объем вычислений, которые можно распараллелить,
3) Длина пути между зависимостями дальнего действия в сети - Слой самовнимания связывает все позиции с константой количество последовательно выполняемых операций, в то время как для повторяющегося уровня требуется O (n) последовательных операций, и
4) Интерпретируемость - не только отдельные лица, отвечающие за внимание, явно учатся выполнять разные задачи, но многие также проявляют поведение, связанное с синтаксическая и семантическая структура предложений.

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

Поточечная полностью подключенная нейронная сеть с прямой связью
Входом в этот подуровень является матрица Z из подуровня ниже.

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

Результатом этого слоя является преобразованная матрица Z.

Это позволяет модели создавать композиции между составными частями предложения.

Нормализация слоя
Входными данными для этого подуровня являются две матрицы: X, входная матрица для нижележащего подслоя, и Z, выходная матрица из нижележащего подслоя.

Он реализован как остаточная сеть. Матрицы суммируются и нормализуются.

Результатом этого слоя является матрица, полученная в результате нормализованного суммирования.

Это помогает за счет повышения скорости и устойчивости поезда.

Давайте посмотрим на подслои, относящиеся к декодеру.

Маскированное самовнимание с несколькими головами
Единственная разница между маскированным самовниманием с несколькими головами и самовниманием с несколькими головами состоит в том, что верхняя треугольная матрица с записями -inf, M , добавляется к оценкам внимания.

Это не позволяет декодеру обращаться к будущим токенам.

Внимание кодировщика-декодера
Единственное различие между вниманием кодировщика-декодера и самовниманием нескольких головок состоит в том, что матрицы Q и K инициализируются из последнего уровня кодера и Матрица V инициализируется из уровня ниже.

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

Линейный слой и Softmax
Входными данными для этого уровня является матрица Z из последнего уровня декодера, которая выводит распределение вероятностей по выходному словарю.

Поток данных

Я рассмотрю эту часть на примере.

Давайте рассмотрим предложение "Hello World!" на английском языке, и мы хотели бы использовать трансформатор, чтобы перевести его на французский. Предположим, что трансформер уже обучен переводить текст с английского на французский.

Сначала предложение разбивается на токены: [«Привет», «Мир», «!»].

Во-вторых, каждый из токенов встраивается, а позиционные кодировки добавляются к векторам.

В-третьих, объединенные векторы проходят через каждый уровень кодировщика.

На этом фаза кодировщика завершена.

Матрицы Q и K из последнего уровня кодера используются для инициализации матриц Q и K в каждом подуровне внимания кодер-декодер декодера.

Специальный маркер [BOS] (начало последовательности) проходит через декодер таким же образом, как и кодировщик: сначала маркер внедряется, а позиционное кодирование добавляется к вектору, а во-вторых, он проходит через каждый уровень. декодера.

Декодер выдаст слово «Bonjour».

Затем мы берем оба токена, [[BOS], «Bonjour»], и снова повторяем процесс в декодере. Это выведет слово «le». Здесь мы видим, почему мы не хотим обращать внимание на будущие токены (потому что мы их еще не перевели).

Мы делаем это до тех пор, пока декодер не выдаст специальный токен [EOS] (конец последовательности), означающий, что последовательность была успешно транслирована.

Если преобразователь не был обучен, выходными данными будет случайное слово, и нам необходимо выполнить обратное распространение и обновить параметры модели для каждой пары последовательностей в нашем обучающем наборе. Чтобы ускорить процесс, мы могли бы использовать пакетную обработку, при которой вместо одного предложения мы переводим несколько предложений за раз, однако для того, чтобы это удалось, длина последовательностей должна совпадать. Поэтому мы добавляем специальные жетоны [PAD]. для увеличения длины более короткой последовательности.

6. Задачи

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

Авторегрессионные модели

  • В этих моделях используется только декодер.
  • Они используются для генерации текста.
  • Модели: GPT

Модели автокодирования

  • В этих моделях используется только кодировщик.
  • Они используются для классификации предложений.
  • Модели: BERT, RoBERTa, DistilBERT

Модели от последовательности к последовательности

  • Эти модели используют как кодировщик, так и декодер.
  • Они используются для перевода, обобщения или ответов на вопросы.
  • Модели: BART, mBART

Первоначальный преобразователь представляет собой модель «последовательность-последовательность».

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

Лента новостей

06/2018 - GPT
05/2019 - BERT
07/2019 - RoBERTa
10/2019 - BART
01/2020 - mBART
03/2020 - DistilBERT

7. Модели

GPT - Улучшение понимания языка с помощью генеративного предварительного обучения

GPT был разработан OpenAI и опубликован в июне 2018 года. [6] Он был разработан для предварительного обучения языковой модели. Он использует многослойный декодер Transformer.

Фреймворк состоит из двух этапов: 1) предварительное обучение и 2) тонкая настройка. Для предварительного обучения используется стандартная языковая модель моделирования. Для точной настройки модель инициализируется с предварительно обученными параметрами и настраивается на различные задачи.

GPT эффективен при тонкой настройке для классификации текста, определения следствия, оценки семантического сходства и ответов на вопросы.

Есть модель одного размера с 12 слоями, размером 768 и 12 головами внимания.

Разница между GPT и исходным Transformer заключается в следующем: 1) он использует функции активации GELU вместо ReLU и 2) он добавляет изученные позиционные вложения вместо синусоидальных.

Вход

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

Используются три специальных маркера: 1) [START] добавляется в начале последовательности, 2) [SEP] добавляется между маркерами двух предложений и 3) [END] добавляется в конце последовательности.

Пример: [«Hello World!», «How are you?»] Преобразуются в: [[START], «Hello», «World», «!», [SEP], «How», «are», « ты »,«? », [КОНЕЦ]]

Затем встраиваются токены и добавляется изученная позиционная кодировка.

Предварительная подготовка

GPT был предварительно обучен с помощью BookCorpus.

Языковая модель

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

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

Тонкая настройка

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

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

Определение перехода
Для этой задачи предпосылка P и гипотеза H объединяются:
[[START], P, [SEP], H, [END] ],
последовательность обрабатывается моделью, а выходные активации модели передаются на линейный слой.

Оценка семантического сходства
Для этой задачи два предложения, A и B, объединяются в обоих порядках:
[[START], A, [SEP], B, [ END]] и
[[START], B, [SEP], A, [END]],
каждая последовательность обрабатывается моделью независимо, и выходные активации модели суммируются перед передачей их в линейный слой.

Ответ на вопрос
Для этой задачи контекстный документ C и каждый возможный ответ Ai объединяются:
[[START], C, [SEP], A1, [КОНЕЦ]],
[[НАЧАЛО], C, [SEP], A2, [КОНЕЦ]] и
[[НАЧАЛО], C, [SEP], A3, [КОНЕЦ]],
каждая последовательность обрабатывается моделью независимо, а выходные активации модели передаются на линейный слой. Выходные данные линейного слоя нормализованы для получения распределения по ответам.

BERT - Предварительная подготовка глубоких двунаправленных преобразователей для понимания языка

BERT был разработан Google AI и опубликован в мае 2019 года. [7] Он был разработан для предварительного обучения глубоких двунаправленных представлений. Он использует двунаправленный энкодер Transformer.

Фреймворк состоит из двух этапов: 1) предварительное обучение и 2) тонкая настройка. Для предварительного обучения он использует цель модели замаскированного языка и задачу прогнозирования следующего предложения. Для точной настройки модель инициализируется с предварительно обученными параметрами и настраивается на различные задачи.

BERT эффективен, когда он настроен для ответов на вопросы и языкового вывода.

Существует два размера моделей: 1) BERT Base (для сравнения с GPT) и 2) BERT Large. BERT Base имеет 12 слоев, размер 768, и 12 головок внимания - параметры 110M. BERT Large имеет 24 слоя размером 1024 и 16 головок внимания - параметры 340M.

Вход

Входными данными для модели является список токенов из одного или двух предложений, A и B, объединенных вместе.

Используются два специальных токена: 1) [CLS] добавляется в начале последовательности, и его окончательное скрытое состояние соответствует агрегированному представлению последовательности, используемому для классификации, и 2) [SEP] добавляется между токенами двух предложений.

Пример: [«Hello World!», «How are you?»] Преобразуются в: [[CLS], «Hello», «World», «!», [SEP], «How», «are», « ты", "?"]

Затем токены встраиваются с помощью встраивания WordPiece. Перед позиционным кодированием добавляется заученное вложение для каждого токена, показывающего, принадлежит ли он предложению A или предложению B.

Предварительная подготовка

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

Маскированная языковая модель
Вместо того, чтобы предсказывать следующее слово, используя модель с письмом слева направо или справа налево (или даже их неглубокую конкатенацию), BERT делает это, используя процедура Cloze или маскированная языковая модель (MLM). Таким образом, полученная модель является двунаправленной.

Маскирование выполняется путем замены 15% входных токенов 1) токеном [MASK] в 80% случаев, 2) случайным токеном в 10% случаев или 3) неизменным в 10% случаев. Причина в том, что токен [MASK] не появляется при тонкой настройке модели. Это устраняет несоответствие между предварительным обучением и точной настройкой.

Окончательные скрытые векторы для токенов [MASK] проходят через нейронную сеть с прямой связью + функцию softmax, чтобы получить распределение вероятностей по словарю.

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

Обучающие данные создаются путем взятия двух предложений A и B из одноязычного корпуса таким образом, что: 1) предложение B следует после предложения A в 50% случаев и 2) предложение B является случайным предложением в 50% случаев.

Представление токена [CLS] используется для классификации.

Тонкая настройка

BERT был настроен на выполнение 11 задач НЛП, давая самые современные результаты по всем из них.

Ответ на вопрос
Для этой задачи вопрос Q и отрывок P объединяются:
[[CLS], Q, [SEP], P],
последовательность обрабатывается моделью, и выходные активации модели передаются на два линейных слоя. Первый линейный уровень предсказывает начальный маркер, а второй линейный уровень предсказывает конечный маркер диапазона ответа в отрывке. Выходы линейных слоев нормализуются с помощью функции softmax, и используются начальный и конечный токены с наивысшими вероятностями. Их соответствующие выходные данные линейного слоя суммируются, давая оценку для прогнозируемого диапазона.

Для случая, когда отрывок не содержит ответа, получают две оценки: 1) для ненулевого диапазона (то же, что и выше) и 2) для нулевого диапазона (токен [CLS] проходит через оба линейных уровня и выходы суммируются). Модель предсказывает ненулевой диапазон, если его оценка выше, чем нулевой диапазон + порог (гиперпараметр, выбранный с помощью набора проверки).

Понимание языка
Для этой задачи два предложения, A и B, объединяются:
[[CLS], A, [SEP], B],
последовательность обрабатывается моделью, а представление для токена [CLS] передается на линейный уровень. Выход линейного слоя нормализуется с помощью функции softmax, и используется класс с наибольшей вероятностью.

Вывод здравого смысла
Для этой задачи предложение S и возможное продолжение Ci объединяются:
[[CLS], S, [SEP], C1] ,
[[CLS], S, [SEP], C2] и
[[CLS], S, [SEP], C3],
каждая последовательность обрабатывается моделью независимо. а представление токена [CLS] передается на линейный уровень. Результаты нормализуются для получения распределения по продолжениям.

RoBERTa - надежно оптимизированный подход к обучению BERT

RoBERTa был разработан Facebook AI и опубликован в июле 2019 года. [8] Это повторное исследование предварительного обучения BERT, которое тщательно измеряет влияние многих ключевых гиперпараметров и размера обучающих данных.

Модификации включают: 1) более длительное обучение модели, с большими пакетами данных, с большим количеством данных, 2) удаление цели прогнозирования следующего предложения, 3) обучение на более длинных последовательностях и 4) динамическое изменение шаблона маскировки, применяемого к обучающим данным.

Вклады RoBERTa: 1) набор важных вариантов дизайна BERT, а также обучающих стратегий и альтернатив, которые приводят к повышению производительности последующих задач, 2) использование нового набора данных, который подтверждает, что использование большего количества данных для предварительного обучения дополнительно улучшает производительность на низком уровне. -stream задачи, 3) улучшения в обучении, которые показывают, что предварительное обучение языковой модели с маской при правильном выборе дизайна конкурирует со всеми другими недавно опубликованными методами.

Приведенные ниже методы были исследованы с использованием повторной реализации конфигурации BERT Base.

Анализ процедуры обучения

Статическое и динамическое маскирование
BERT выполнял маскирование во время предварительной обработки - каждый обучающий экземпляр дублировался 10 раз и маскировался 10 различными способами. RoBERTa использует динамическое маскирование - шаблон маскирования был сгенерирован до того, как последовательность будет загружена в модель. Лучшие результаты и дополнительные преимущества эффективности способствуют использованию динамического маскирования.

Формат ввода модели и прогнозирование следующего предложения
BERT обнаружил конкатенацию двух сегментов документа (взятых непрерывно из одного документа или из разных документов). Модель была обучена предсказывать, происходят ли наблюдаемые сегменты из одних и тех же или разных документов, с помощью потери предсказания следующего предложения (NSP). RoBERTa сравнила несколько форматов обучения: 1) пара сегментов + NSP, 2) пара предложений + NSP, 3) полные предложения и 4) предложения-документы. Результаты показывают улучшение при использовании формата Full-Sentences без потери NSP.

Обучение с использованием больших пакетов
Использование больших мини-пакетов может улучшить как скорость оптимизации, так и производительность конечных задач, если скорость обучения увеличивается соответствующим образом. BERT Base был обучен для 1 миллиона шагов с размером пакета 256 последовательностей. Это эквивалентно обучению для 125K шагов с размером пакета 2K последовательностей или обучению для 31K шагов с размером пакета 8K последовательностей. RoBERTa использует пакеты последовательностей 8K.

Кодирование текста
BERT использует словарь кодирования пар байтов (BPE) на уровне символов размером 30 КБ, тогда как RoBERTa использует более крупный словарь BPE на уровне байтов размером 50 КБ единиц подслова без какой-либо дополнительной предварительной обработки или токенизация ввода.

Данные

Наличие большого количества текста для предварительного обучения улучшает выполнение конечных задач. Для RoBERTa было рассмотрено пять языковых корпусов. Всего было использовано 160 ГБ несжатого текста: 1) BookCorpus + английская Википедия (16 ГБ), 2) CC-News из английской части набора данных CommonCrawl News (76 ГБ), 3) OpenWebText, версия OpenWebText с открытым исходным кодом. WebText (38 ГБ) и 4) Истории, подмножество CommonCrawl, которое соответствует стилю историй схем Винограда (31 ГБ).

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

DistilBERT - дистиллированная версия BERT: меньше, быстрее, дешевле и легче

DistilBERT был разработан Hugging Face и опубликован в марте 2020 года. [9] Он был разработан для предварительного обучения более мелкой модели представления языка общего назначения.

DistilBERT использует извлечение знаний во время предварительного обучения и показывает, что можно уменьшить размер BERT на 40%, сохранив при этом 97% возможностей понимания языка и работая на 60% быстрее.

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

Кистилляция знаний

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

При обучении с учителем цель обучения модели классификации сводит к минимуму перекрестную энтропию между предсказанным распределением модели и эмпирическим эмпирическим распределением обучающих меток. При извлечении знаний простое эмпирическое распределение заменяется мягкими целевыми вероятностями учителя. Кроме того, вместо стандартного Softmax студент использует Softmax-temperature (логиты делятся на константу T) для сглаживания выходного распределения. В выводе T = 1. Это называется потерями при перегонке.

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

Дистиллированная версия BERT

Студенческая архитектура
DistilBERT имеет ту же общую архитектуру, что и BERT, однако количество слоев сокращается в 2 раза.

Инициализация учащегося
Инициализация учащегося осуществляется путем взятия всех остальных слоев у учителя.

Дистилляция
Были использованы те же методы предварительного обучения, что и в RoBERTa: 1) большие пакеты, 2) динамическое маскирование и 3) удаление цели прогнозирования следующего предложения.

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

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

BART был разработан Facebook AI и опубликован в октябре 2019 года. [10] Он был разработан для предварительного обучения модели от последовательности к последовательности. Он использует стандартную архитектуру Transformer (BERT - двунаправленный кодировщик + GPT - декодер слева направо).

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

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

Доступны модели двух размеров: 1) BART Base и 2) BART Large. BART Base имеет 12 слоев (6 в кодировщике и 6 в декодере), размер 768 и 12 головок внимания. BART Large имеет 24 слоя (12 в кодировщике и 12 в декодере), размер 1024 и 16 головок внимания.

BART использует стандартную архитектуру преобразователя «последовательность-последовательность», однако использует функции активации GELU вместо ReLU (как GPT).
Кроме того, архитектура тесно связана с BERT, со следующими отличиями: 1) каждый уровень декодер дополнительно выполняет перекрестное внимание над последним скрытым слоем кодера (как в модели преобразования последовательности в последовательность), и 2) BART не использует нейронную сеть с прямой связью для предсказания слов (тогда как BERT использует).

Вход

Для предварительного обучения вводом в модель является зашумленная версия исходного ввода. Для точной настройки ввод зависит от задачи (поясняется ниже).

Предварительная подготовка

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

Маскирование токенов
Случайные токены заменяются токенами [MASK].
Удаление токенов
Случайные токены удаляются из входной последовательности. < br /> Заполнение токенов
Случайные промежутки токенов заменяются одним токеном [MASK].
Перестановка предложений
Документ разделен на предложения (на основе точек), и эти предложения перемешиваются.
Чередование документов
Выбирается случайный токен, и предложение меняется так, чтобы оно начиналось с этого токена.

Тонкая настройка

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

Задачи классификации последовательностей
Для этой задачи в кодировщик и декодер подается один и тот же ввод. Вместо использования токена [CLS] для классификации, BART добавляет дополнительный токен в конце, и окончательное скрытое состояние окончательного декодера для этого токена передается в новый мультиклассовый линейный классификатор.

Задачи классификации токенов
Для этой задачи в кодировщик и декодер подается один и тот же ввод. Верхнее скрытое состояние декодера используется как представление для каждого слова. Представление используется для классификации токена.

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

Машинный перевод
Для этой задачи BART использует дополнительные слои преобразователя, которые обучены переводить иностранный язык на английский с шумом. Эти слои заменяют слой внедрения кодировщика и обучаются в два этапа: 1) они замораживают большинство параметров BART и обновляют только исходный кодировщик, позиционные вложения и матрицу входной проекции с самовниманием первого слоя кодировщика, и 2) обучить все параметры модели за небольшое количество итераций.

mBART - предварительное обучение многоязычному устранению шумов для нейронного машинного перевода

mBART был разработан Facebook AI и опубликован в январе 2020 года. [11] Он был разработан для предварительного обучения модели от последовательности к последовательности, предварительно обученной на крупномасштабных одноязычных корпусах на многих языках с использованием цели BART.

Фреймворк состоит из двух этапов: 1) предварительное обучение и 2) тонкая настройка. Для предварительного обучения полная модель авторегрессии обучается с целью шумит и реконструирует полные тексты на многих языках. Для точной настройки модель инициализируется предварительно обученными параметрами, которые можно использовать для любой из языковых пар как в контролируемых, так и в неконтролируемых настройках.

Кроме того, mBART обеспечивает новые типы передачи: 1) тонкая настройка одной языковой пары создает модель, которая может переводить со всех других языков на целевой язык без дополнительного обучения, и 2) языки, не входящие в состав предварительной подготовки, могут извлечь выгоду из mBART, предполагая, что инициализация частично универсальна для языка.

mBART эффективен для решения широкого круга задач машинного перевода (МП).

mBART использует размер модели BART Large.

mBART использует только два типа шумовых функций: 1) удаляет фрагменты текста и заменяет их токеном [MASK] и 2) разрешает порядок предложений в каждом экземпляре.

Вход

Выбирается специальный токен [LID], который обозначает идентификатор языка. Затем из соответствующего корпуса отбирается множество последовательных предложений, пока не будет достигнута граница документа или максимальная длина токена. Предложения в экземпляре разделяются концом предложения, [S], токеном. Затем добавляется токен [LID], представляющий конец экземпляра. Обучение работе с несколькими предложениями помогает переводить как предложения, так и документы.

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

Предварительная подготовка

mBART предварительно обучен с использованием 25 языков из набора данных Common Crawl. Корпус был перебалансирован путем увеличения / уменьшения выборки. Различные уровни многоязычия были измерены путем обучения нескольких моделей: 1) mBART25 - модель, предварительно обученная на всех 25 языках, 2) mBART06 - модель, предварительно обученная на 6 европейских языках, 3) mBART02 - двуязычные модели, предварительно обученные на английском языке и одна другой язык, 4) БАРТ-Эн / Ро - базовая модель.

Тонкая настройка

mBART был настроен для решения двух основных задач: 1) МП на уровне предложений и 2) МП на уровне документов.

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

Для МП на уровне документа использовалась та же схема тонкой настройки, что и для МП на уровне предложений. Однако для декодирования исходные предложения упаковываются в блоки, и каждый экземплярный блок транслируется с авторегрессией. Модель не знает, сколько предложений нужно сгенерировать заранее, и декодирование останавливается, когда предсказывается [LID]. Размер луча по умолчанию равен 5.

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

8. Заключение

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

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

использованная литература

[1] Хохрайтер, Зепп и Юрген Шмидхубер. «Долговременная кратковременная память». Нейронные вычисления 9.8 (1997): 1735–1780.
[2] Cho, Kyunghyun, et al. «Изучение представлений фраз с использованием кодировщика-декодера RNN для статистического машинного перевода». Препринт arXiv arXiv: 1406.1078 (2014).
[3] Суцкевер, Илья, Ориол Виньялс и Куок В. Ле. «Последовательность для последовательного обучения с помощью нейронных сетей». Достижения в области нейронных систем обработки информации. 2014.
[4] Богданау, Дмитрий, Кёнхён Чо и Йошуа Бенжио. «Нейронный машинный перевод путем совместного обучения согласованию и переводу». Препринт arXiv arXiv: 1409.0473 (2014).
[5] Vaswani, Ashish, et al. «Внимание - это все, что вам нужно». Достижения в области нейронных систем обработки информации. 2017.
[6] Рэдфорд, Алек и др. «Улучшение понимания языка с помощью генеративного предварительного обучения». (2018).
[7] Девлин, Джейкоб и др. «Берт: Предварительная подготовка глубоких двунаправленных преобразователей для понимания языка». Препринт arXiv arXiv: 1810.04805 (2018).
[8] Лю, Иньхан и др. «Роберта: надежно оптимизированный подход к предтренировке Берта». Препринт arXiv arXiv: 1907.11692 (2019).
[9] Сан, Виктор и др. «DistilBERT, дистиллированная версия BERT: меньше, быстрее, дешевле и легче». Препринт arXiv arXiv: 1910.01108 (2019).
[10] Льюис, Майк и др. «Барт: устранение шума от последовательности к последовательности, предварительное обучение для генерации, перевода и понимания естественного языка». Препринт arXiv arXiv: 1910.13461 (2019).
[11] Лю, Иньхан и др. «Предварительное обучение многоязычному шумоподавлению для нейронного машинного перевода». Труды Ассоциации компьютерной лингвистики 8 (2020): 726–742.