论文解读 - MaskGAN:BETTER TEXT GENERATION VIA FILLING IN THE _____
1 简介
文本生成是自然语言处理中一个重要的研究领域,具有广阔的应用前景。当前主流的用来进行文本生成的模型主要是Seq2Seq模型,通常利用maximum likelihood和teacher forcing进行训练,生成文本的质量也大都通过validation perplexity来衡量。
目前的文本生成模型也存在着一些问题,其对于perplexity的优化来说效果可能很好,但却不能保证生成质量足够好的文本,因为其并没有针对输出明确定义一个损失函数来提高结果质量。而本文对此做了改变,选择用GAN的模式对生成过程进行训练。然而,传统的GAN模型无法解决自然语言处理中词向量的离散性问题,因此在这篇论文中利用强化学习中的 actor-critic 算法来训练生成器,利用最大似然和随机梯度下降来训练判别器。另外,GAN 模型中的模式崩溃和训练不稳定问题在文本生成任务下也更严重。训练不稳定会随着句子的长度增加而加重。为了避免这两个问题的影响,本文选择了对缺失词进行完形填空的生成模式,而不再让生成器来生成的完整的文本。
2 准备知识
2.1 Seq2Seq模型

基本的Seq2Seq模型如上图所示,整个模型分为解码和编码的过程,编码的过程结束后输出一个语义向量c,之后整个解码过程根据c进行相应的学习输出。而对于解码过程,对应的是另外一个RNN网络,其隐藏层状态在t时刻的更新根据如下方程进行更新:
\]
生成的单词的条件概率可以写成:
\]
对于整个输入编码和解码的过程中,使用梯度优化算法以及最大似然条件概率为损失函数去进行模型的训练和优化:
\]
其中\(\theta\)为相应模型中的参数,\((x_n,y_n)\)是相应的输入和输出的序列。
2.2 生成对抗网络(GAN)
GAN网络包括生成器\(G_\theta(Z)\)和判别器\(D_\phi(X)\)两部分。生成器将噪音z映射到输入空间中,尽可能和真实数据相近,判别器则用来判断输入x来自真实数据的概率大小。优化目标为:
\]
其中G通过不断地学习去生成质量更好的样本来欺骗判别器D,而判别器D则通过不断地学习来分辨出由生成器G生成的数据和真实数据。
2.3 强化学习
强化学习是机器学习的一个重要分支,是多学科多领域交叉的一个产物,它的本质是解决 decision making 问题,即自动进行决策,并且可以做连续决策。

主要包含四个元素,agent,环境状态,行动,奖励, 其中智能体agent与环境environment进行交互,agent每采取一个动作a环境就会给予智能体一定的反馈reward,强化学习的目标就是获得最多的累积奖励,通过累积奖励对agent的动作进行建模,从而学习出如何在不同的状态进行不同的决策。
3 MaskGAN
\((x_t,y_t)\)是输入和目标的序列,表示被掩盖的词,\(\hat x\)表示填空后的生成序列,\(\widetilde x\)是传递给判别器的词,可能是真实词或者生成词。
模型基于Seq2Seq框架,对于一个离散的句子序列\(x = (x_1,x_2,...,x_T)\),通过0/1的掩码序列\(m = (m_1,m_2,....,m_T)\)当\(m_t\)是0时,\(x_t\)被替换为空白词,\(m_t\)为1时不变,这样掩码后的序列用\(m_x\)表示。
3.1 Generator

生成器模型如上图所示,采用Seq2Seq框架,其中蓝色的单元为已知的单词,紫色的单元为需要进行推断的单词,虚线的部分是基于生成器的概率分布进行采样的过程。在编码器部分读入掩码后的序列\(m(x)\),其中被掩盖的部分我们用下划线来表示。在解码器部分则是通过编码器的隐藏状态来推断被掩盖部分的单词:
\]
然后根据概率分布:
\]
进行采样操作,从而获得在t时刻的生成结果。在上图的例子中,生成器应当按照字母表的顺序来对序列进行填空。
由于自然语言处理任务中分布式词向量的离散性,不能直接使用GAN模型来完成生成器的训练,因此本文引入了强化学习的方法,将生成单词视为智能体的动作,判别器对于生成器的评价作为奖励,通过Policy Gradient方法来对生成器模型进行训练:
= \Bbb{E}_{\hat x_t\sim G}[\sum_{t=1}^T (\sum_{t=1}^T \gamma_sr_s-b_t)\nabla_{\theta}log(G_{\theta}(\hat x_t))]
\]
其中generator的目标就是使生成的结果从discriminator得到的最终的回报最大。\(G_\theta\)代表计算生成的\(\hat x_t\)概率的函数,\(R_t\)代表 discriminator 给在当前状态下采取动作\(\hat {x_t}\)得到的长期回报,\(b_t\)是为了防止强化学习训练过程中梯度的方差过大,给回报值增加一个baseline。其中\(R_t = \sum_{s=t}^T\gamma^sr^s\),\(R_t\)以及\(b_t\)是通过蒙特卡罗采样计算得到的。
3.2 Discriminator
discriminator 采用的结构和generator是一致的,都是seq2seq的形式, 只不过在每个时间步输出一个标量的概率:
\]
由此我们可以设定出对生成器模型的奖励:
\]
并以该奖励完成对生成器模型部分的训练过程。
而判别器部分的训练方式与传统的seq2seq的训练方式一致,均是采用maximum likelihood作为目标。它的输入是masked sequence 和 filled-in sequence,根据这两个判断t时刻的词是否为ground-truth。其训练目标如下:
\]
3.3 算法

4 总结
本文使用了GAN和强化学习方法Actor-Critic结合的方式来进行文本的生成,相对于之前SeqGAN的工作确实有很大的提升,可以产生具有更好质量的文本。而使用完型填空的方式来进行文本生成,有助于来缓解GAN学习中的模式崩溃问题,稳定GAN的训练过程。
论文解读 - MaskGAN:BETTER TEXT GENERATION VIA FILLING IN THE _____的更多相关文章
- CVPR2020论文解读:OCR场景文本识别
CVPR2020论文解读:OCR场景文本识别 ABCNet: Real-time Scene Text Spotting with Adaptive Bezier-Curve Network∗ 论文 ...
- 【抓取】6-DOF GraspNet 论文解读
[抓取]6-DOF GraspNet 论文解读 [注]:本文地址:[抓取]6-DOF GraspNet 论文解读 若转载请于明显处标明出处. 前言 这篇关于生成抓取姿态的论文出自英伟达.我在读完该篇论 ...
- CVPR2020论文解读:CNN合成的图片鉴别
CVPR2020论文解读:CNN合成的图片鉴别 <CNN-generated images are surprisingly easy to spot... for now> 论文链接:h ...
- 点云配准的端到端深度神经网络:ICCV2019论文解读
点云配准的端到端深度神经网络:ICCV2019论文解读 DeepVCP: An End-to-End Deep Neural Network for Point Cloud Registration ...
- 自监督学习(Self-Supervised Learning)多篇论文解读(下)
自监督学习(Self-Supervised Learning)多篇论文解读(下) 之前的研究思路主要是设计各种各样的pretext任务,比如patch相对位置预测.旋转预测.灰度图片上色.视频帧排序等 ...
- 自监督学习(Self-Supervised Learning)多篇论文解读(上)
自监督学习(Self-Supervised Learning)多篇论文解读(上) 前言 Supervised deep learning由于需要大量标注信息,同时之前大量的研究已经解决了许多问题.所以 ...
- 论文解读丨表格识别模型TableMaster
摘要:在此解决方案中把表格识别分成了四个部分:表格结构序列识别.文字检测.文字识别.单元格和文字框对齐.其中表格结构序列识别用到的模型是基于Master修改的,文字检测模型用到的是PSENet,文字识 ...
- 论文解读(SDNE)《Structural Deep Network Embedding》
论文题目:<Structural Deep Network Embedding>发表时间: KDD 2016 论文作者: Aditya Grover;Aditya Grover; Ju ...
- 人工智能论文解读精选 | PRGC:一种新的联合关系抽取模型
NLP论文解读 原创•作者 | 小欣 论文标题:PRGC: Potential Relation and Global Correspondence Based Joint Relational ...
随机推荐
- Linux设备驱动中的阻塞和非阻塞I/O <转载>
Green 博客园 首页 新随笔 联系 订阅 管理 Linux设备驱动中的阻塞和非阻塞I/O [基本概念] 1.阻塞 阻塞操作是指在执行设备操作时,托不能获得资源,则挂起进程直到满足操作所需的条件 ...
- Cesium.Viewer
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...
- 1-JAVA类、接口、抽象、多态
类中全部成员变量用priviate修饰,用get获取,set设值 对于boolean类型的值,getter方法也一定要写成isXXX 的形式,而setXXX类型不变 this关键字的作用 当方法的局部 ...
- MeteoInfoLab脚本示例:获取一维数据并绘图
气象数据基本为多维数据(通常是4维,空间3维加时间维),只让数据中一维可变,其它维均固定即可提取一维数据.比如此例中固定了时间维.高度维.纬度维,只保留经度维可变:hgt = f['hgt'][0,[ ...
- mqtt网关
MQTT网关 MQTT网关是可以是将普通的串口数据.Modbus RTU数据等转化为MQTT协议的从而方便与平台的对接,通过连接服务器.订阅和发布主题来实现传统设备和MQTT云端的联系.例如,笔记本和 ...
- day18 Pyhton学习 匿名函数
匿名函数 别称: lambda表达式 函数,没有名字 def wahaha(n):#wahaha return n**2 print(wahaha.__name__) qqxing = lambda ...
- pytest文档56-插件打包上传到 pypi 库
前言 pytest 的插件完成之后,可以上传到 github,方便其他小伙伴通过 pip 源码安装.如果我们想通过 pip install packages 这种方式安装的话,需上传到 pypi 仓库 ...
- Linux如何在vim里搜索关键字
例如搜索 the写法:/the +回车 /+关键字 ,回车即可.此为从文档当前位置向下查找关键字,按n键查找关键字下一个位置: ?+关键字,回车即可.此为从文档挡圈位置向上查找关键字,按n键向 ...
- ansible通过yum/dnf模块给受控机安装软件(ansible2.9.5)
一,使用yum/dnf模块要注意的地方: 使用dnf软件安装/卸载时,需要有root权限, 所以要使用become参数 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnb ...
- 使用浏览器抓取QQ音乐接口(排行榜篇)
前言 最近手头比较空闲,再加上看到其他人的博客都差不多有个类似的播放控件,手就会闲不下来,说干就干,所以我们开始吧! 来到QQ音乐的官网,我们就直奔着目标去,寻找排行榜 我们主要用的是最近比较热的歌, ...