от arXiv
делать Авторы: Синьюэ Лю, Сяннан Конг, Лэй Лю, Куоронг Чан
Сборник "Сердце машины"
принимать участие: Компьютерщик AI, Чжан Цянь
Генеративно-состязательные сети (GAN) продемонстрировали большие возможности в области генерации изображений. Недавно GAN были расширены из области генерации изображений в область генерации последовательностей. Существующие GAN для генерации последовательностей в основном сосредоточены на некоторых общих последовательностях, которые не являются синтаксически независимыми. Однако во многих практических приложениях нам необходимо генерировать последовательности на формальном языке, ограниченном соответствующей грамматикой. Создание таких последовательностей является очень сложной задачей. Чтобы решить эти проблемы, в этой статье исследуется проблема генерации последовательностей с учетом синтаксиса через GAN и предлагается новая структура GAN, TreeGAN, которая включает заданную контекстно-свободную грамматику (CFG) в процесс генерации последовательности. Эта статья доказывает, что TreeGAN можно использовать для любого CFG генерирует последовательности, которые генерируются точно в соответствии с заданным синтаксисом. Эксперименты с синтетическими и реальными наборами данных показывают, что TreeGAN значительно улучшает качество генерации последовательностей в контекстно-свободных языках.
1. Введение
Генеративно-состязательные сети — это неконтролируемые обучающие системы, состоящие из генеративных и дискриминационных сетей. Мы называем их генератором (G) и дискриминатором (D). D учится различать, является ли экземпляр данных реальным или искусственно синтезированным. G пытается запутать D, создавая высококачественные синтетические экземпляры. В рамках GAN D и G непрерывно обучаются по очереди, пока не достигнут равновесия Нэша. Обученный GAN приводит к созданию генератора высококачественных экземпляров данных, очень похожих на реальные данные.
Вдохновленный большим успехом в генерации изображений и смежных областях, GAN [1] недавно был расширен для задач генерации последовательностей [2, 3]. GAN для генерации последовательностей имеют много важных приложений в реальном мире. Например, чтобы создать хороший оптимизатор запросов для базы данных, исследователь может захотеть сгенерировать большое количество высококачественных синтетических SQL-запросов для оценки оптимизатора. В отличие от задач генерации изображений, большинство языков имеют свою собственную грамматику или синтаксис. Существующие модели GAN для генерации последовательностей [2, 3, 7] в основном сосредоточены на бессинтаксической среде, показанной на рисунке 1а. Эти методы пытаются изучить сложные базовые синтаксические и грамматические шаблоны из данных, что часто очень сложно и требует большого количества реальных выборок данных для достижения достойной производительности. Во многих формальных языках грамматические правила или синтаксис (например, SQL синтаксис, синтаксис Python PL) предопределен. Внедрение такого синтаксиса в обучение GAN должно привести к лучшему генератору последовательностей, который синтаксически осведомлен и значительно сокращает пространство поиска на этапе обучения. Существующие модели генерации последовательностей с учетом синтаксиса [4] в основном обучаются с помощью оценки максимального правдоподобия (MLE), и они сильно зависят от качества и количества реальных выборок данных. Несколько исследований [2, 5] показывают, что состязательное обучение может дополнительно улучшить производительность генерации последовательности на основе оценки максимального правдоподобия. Даже если синтаксически осведомленные существующие методы генерации последовательностей вводят синтаксическую информацию, результаты их генерации могут быть не самыми лучшими.
Рисунок 1: Сравнение двух контекстов постановки задачи. (a) Проблема генерации синтаксически независимой последовательности. Генератор обучается только на наборе реальных последовательностей, а сгенерированные последовательности могут иметь синтаксические ошибки. (b) Проблема генерации последовательности с учетом синтаксиса. В дополнение к набору достоверных последовательностей (вверху слева от прямоугольника) мы также даем набор синтаксических правил в качестве априорных знаний (вверху справа от прямоугольника, например, «A 7 → A, A» и «B 7 → имя таблицы». "). На каждом шаге генератор следует одному или нескольким предопределенным правилам (маленькие прямоугольники в середине выходных стрелок, такие как «R1», «R2» и т. д.), чтобы создать последовательность (пунктирный прямоугольник), которая согласуется с фактическим Последовательности похожи и следуют синтаксису.
Чтобы решить вышеуказанные проблемы, мы углубимся в проблему использования GAN для создания последовательностей в контексте предопределенной грамматики. Мы сформулируем эту проблему на рисунке 1b, где в качестве входных данных задан корпус реальных последовательностей (вверху слева от прямоугольника) и набор грамматических правил (вверху справа от прямоугольника). Наша цель — изучить генеративную сеть G, которая может создавать высококачественные последовательности из заданной грамматики, моделируя реальные последовательности посредством состязательного обучения. Мы сосредоточим наше исследование на контекстно-свободных грамматиках (CFG) в соответствии с известной иерархией Хомского [8], которая может быть применена ко многим существующим формальным языкам. Формальное определение контекстно-свободной грамматики находится в главе 2-C этой статьи. приведены в. Насколько нам известно, наша работа является первой исследовательской работой, посвященной созданию синтаксически осведомленной GAN для задач генерации последовательностей.
Хотя GAN успешно справляются со многими задачами, изучить такую синтаксически осведомленную генеративную сеть непросто, и она сталкивается со следующими проблемами:
-
Обеспечение синтаксической правильности: сложность обеспечения синтаксической правильности присуща генераторам последовательностей: они генерируют слова одно за другим. Большинство моделей грамматики применяют нисходящую структуру, такую как древовидная структура, для абстрактной грамматической информации. Чтобы полностью реализовать синтаксическую осведомленность, генератор последовательности должен следовать определенной структуре синтаксического дерева. Однако структура синтаксических деревьев может сильно различаться, и генераторы последовательностей не могут охватить все возможные ситуации с древовидной структурой.
-
Отслеживание синтаксического состояния неполных фраз: рекуррентные нейронные сети (RNN) часто используются в качестве генераторов в задачах генерации последовательности, которые на каждом шаге сохраняют сводки сгенерированных слов в их скрытых состояниях. Однако такие сводки не отслеживают синтаксическую информацию в частично сгенерированных последовательностях, что приводит к возможным синтаксическим ошибкам во всей последовательности. Чтобы создать генератор с учетом синтаксиса, нам нужно создать механизм, который позволит RNN хранить полную синтаксическую информацию при создании последовательности и отслеживать текущее состояние.
-
Синтаксически осведомленный дискриминатор: дискриминатор является ключевым компонентом структуры GAN и должен быть специально разработан в соответствии с характеристиками изучаемой задачи. DCGAN использовала сверточную нейронную сеть (CNN) [9] в качестве дискриминатора для достижения лучшей производительности модели при представлении и генерации изображений. В то время как MaskGAN[6] использовал LSTM[10] в качестве дискриминатора, чтобы обучить генератор последовательности заполнять отсутствующий текст. В нашей проблеме простое использование LSTM или CNN в качестве дискриминационной модели может упустить ключевые синтаксические шаблоны, что приведет к более слабому классификатору для структуры GAN. Следовательно, для задачи генерации последовательности с пониманием синтаксиса необходимо тщательно разработать специализированный дискриминатор, чтобы правильно кодировать богатую синтаксическую информацию в последовательности и направлять генератор для лучшего получения базовых синтаксических шаблонов.
-
Предварительная подготовка: как генератор, так и дискриминатор обычно требуют надлежащей предварительной подготовки. Однако, поскольку мы впервые используем GAN для изучения этой проблемы, неясно, как разработать соответствующую стратегию предварительного обучения для задачи генерации синтаксически осведомленной последовательности.
Для решения вышеуказанных проблем мы предлагаем новую модель GAN под названием TreeGAN. TreeGAN включает в себя набор правил грамматики и учится генерировать деревья синтаксического анализа вместо прямого создания последовательностей. Каждому сгенерированному дереву соответствует последовательность, корректная в соответствии с заданной грамматикой. Такой подход накладывает строгие ограничения на генератор и гарантирует синтаксическую корректность сгенерированной последовательности. Мы подробно расскажем, как применяются эти ограничения, в главе 3-B. Поскольку генератор TreeGAN генерирует деревья вместо обычных последовательностей, базовый RNN/LSTM больше не является лучшим выбором для дискриминатора. Чтобы лучше отличать поддельные деревья синтаксического анализа (неправильные искусственно синтезированные деревья синтаксического анализа) от настоящих деревьев синтаксического анализа, мы используем в состязательном обучении TreeLSTM [11] направляет генератор дерева, и в главе 3-C этой статьи будут представлены подробности. Соответствующая стратегия предварительной подготовки будет обсуждаться в главе III-D. Вклад этой статьи резюмируется следующим образом:
-
Мы преобразуем задачу генерации последовательности в задачу генерации дерева синтаксического анализа, которая эффективно вводит структурированную информацию. Мы показываем, что последовательности в контекстно-свободной синтаксической среде могут быть преобразованы в соответствующие деревья синтаксического анализа, которые используются в TreeGAN, чтобы направлять генератор для создания реалистичных деревьев синтаксического анализа.
-
Мы предлагаем генератор деревьев, который использует LSTM для создания деревьев синтаксического анализа, которые следуют предопределенной контекстно-свободной грамматике.
-
Мы предлагаем состязательную обучающую среду под названием TreeGAN, в которой древовидная модель LSTM [11] используется в качестве дискриминатора, направляющего генератор деревьев для построения деревьев синтаксического анализа.
-
Обширные эксперименты с синтетическими и реальными наборами данных демонстрируют, что предлагаемая структура TreeGAN может генерировать высококачественный текст/последовательности из предопределенных контекстно-свободных грамматик.
Рисунок 2: Сравнение связанных моделей GAN. «D» обозначает дискриминатор модели GAN, а «G» — генератор. (а) DCGAN [5] (б) MaskGAN [6] (в) TreeGAN (модель, предложенная в этой статье)
Документ: TreeGAN: Генерация последовательности с учетом синтаксиса с помощью генеративно-состязательных сетей
Ссылка на статью: https://arxiv.org/abs/1808.07582
Генеративно-состязательные сети (GAN) продемонстрировали большие возможности в области создания изображений, а структура GAN имеет модель дискриминатора, которая направляет обучение модели генератора для создания изображений, очень похожих на реальные изображения. Совсем недавно GAN расширились от генерации изображений до генерации последовательностей (например, поэзии, музыки и кода). Существующие GAN для генерации последовательностей в основном сосредоточены на некоторых общих последовательностях, которые не являются синтаксически независимыми. Однако во многих практических приложениях нам необходимо генерировать последовательности на формальном языке, ограниченном соответствующей грамматикой. Например, для проверки производительности базы данных может потребоваться сгенерировать набор SQL-запросов, которые не только должны быть похожи на запросы реальных пользователей, но также должны следовать запросам целевой базы данных. Синтаксис SQL. Генерация таких последовательностей очень сложна, потому что и генератор, и дискриминатор GAN должны учитывать структуру последовательности и грамматику, заданную на формальном языке. Чтобы решить эти проблемы, мы исследуем проблему генерации последовательностей с учетом синтаксиса через GAN, в которых дискриминатору и генератору одновременно предоставляется набор последовательностей истинности и набор предопределенных правил грамматики. Мы предлагаем новую структуру GAN, TreeGAN, которая включает заданную контекстно-свободную грамматику (CFG) в процесс генерации последовательности. В TreeGAN генератор использует рекуррентную нейронную сеть (RNN) для построения дерева синтаксического анализа. Каждое сгенерированное дерево синтаксического анализа может быть затем преобразовано в правильную последовательность для данной грамматики. Дискриминатор использует древовидную структуру. RNN, чтобы отличить сгенерированное дерево от реального дерева. Мы показываем, что TreeGAN может генерировать последовательности для любой CFG, которые точно соответствуют заданному синтаксису. Эксперименты с синтетическими и реальными наборами данных показывают, что TreeGAN значительно улучшает качество генерации последовательностей в контекстно-свободных языках.
Рисунок 7: Количественный анализ SQL-B
Таблица 3: Оператор SQL-запроса в SQL-B генерирует результаты. Синтаксические ошибки отмечены красным.
Рисунок 8: Количественный анализ на Django
Таблица 4: Сгенерированный код Python в Django. Синтаксические ошибки отмечены красным.
Рисунок 3: Слева: дерево синтаксического анализа для последовательности «010010». Справа: последовательность действий, используемых для создания дерева синтаксического анализа, показанного слева. Сплошные стрелки представляют временную последовательность потока действий, а пунктирные плечи представляют входные данные встраивания предыдущего слоя (см. Главу III-B).
Рисунок 4: Процесс генерации дерева синтаксического анализа, показанный на рисунке 3. Генератор поддерживает родительский стек (серый столбец) и подстек (желтый столбец), текущий узел (желтый прямоугольник под подстеком) и его родительский узел (серый прямоугольник) генерируются на каждом этапе генерации. Красные элементы в стеке относятся к элементам, помещаемым в стек на каждом шаге. Остановить генерацию последовательности, когда оба стека пусты.
Эта статья составлена для сердца машины,Для перепечатки, пожалуйста, свяжитесь с этим официальным аккаунтом для авторизации .
✄------------------------------------------------
Присоединяйтесь к сердцу машины (штатный репортер/стажер): hr@jiqizhixin.com
Чтобы внести свой вклад или получить покрытие:content@jiqizhixin.com
Реклама и деловое сотрудничество: bd@jiqizhixin.com