李智恒 "GAN"法--对抗生成网络在文本领域的应用
新闻来源:IR实验室       发布时间:2017/9/29 14:07:52

李智恒 生成对抗网络在文本生成方面的应用

近期,生成对抗网络(GAN, Generative Adversarial Nets)在图像生成领域取得突破性进展,同时,在文本生成领域也引起广泛关注。本文从GAN的基础模型入手,引出GAN在文本生成过程中存在的问题,并介绍TextGANEMNLP2017论文《Neural Response Generation via GAN with an Approximate Embedding Layer》(GAN-AEL)。

 

一、生成对抗网络的基本模型

生成对抗网络由生成器(G)和判别器(D)两部分组成。通过二者的零和博弈过程,最终达到纳什均衡,即GD均达到最好效果。

举个例子,一对情侣,男孩给女孩照相。当男孩把相片给女孩的时候,女孩说照得不好,拿给男孩重照。男孩经过多次不懈努力,终于有一天,男孩再次把自己找的照片给女孩的时候,女孩开心的笑了。

在这里面,男孩和女孩分别充当了GD的角色。G将生成的样本送给D进行判断,D将判断出的结果反馈给G,用以提升G的生成性能。与此同时,D也学习着真实样本的分布,对真实样本和生成样本有了更多的理解,从而提升自己的判别性能。最终,G学到了真是样本的分布,生成出符合该分布的样本。而此时,由于生成样本符合真是样本分布,D无法区分哪些样本是生成样本,于是G的性能达到最优,D也完全掌握了真实样本的分布,起判别性能也达到最优。此时即达到纳什均衡。

 

在这里面,我们可以看到一个G从噪音生成样本,再将生成样本送给D进行判别的过程。对于G的训练,其需要D的判别结果对自己模型本身的参数进行更新。因此,在整个过程中需要全程可导。

对于D来说,它的输入需要是样本形式的。即在图像领域,需要输入图像信息;文本领域输入对应真实数据的文本词语、句子或篇章。本文以句子为例,G需要生成出完整句子再送给分类器。但是,不同于图像,词语是离散值,在生成句子的过程中必然存在G在输出层对词语的采样过程,这就引入了离散操作,使得反向传播过程在此处不可导。因此,G的训练无法进行。这也是生成对抗网络在文本生成的一大问题。

 

二、TextGAN

为了解决这一问题,《Generating Text via Adversarial Training》一文中提出了TextGAN模型。

TextGAN模型中,G将不可导的argmax(.)采样过程用一种近似平滑的过程替代,如下图右侧公式所示,当L趋近于无穷大时,该操作无限接近于argmax(.)采样操作。

 

TextGAN的另一个改进就是G的目标函数。在基本的GAN模型中,其目标函数为:

TextGAN模型中,将其改为:

我们可以看到,在TextGAN中,G不再是单纯的与D共享一个目标函数进行极大极小博弈,而是用了feature matching的方法,将真实文本分布与生成文本分布直接进行对比。

       由此,在GAN用于文本生成的过程中,目前我们可以从两个方向入手进行改进:1. G输出部分的采样过程利用近似平滑的方式进行替代,使得反向传播全程可导;2. 改进G的目标函数,有利于更好的学到真实文本的分布。

       当然,在一些文章中,也有用强化学习的方法,将生成文本与真实文本之间的差异作为外部的激励传给G的方法,例如SeqGAN。在此不进行过多讲解。

 

三、GAN-AEL

EMNLP2017会议中,有一篇利用GAN进行单论对话生成的论文。在G模型中加入了AEL层。这一层的作用是近似的表达每次采样过程,在每一个的生成过程中不再试图得到具体的词,而是基于词语的概率分布算出一个采样向量。而这个采样向量就是当前采样词的近似向量表示。

 

       将上图分开来看,上半部分是D,下半部分是G

D部分,利用两个卷积神经网络(CNN)分别对问题(Query)和答案(Response)进行卷积操作,得到AqAr,之后将两部分表示AqAr进行拼接送给全连接层进行分类。对于认为标注的真实答案(Human Reference),其分类结果为Real;而生成答案(Fake Response),其分类结果为Fake

对于G部分,将编码后的Query送给GRU网络进行解码。解码出来的向量通过AEL层进行词语的映射。AEL层的输出词向量计算公式如下:

首先,通过GRU解码得到隐层输出hi,将hi与符合高斯分布的随机噪音zi进行加操作,送给全连接层。之后对全连接输出进行softmax(.)操作,得到词的概率分布表示。将该结果与原本词向量进行加权求和,得到该时刻词语解码的向量表示。以此类推,得到整体的Fake Response。将此生成回答通过DCNN之后得到Ar’。在这里,用Ar’和真实回答的CNN输出Ar进行对比,求L2 Loss并更新G的参数,完成G的训练过程。在这里,我们可以看到,G的生成过程不只是改变了生成词语采样的部分,也将G的目标函数做以调整。

       实验结果表明,在百度贴吧和OpenSubtitles两个数据集上,GAN-AEL均达到当前GAN生成对话的较好水平。

 

 

四、总结

在用GAN进行文本生成是,首先要考虑梯度传播的问题。由于生成文本过程中的词语采样过程会引入不可导的操作,因此需要将此过程用其他方式代替。本文中介绍两种方法:1. TextGan中用的近似平滑方法,2.GAN-AEL的词语近似向量表示

另外,为了生成文本的分布更好的拟合真实文本的分布,修改G的目标函数也是一个可行的办法。找到适合的目标函数,可以加快G的收敛速度。

第三,无论是利用GAN进行文本生成还是图像生成,都需要用到大规模训练集作为真实数据,让G来学习。例如,训练GAN-AEL是用到的百度贴吧的数据集中,训练集包含5,000,000条句子。因为,从直观角度上来看,大规模的数据集使得G更容易学到真实数据的分布。而小规模的语料集,容易使G生成一些非常相近,或完全一致的数据,从而使得生成样本的多样性收到限制。

目前的应用中,大多利用GAN进行样本生成,GAN在其他人物,例如分类任务中的表现尚未可知。另外,GAN提供给我们的不仅仅是生成数据时的对抗方式,在未来的研究中也可以借鉴其对抗思想应用到我们自己的任务中来。