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 理论应用到了文本生成任务上,他们的工作非常有特色,具体可以总结为:
知乎上大家对这个问题的看法有很多,下面列出两个比较有代表性的:
Xun Huang PhD Student in CS, Cornell
其实本来写了一大段后来还是删了…. 因为这个问题其实非常前沿,在知乎上要讲清楚的话感觉太难了。
所以还是就列一些 paper 吧:
以上 paper 是直接用 GAN 做 text generation 的,但是其实都暂时没有啥正经的实验结果。
这个是用 GAN 生成一个 document 中词的分布(不是真正 generate document),然后希望 discriminator 能学到好的 feature without supervision。
这个是用 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):
最后个人不认为 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
原文: Machined Learnings: Generating Text via Adversarial Training
作者: Paul Mineiro
责编:何永灿,欢迎人工智能领域技术投稿、约稿、给文章纠错,请发送邮件至[email protected]
本文来源AI100公众号,授权CSDN发布。