Генерация синтетических данных в НЛП с использованием предварительно обученной языковой модели GPT-2

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

Некоторые из существующих подходов и проблем

Прошлые работы в этой области были сосредоточены на замене синонимами определенных специальных типов слов в грамматике с использованием подходов WordNet, Word2Vec и т. д. Такие подходы служат хорошей отправной точкой, но не добавляют ценности нашим моделям с точки зрения обеспечения изменчивости. Кроме того, эти системы очень хрупкие по своей природе. Например, WordNet имеет фиксированный набор слов и часто приводит к Out-of-Vocabulary, тогда как обработка ближайшего соседа из предварительно обученного Word2Vec как синонима не всегда дает желаемые результаты на практике. Например — Ближайший сосед слова удивительныйпаук. И это тоже в каком-то смысле правильно, учитывая, что Удивительный Человек-Паук — это фильм.

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

Сегодня в этом блоге мы увидим, как мы можем использовать GPT2 для высококачественного увеличения текста.

Прежде чем мы перейдем к коду и методологии, я хотел бы уделить некоторое время объяснению GPT-2 в одном или двух абзацах. GPT-2 заслуживает отдельного блога, для которого вы можете подписаться на The Illustrated GPT-2 (Visualizing Transformer Language Models)

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

GPT-2 — это, по сути, сложная языковая модель, основанная на Transformer Architecture и обученная на 40 ГБ веб-текста. Это стек из нескольких блоков декодера, расположенных друг над другом, с некоторыми передовыми концепциями обучения, такими как Маскированное собственное внимание, Несколько головок, Остаточные соединения, Нормализация уровня и т. д. Языковая модель GPT-2 пытается оптимизировать, чтобы по существу предсказать следующее слово в данной последовательности, увидев прошлые слова. Рисунок ниже, т.е. заимствованный из The Illustrated GPT-2 (Visualizing Transformer Language Models), визуально дает четкую картину —

Здесь текст зеленого цвета выступает в качестве префикса, который после появления подсказки ($) модель начинает генерировать по одному слову авторегрессивным способом до тех пор, пока не будет достигнут конец токена. Функция автозаполнения на смартфонах, автозаполнение в Gmail, по сути, построена на аналогичных концепциях.

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

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

Набор данных

Мы будем использовать Набор данных спама по электронной почте для целей наших экспериментов. . У нас есть ~ 5500 образцов в нашем наборе данных. На рисунке ниже показан фрагмент того же —

Подход

Мы будем использовать модель GPT-2 для изучения распределения слов, семантики, синтаксических конструкций для классов Ham и Spam. И как только обучение будет завершено, мы будем генерировать синтетические образцы для каждого из этих классов, которые, как вы увидите, достаточно хороши, чтобы быть добавленными обратно в наш набор данных для обучения модели классификации с еще большими данными.

Предварительно обученная модель GPT-2 становится подходящим кандидатом для этой задачи, поскольку у нас очень мало образцов для каждого из классов Spam/Ham в наборе данных. В идеале нам нужна модель, которая уже много знает о синтаксических, грамматических и семантических структурах естественного языка. В рамках реализации мы настроим GPT2 для нашего набора данных Spam/Ham и ожидаем, что он изучит использование слов и языковую структуру таких электронных писем.

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

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

Как только модель обучена и сброшена, мы готовы генерировать образцы. Вы можете найти код для генерации образцов с использованием обученной модели в файле finetune_gpt_generate. Мы используем стратегию выборки Top-k, Top-p в качестве метода декодирования текста.

Полученные результаты

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

Весь код и предварительно обученная модель генератора нежелательной/ветственной электронной почты можно найти по адресу —



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

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

Рекомендации

  1. Используемый набор данных находится в открытом доступе и доступен по адресу https://www.kaggle.com/venky73/spam-mails-dataset.

Спасибо за ваше время!