AI技术讲座精选:GAN 在 NLP 中的尝试
【AI100 导读】GAN 是当前最流行的深度学习理论之一,在计算机视觉领域取得了非常棒的效果,然而大家一直关心 GAN 何时可以在自然语言处理领域有所作为?本文带来了一些答案和相关讨论。
GAN 自从被提出以来,就广受大家的关注,尤其是在计算机视觉领域引起了很大的反响,但是这么好的理论是否可以成功地被应用到自然语言处理(NLP)任务呢?
一年前,网友在 reddit 上提问道,生成式对抗网络 GAN 是否可以应用到自然语言处理上。GAN 理论的提出者,OpenAI 的科学家,深度学习理论奠基人之一 Yoshua Bengio 的得意门生 Ian Goodfellow 博士回答了这个问题:
GANs 目前并没有应用到自然语言处理(NLP)中,因为 GANs 仅仅定义在真值数据中,GANs 通过训练出的生成器来产生合成数据,然后在合成数据上运行判别器,判别器的输出梯度将会告诉你,如何通过略微改变合成数据而使其更加现实。
只有在数据连续的情况下,你才可以略微改变合成的数据,而如果数据是离散的,绝对不可以改变合成数据,一点都不可以。
例如,如果你输出了一张图片,其像素值是1.0,那么接下来你可以将这个值改为1.0001。如果你输出了一个单词“penguin”,那么接下来就不能将其改变为“penguin + .001”,因为没有“penguin +.001”这个单词。如果想改的话,你必须将“penguin”变为“ostrich”或其他。因为所有的自然语言处理(NLP)的基础都是离散值,如“单词”、“字母”或者“音节”,没有人真正知道怎样才能在 NLP 中应用 GANs。
一般而言,我们会想到采用增强学习算法,但是增强算法的运行效果并不十分理想。目前据我所知,还没有人真正的开始研究利用增强算法解决 NLP 问题。
我看到有人说, GANs 在递归神经网络(RNN)方面并不奏效。这是不对的。从理论上来看,GANs 和 RNN 的生成器或判别器之间,并没有什么矛盾。但是,对于这一点,目前并没有人严肃而又认真的测试过。因此,在实际应用中还是存在一定的困难的。
顺便说一下,VAEs 对可见的离散单元是有效的,但是对隐藏的离散单元却并不奏效(除非你在运用增强算法,比如 DARN 或者 NVIL)。而另一方面,GANs 对隐藏的离散单元奏效,对可见的离散单元却并不奏效(从理论上来讲,除非是运用增强算法)。因此,这两种方法可以说是各有利弊,相辅相成。
2016年的 NIPS GAN Workshop 中,来自杜克大学的 Zhang、Gan 和 Carin 发表了一篇题为 GeneratingText via Adversarial Training 的论文,尝试将 GAN 理论应用到了文本生成任务上,他们的工作非常有特色,具体可以总结为:
用到的判别器(Discriminator)是卷积神经网络(CNN),而不是递归神经网络(RNN),这可能是一个不错的选择,因为Tong Zhang 就曾经使用CNN 做文本分类任务,相比 RNN,CNN 更好训练一些,最终训练得到的判别器非常有效,与之相关的问题优化起来也相对容易些。
在生成器(generator)中用光滑近似(smoothapproximation)的思路来逼近 LSTM 的输出,但实际上,这种思想比较常见,并没有什么不同寻常的地方。
在鞍点优化问题上,采用的是纯矩匹配(moment matching)作为优化准则。早期的生成式对抗网络(GANs)都是用逐点判别损失(pointwise discrimination loss)作为优化目标的,而最近的工作都是用类矩匹配的思路来加强优化目标,这里的优化是用矩匹配来做。
本文的初始化非常有意思,特别是在判别器的预训练方面,利用原始的句子和该句子中交换两个词的位置后得到的新句子进行判别训练。(在初始化的过程中,运用逐点分类损失函数对判别器进行优化)。这非常有意思,因为将两个单词互换位置,输入的数据信息实际上是基本相同的。比如,大多数卷积计算最终会得出完全相同的值。
更新生成器的频率遥远高于判别器,这与大家之前的设想正好相反。或许这是因为,相比 LSTM 来说, CNN 的问题优化要容易的多。同时,这可能也和纯矩匹配损失的应用有关。
知乎上大家对这个问题的看法有很多,下面列出两个比较有代表性的:
Xun Huang PhD Student in CS, Cornell
其实本来写了一大段后来还是删了.... 因为这个问题其实非常前沿,在知乎上要讲清楚的话感觉太难了。
所以还是就列一些 paper 吧:
SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient
GANS for Sequences of Discrete Elements with the Gumbel-softmax Distribution
Generating Text via Adversarial Training
以上 paper 是直接用 GAN 做 text generation 的,但是其实都暂时没有啥正经的实验结果。
Modeling documents with Generative Adversarial Networks
这个是用 GAN 生成一个 document 中词的分布(不是真正 generate document),然后希望 discriminator 能学到好的 feature without supervision。
Professor Forcing: A New Algorithm for Training Recurrent Networks
这个是用 discriminator 来 encourage 一个 RNN 在 training 和 testing 的时候 hidden state 的分布一致,借此解决 exposure bias 的问题(即 RNN 在 training 时接受 ground truth input,但 testing 时却接受自己之前的 output,这两个 setting不一致会导致 error accumulate)。
同时还有一系列 paper 用 reinforcement learning 来直接 optimize evaluation metric(例如BLEU),同时解决 exposure bias,这些 paper 其实和 GAN 有内在的联系(参考 Connecting Generative Adversarial Networks andActor-Critic Methods):
Sequence Level Training with Recurrent Neural Networks
An Actor-Critic Algorithm for Sequence Prediction
Optimization of image description metrics using policy gradient methods
最后个人不认为 discrete data space 是 GAN 在 NLP上难 work 的本质原因...这里不展开了。
王亭午 U of T ML group
补充几点,题主也许会好奇:为什么 Ian 在 reddit 上说 GAN 做不了是因为 word embedding 加减无意义就做不了呢?既然这样,我在 latentvector 上做加减不就行了吗?这个方法看上去可以,实际上很难 work。
使用 generative model 解决 language generation 最大的问题在于 latent space 存在非常多的 desert hole。在 training 的时候,text 的 latent vector 有聚拢的倾向( citation needed,感谢评论。评论里面也提到了desert hole 这个词并不是一个学术上的词汇。David Duvenaud 和我们聊这个问题的时候,用了这个说法,这里沿用,感觉还是满形象的哈哈)。
因此直接上 GAN model 存在一些问题。图中是[1] 里面的一个例子。在 latent space 遨游的时候,中间的句子不 make sense。
不过解决的方法也是有很多的。最简单的方法是用 VAE 而不是用 GAN。GAN 本身的训练方式是非常依赖连续空间的。在训练的时候,我们的目标就是连续空间上的 pixel 值。在这一点上,VAE 就没有这个假设。因此 VAE 是自然的选择。
实际上用的时候有很多 tricks,[1] 里面感觉就有很多工程上的东西来减少 desert hole 的问题。
另外一个方法是结合 policy gradient,把它做成一个 R L的问题。[2] 是一篇非常有意思的文章。通过把 word 选择由 softmax output 选择变成 policy 选择,作者巧妙的避开了 GAN 和 word embedding 不兼容的问题。当然实际上,结合 GAN 和 RL 需要更加多的思考和技巧。[2]不一定是最好的方法,但是无疑证明了GAN是可以用在 sentence generation 这个问题上的。
我之前也很关注 GAN 和 text 的结合,也可以算是利益相关吧。此外有另外一个工作[3] (出自我们组去年刚刚招来的青年才俊Prof. David Duvenaud),可能可以带来更加多的启示。
如果我们考虑化学物质的预测呢?假设我们知道化学式A,B,C并且知道他们的性质,我们能不能预测 A-B+C 的化学性质呢?我们能不能得到类似 queen-woman+man=king 的结果呢?
这个时候,使用 generative model 解决化学分子生成会遇见和 sentence generation 一样的问题。我们会发现,化学分子的 latentspace,一样存在 desert holes。推荐你看一下[3],我觉得它很有意思,能给我们考虑的问题带来许多思考 。
[1] Generating Sentences froma Continuous Space.
Samuel R. Bowman, Luke Vilnis, Oriol Vinyals, Andrew M. Dai, Rafal Jozefowicz,Samy Bengio
https://arxiv.org/abs/1511.06349v4
[2] SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient.
Lantao Yu, Weinan Zhang, Jun Wang, Yong Yu
https://arxiv.org/abs/1609.05473v5
[3] Automatic chemical design using a data-driven continuous representation ofmolecules.
Rafael Gómez-Bombarelli, David Duvenaud, José Miguel Hernández-Lobato, JorgeAguilera-Iparraguirre, Timothy D. Hirzel, Ryan P. Adams, Alán Aspuru-Guzik
https://arxiv.org/abs/1610.02415v1
请添加微信公众号:AI100(微信号:rgznai100)下载相关 paper。
编译:AI100
原文链接:http://www.machinedlearnings.com/2017/01/generating-text-via-adversarial-training.html