OpenAI в газетеImproving Language Understanding by Generative Pre-TrainingМодель GPT предлагается в . Модель GPT — это модель, созданная декодером одностороннего преобразователя, и команда OpenAI использовала ее в очень большом наборе данных книг.the Toronto Book CorpusНа нем была проведена неконтролируемая предварительная подготовка.
Затем команда OpenAI предложилаМодель ГПТ-2, модель GPT-2 является преемником модели GPT, обученной с использованием большего обучающего набора, имеет больше параметров и является расширенной версией модели GPT. Обучающая выборка GPT-2 — это 8 миллионов веб-страниц, просканированных исследователями из Интернета, с общим объемом текстовых данных 40 ГБ.Обучающая задача состоит в том, чтобы дать указанное выше и заставить модель предсказывать следующее слово.
Поскольку разница между моделями GPT и GPT-2 заключается в том, что GPT-2 использует больше обучающих данных и увеличивает параметры модели, особой разницы в конкретной структуре нет. Поэтому ниже мы в основном представляем модель GPT-2, которая на самом деле работает лучше.
Основная идея GPT-2
Согласно исследованию, язык обладает гибкой способностью выражения, то есть он может выражать задачу, ввод и вывод в виде строки, и модель может быть обучена с помощью этой формы строки для изучения соответствующей задачи. Например, в задаче перевода обучающий пример можно записать в виде
(translate to french, english text, french text)
Точно так же в задаче на понимание прочитанного обучающий пример можно записать как
(answer the question, document, question, answer)
Более того, можно одновременно обучать модель на обучающих выборках нескольких задач в вышеуказанном формате, чтобы модель приобрела способность выполнять несколько задач одновременно.
Поэтому исследователи OpenAI предполагают, что языковая модель с достаточной мощностью научится рассуждать и выполнять задачи, показанные в обучающих примерах, чтобы лучше предсказывать их. Если языковая модель может это сделать, она эффективно выполняет многозадачное обучение без учителя. Поэтому исследователи решили проверить, так ли это, проанализировав производительность языковой модели на множестве задач, что привело к созданию GPT-2.
И, как они предполагают, GPT-2 хорошо справляется с множеством задач, как показано ниже:
Таким образом, прорыв GPT-2 для других предварительно обученных моделей заключается в том, что он может хорошо выполнять последующие задачи, такие как понимание прочитанного, машинный перевод, ответы на вопросы и обобщение текста, без обучения конкретным нижестоящим задачам. Это также показывает, что, когда модель достаточно велика и данных для обучения достаточно, методы обучения без учителя также могут обучать модели, которые хорошо работают в различных последующих задачах.
Поскольку контролируемое обучение требует больших объемов данных и требует тщательной очистки данных, получение таких данных требует дорогостоящих трудозатрат. Неконтролируемое обучение может преодолеть этот недостаток, потому что оно не требует аннотации человеком и доступно большое количество готовых данных. Это также показывает важность исследования модели GPT-2.
Разобравшись с идеей построения модели GPT-2, давайте подробнее рассмотрим структуру модели GPT-2.
Структура модели GPT-2
Общая структура GPT-2 показана на рисунке ниже.GPT-2 построен на основе Transformer.Он использует метод кодирования пар байтов для предварительной обработки данных и предварительно обучает языковую модель, предсказывая задачу следующего слова. , Начиная с метода предварительной обработки 2, давайте подробно проанализируем GPT-2 шаг за шагом.
кодирование пары байтов
В модели GPT-2 при предварительной обработке данных используется метод Byte Pair Encoding (BPE), способный решить проблему незарегистрированных слов и уменьшить размер словаря. Он сочетает в себе преимущества кодирования на уровне слов и кодирования на уровне символов.Например, мы хотим закодировать следующую строку:
aaabdaaabac
пара байтовaa
имеет наибольшее количество вхождений, поэтому мы заменяем его символом, не используемым в строкеZ
,
ZabdZabac
Z=aa
Затем повторяем процесс, используяY
заменятьab
,
ZYdZYac
Y=ab
Z=aa
продолжить сX
заменятьZY
,
XdXac
X=ZY
Y=ab
Z=aa
Этот процесс повторяется до тех пор, пока ни одна пара байтов не встретится более одного раза. Когда требуется декодирование, описанный выше процесс замены выполняется в обратном порядке.
Ниже приведена реализация алгоритма BPE в исходном тексте алгоритма BPE:
Структура декодера одностороннего трансформатора
Модель GPT-2 состоит из части декодера многослойного одностороннего преобразователя. По сути, это авторегрессионная модель. Значение авторегрессии означает, что после генерации каждого нового слова новое слово добавляется в конец исходное входное предложение как новое Введите предложение. Структура декодера Transformer выглядит следующим образом:
В модели GPT-2 используются только два модуля: маскированное самовнимание и нейронная сеть с прямой связью. Как показано ниже:
Можно видеть, что модель GPT-2 введет предложение в структуру, показанную на рисунке выше, предскажет следующее слово, а затем добавит новое слово в качестве нового ввода для продолжения предсказания. Функция потерь вычисляет отклонение между прогнозируемым значением и фактическим значением.
Из предыдущего раздела мы узнали, что BERT основан на двусторонней структуре трансформатора, а GPT-2 основан на односторонней структуре трансформатора. справа от маскируемых слов при подсчете внимания Влияние слов на него, в то время как GPT-2 учитывает только влияние слов слева от позиции слова как предсказуемое.
Модель GPT-2 обучается с помощью вышеуказанного метода предварительной обработки данных и структуры модели, а также большого объема данных. Из соображений безопасности команда OpenAI не открыла исходный код всех параметров обучения, а предоставила небольшую модель предварительного обучения.Далее мы проведем эксперименты на основе модели предварительного обучения GPT-2.
Генерация текста GPT-2
GPT-2 — это языковая модель, которая может предсказывать следующее слово на основе вышеизложенного, поэтому она может использовать то, чему научилась предварительная подготовка, для генерации текста, например, для генерации новостей. Его также можно настроить с помощью других данных для создания текста определенного формата или темы, например поэзии или драмы. Итак, далее мы проведем эксперимент по генерации текста с моделью GPT-2.
Предварительно обученная модель для генерации новостей
Самый простой способ напрямую запустить предварительно обученную модель GPT-2 — позволить ей работать свободно, т. е. генерировать текст случайным образом. Другими словами, в начале мы даем ему небольшую подсказку, предопределенное начальное слово, и позволяем ему случайным образом генерировать последующий текст самостоятельно.
Но иногда это может быть проблематично, например, модель зацикливается и продолжает генерировать одно и то же слово. Чтобы избежать этого, GPT-2 устанавливаетtop-k
параметр, так что модель будет случайным образом выбирать слово из первых k слов с наибольшей вероятностью в качестве следующего слова. Ниже есть выборtop-k
Реализация функции ,
Модель GPT-2 представлена ниже, и мы будем использовать упакованную в PyTorch-Transformers библиотеку моделей.GPT2Tokenizer()
и GPT2LMHeadModel()
class, чтобы на самом деле увидеть способность GPT-2 предсказывать следующее слово после предварительного обучения. Во-первых, необходимо установить PyTorch-Transformers.
Следующее использованиеGPT2LMHeadModel()
Создайте модель и установите режим модели в режим проверки. Поскольку параметры предобучающей модели очень велики и она размещается во внешней сети, этот эксперимент сначала загружает предобучающую модель с зеркального сервера Blue Bridge Cloud Course, и для локального эксперимента этот шаг не требуется.
После завершения операции мы наблюдаем текст, сгенерированный моделью. Мы видим, что в целом он выглядит как обычный текст. Однако, если присмотреться, в предложениях можно обнаружить логические проблемы. Это также проблема, которую исследователи будет продолжать преодолевать в будущем.
Помимо генерации текста непосредственно из предварительно обученной модели, мы также можем использовать тонкую настройку, чтобы заставить модель GPT-2 генерировать текст с определенным стилем и форматом.
Тонкая настройка для создания драматического текста
Далее мы настроим GPT-2, используя несколько театральных сценариев. Поскольку параметры предварительного обучения модели GPT-2 с открытым исходным кодом командой OpenAI получены после предварительного обучения с набором данных на английском языке, хотя набор данных на китайском языке можно использовать для тонкой настройки, он требует много данных и время, чтобы получить хорошие результаты, поэтому здесь мы используем. Английский набор данных настроен, чтобы лучше продемонстрировать возможности модели GPT-2.
Сначала загрузите обучающий набор данных, здесь мы используем пьесы Шекспира."Ромео и Джульетта"в качестве обучающей выборки. Мы заранее загрузили набор данных и поместили его на сервер Bluebridge Cloud Course, который можно загрузить с помощью следующей команды.!wget -nc "https://labfile.oss.aliyuncs.com/courses/1372/romeo_and_juliet.zip" !unzip -o "romeo_and_juliet.zip"
Выше описан процесс записи купленных курсов,