Читать нас в Telegram
Иллюстратор: Женя Родикова

GPT-2 — нейросеть, которая способна генерировать образцы синтетического текста с вполне логичным повествованием, если задать ей любое начало. На момент релиза в ней было рекордное число параметров — 1,5 млрд против обычных 100-300 млн.

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

Работа с нейросетями-трансформерами показала, что чем больше датасет для обучения — тем лучше результаты, причем без кардинального изменения архитектуры сети. Поэтому одной из целей создания как GPT-2, так и GPT-3, было тестирование, до какого предела можно дойти, увеличивая объем данных для обучения.

История создания

Первая версия GPT (Generative Pre-trained Transformer) от OpenAI появилась еще летом 2018 года. Позже на базе ее исследований и разработок OpenAI выпустили двунаправленную нейросеть BERT, получившую статус state-of-the-art — высшую точку развития технологии на тот момент.

Затем в OpenAI заметили, что выборка массивов текстов из Wikipedia или из литературных произведений — не самая оптимальная для обучения модели. Нейросеть быстрее учится понимать естественную речь на основе простых постов в интернете. Поэтому в 2019 году OpenAI обучили GPT на больших объемах текстов — 8 млн. страниц из интернета.

Чтобы разнообразить входные данные и стили, разработчики использовали обычные форумы. Ссылки на них были взяты из выборки пользователей Reddit, причем обязательно с рейтингом выше среднего (как минимум 3 кармы). Последнее учитывалось, чтобы отбросить рекламные или спам-страницы и оставить только полезные. Новая версия нейросети получила название GPT-2.

В чем особенность

GPT-2 оказалась очередным прорывом OpenAI. Дело в том, что обычно нейросеть такого плана нужно было дообучить под конкретную задачу, чтобы та показывала нужные пользователю результаты, то есть еще раз обучить на специальных текстах после того, как нейросеть уже обучена на общих.

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

Особенность GPT-2 в том, что она сразу показала отличные результаты, близкие к state-of-the-art без дообучения. Сразу после обучения нейросеть уже готова сгенерировать текст со всеми логическими вставками: повторное упоминание имен героев, цитаты, отсылки, выдержка одного стиля на протяжении всего текста, связанное повествование. То есть примерно как человеку, ей было понятно, в чем суть задания, просто по его виду: если есть пропуски — дописать их, задают вопрос — попытаться ответить и т.д.

Как обучали GPT-2?

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

В процессе обучения нейросети выяснилось, что она может не только генерировать текст, но и ответить на пользовательские вопросы, главное задать этот вопрос в формате, понятном для сети. Например, можно дать модели отрывок «Солнце — это…», и GPT-2 продолжит фрагмент, дав вполне логичный ответ, так как обычно после конструкции «… — это» в живой речи идет пояснение.

Этот процесс дописывания ответа для сети не отличим от прошлого сценария — генерирования продолжения текста. Но для пользователя это выглядит уже как ответ на вопрос, который он не знал.
Однако если скормить сети на входе вопрос «Что такое Солнце?», то результат будет не тем, что ожидал человек, потому что сеть учитывает стиль заданного начала. И если на входе подать фрагменты «Я как ученый думаю, что Солнце — это…» и «Я ребенок и думаю, что Солнце — это…», результаты будут разительно отличаться: в первом случае ответ будет как бы от лица ученого, во втором — от лица ребенка.

Примеры сгенерированных GPT-2 текстов есть в блоге компании OpenAi.

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

В OpenAI считают, что с обычными темами GPT-2 способна генерировать нормальный логичный текст в 50% случаев. Однако модель всегда можно донастроить, например, на базе отзывов с Amazon, чтобы та смогла сгенерировать такие же, похожие на человеческие.

В работе GPT-2 иногда случаются сбои. Иногда сеть выдавала повторные куски текста, иногда происходили сбои моделирования мира, в котором происходит действие: к примеру, сеть выдавала рассказ, где под водой вдруг происходит пожар.

Также иногда GPT-2 переключалась с темы на тему, при этом между ними не было никакой связи и логическое повествование терялось. Все же GPT-2 — это алгоритм, а не живой человек, способный к простым логическим выводам типа «вода и огонь несовместимы».

Что еще умеет GPT-2

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

  1. краткий пересказ текста или обобщение.
    В качестве входных данных нужно подать не просто фрагмент, а целый текст, состоящий из хотя бы пары абзацев (но лучше — страниц). Если в конце добавить «TL;DR», модель выдаст краткое содержание рассказа. Почему так происходит? Нейросеть обучалась на обычных интернет-ресурсах, где такими символами обозначают краткое содержание постов; TL;DR — это англоязычное сокращение от too long; didn’t read (слишком длинно, не читал).
  2. ответы на вопросы исходя из содержания текста.
    На входе подается несколько примеров в виде «Вопрос-Ответ», в конце же дается реальный вопрос, на который нейросеть выдает по тому же макету ответ. Например, сеть получает на входе абзац вида: «Вопрос: <определенный вопрос>. Ответ: <ответ на него>». И в конце нужный вопрос без ответа: «Вопрос: <вопрос>. Ответ: …». На месте пропуска сеть выдает результат. Модель распознала структуру документа и на выходе подавала похожее заданному.
  3. перевод текстов.
    Механизм работы с переводами похож на механизм работы с ответами на вопросы. Главное — подать модели правильное начало, то есть нужную структуру текста. В оригинале GPT-2 подавали фрагменты в виде «hello- = привет» и так далее, используя английский и французский. В итоге, когда в конце была фраза «cat = …», нейросеть, следуя логике, выдала «кошку».

GPT-2 также может помочь в следующих областях:

  • создание помощников по написанию AI
  • улучшенные диалоговые агенты
  • улучшение систем распознавания речи.

Почему OpenAI отказались сразу выложить полную версию GPT-2

По утверждениям разработчиков, нейросеть оказалась настолько мощной, что авторы отказались сразу выкладывать полную версию в открытый доступ. Они объясняли свое решение тем, что полная версия GPT-2 слишком хорошо создает свои тексты и иногда их не отличить от реальных. OpenAI посчитали, что это может привести к негативным последствиям.Если дообучить GPT-2, то она сможет делать следующие вещи:

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

На Reddit была длинная дискуссия, где пользователи обсуждали ограничение доступа к модели и предлагали переименовать OpenAI в ClosedAI (из-за этого и других случаев). Сами же разработчики посчитали свое решение верным. Сначала они выложили уменьшенную версию модели со 117 млн. параметров и пообещали, что рассмотрят поэтапное выкладывание полной версии модели в общий доступ. Они свое обещание сдержали, но полную версию пользователи получили лишь в ноябре 2019 года.

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

В мае 2020 года был представлен алгоритм третьей версии модели. GPT-3 обучена уже на 175 млрд. параметров, и ее возможности возросли. Разработчики провели опрос, стараясь узнать, могут ли участники отличить написанный текст машиной от человеческого, и результаты показали, что уровень доверия к генератору текстов возрос.

О GPT-3 мы расскажем в одном из следующих материалов «Системного Блока».

Источники