УДК 004.89
Домашева Марина Викторовна магистрант 3 года обучения
Курский государственный университет, Россия, г. Курск
E-mail: domasheva.mv@gmail.com
Халин Андрей Александрович канд. физ.-мат. наук, доцент кафедры программного обеспечения и администрирования информационных систем
Курский государственный университет, Россия, г. Курск
E-mail: halin_aa@kursksu.ru
В статье приводится обзор моделей нейронных сетей для генерации семантически связного текста. Рассмотрены алгоритмы: автоэнкодер, рекуррентная нейронная сеть (RNN), генеративно-состязательные сети (GAN).
Ключевые слова: генерация текста, машинное обучение, рекуррентная нейронная сеть
Введение
Машинная обработка естественного языка (natural language processing, NLP) эффективно использует языковые данные для решения повседневных задач. На данный момент одной из популярных задач является понимание текста. Данная задача включает в себя: классификацию, генерацию, перевод текста, ответы на вопросы, аннотирование изображений и другие задачи.
Автоматическая генерация семантически связного текста является сложной и популярной задачей, которая находит применение в различных областях: машинный перевод текстов, создание субтитров, аннотирование текстов, создание новостных статей и другого контента, чат-боты, виртуальные помощники.
Автоэнкодер – это тип нейронной сети, который используется для компрессии и восстановления входных данных [1]. Он состоит из двух слоев: кодера и декодера. Кодер преобразует входные данные, например, сжимает текст в некоторый вектор (кодирование), а декодер восстанавливает исходный текст из вектора (декодирование). В процессе генерации текста на декодер подается некоторый случайный вектор для последующего восстановления текста.
Для генерации текста на основе заданных параметров или контекста, автоэнкодер может быть модифицирован добавлением слоя между кодером и декодером, который принимает параметры или контекст и вносит изменения в компактное представление перед восстановлением. Этот дополнительный слой может быть реализован, например, с использованием рекуррентных нейронных сетей.
При этом автоэнкодеры могут иметь ограничения при создании текстов, требующих глубокого понимания контекста, эмоциональной привлекательности или творческого подхода. В таких случаях может потребоваться использование более сложных методов и алгоритмов, таких как генеративно-состязательные сети (GAN) или рекуррентные нейронные сети (RNN).
RNN (рекуррентные нейронные сети) могут использоваться для посимвольной генерации длинных текстов. Для этого RNN обрабатывает входные данные по одному символу за раз, используя информацию из предыдущих элементов последовательности для обработки текущего элемента. Это может быть полезно для генерации текстов, так как RNN обучается зависимостям между элементами последовательности и использует эту информацию для создания текста на основе заданных параметров или контекста.
Однако следует учитывать, что RNN может иметь трудности с обработкой очень длинных последовательностей из-за проблем с долгосрочной памятью. В таких случаях могут быть использованы более сложные архитектуры, такие как LSTM или GRU [2,3].
LSTM – это тип рекуррентной нейронной сети, обладающий способностью к долгосрочной памяти. Это делает его более подходящим для обработки и генерации текстов с долгосрочными зависимостями между элементами последовательности. Для генерации текста с помощью LSTM необходимо выполнить следующие шаги:
LSTM может быть более эффективным для генерации длинных текстов в сравнении с RNN, так как он лучше справляется с долгосрочными зависимостями между элементами последовательности.
GRU (Gated Recurrent Unit) – это еще один тип рекуррентной нейронной сети, который является альтернативой LSTM. GRU также обладает способностью к долгосрочной памяти и может быть использован для обработки и генерации текстов, в которых присутствуют долгосрочные зависимости между элементами последовательности.
Архитектура GRU отличается от LSTM тем, что вместо использования трех разных вентилей (forget gate (вентиль забывания), input gate (вентиль входного состояния), output gate (вентиль выходного состояния)) GRU использует только два гейта: update gate и reset gate. В итоге GRU имеет меньше параметров, чем LSTM (в GRU нет output gate), что делает GRU более простой и компактной, чем LSTM.
Для генерации текста с помощью GRU, необходимо выполнить аналогичные шаги, как и в случае с LSTM: подготовка данных, обработка данных, обучение GRU, генерация текста.
GRU может быть хорошим выбором для генерации текстов, особенно когда требуется компактная и простая архитектура. Однако, в некоторых случаях, GRU может иметь трудности с генерацией текстов, которые требуют глубокого понимания контекста, эмоциональной привлекательности или творческого подхода.
Sequence to sequence (Seq2Seq) – это разновидность модели машинного обучения, которая принимает последовательные данные в качестве входных данных и также генерирует последовательные данные в качестве выходных данных. Концепция модели Seq2Seq была представлена в статье «Последовательное обучение с помощью нейронных сетей» от Google [4]. Архитектура, обсуждаемая в этой исследовательской статье, является фундаментальной основой для задач обработки естественного языка. В оригинальной статье слоями сети являлись RNN и LSTM [4], затем также было предложено использовать GRU слой [5]. Контекстом каждого входа является выход с предыдущего момента времени.
Модели Seq2Seq являются моделями энкодера-декодера. Энкодер обрабатывает входную последовательность и преобразует ее в промежуточный вектор, который дает статическое представление закодированного предложения. Декодер использует промежуточный вектор для генерации выходной последовательности. Таким образом, каждая ячейка является слоем нейронной сети, у которого есть свои веса. Такая структура позволяет обрабатывать входные и выходные последовательности разной длины, что делает их способными обрабатывать последовательные данные.
Для создания семантически связанных текстов также можно использовать генеративносостязательные нейронные сети (GAN). GAN состоит из двух компонентов: генератора и дискриминатора. Генератор создаёт образцы данных, а дискриминатор оценивает их реалистичность. Цель такой нейронной сети состоит в создании образцов, которые дискриминатор не сможет отличить от реальных. SeqGAN была предложена в 2016 году [6]. Её цель – генерация коротких семантически связных текстов. Данная нейронная сеть является модификацией генеративно-состязательной нейронной сети (GAN).
Основные изменения включают использование обучения с подкреплением и алгоритма Монте-Карло, использующегося для улучшения качества оценки сгенерированного текста. Отметим, что SeqGAN может использоваться без использования алгоритма Монте-Карло.
Подробнее можно прочитать в статье [6]. Процесс обучения SeqGAN состоит из трёх этапов:
Результаты, представленные в статье [7], показывают, что использование SeqGAN может улучшить качество генерации текста.
LeakGAN – это генеративно-состязательная сеть, которая была предложена в 2017 году [7]. Её цель – создание относительно длинных текстов с сохранением семантической связности (более 20 слов). LeakGAN использует идею утечки памяти из дискриминатора, что позволяет улучшить качество создаваемого текста. LeakGAN объединяет идеи SeqGAN и RankGAN, что делает её более эффективной для создания связанных и грамматически правильных предложений.
Результаты [7] показывают, что подходы SeqGAN, RankGAN и LeakGAN позволяют улучшить качество генерируемого текста после использования предварительного обучения генератора на основе MLE. Генеративносостязательная сеть RankGAN генерирует более качественный результат, чем SeqGAN, но уступает нейронной сети LeakGAN.
Также рассматривается возможность комбинирования различных подходов для достижения лучших результатов. Например, можно использовать Seq2Seq с GRU для создания коротких текстов, а затем использовать LeakGAN для создания длинных текстов. Выбор подхода зависит от конкретной задачи и требований к качеству текста.
Список используемой литературы