GAN in NLP | 每周话题精选 #03

「每周话题精选」是根据 PaperWeekly 最近一周的专题交流群讨论沉淀下来的精华内容。目前已成立的专题交流群有:知识图谱,量化,GAN,医疗AI,CV和NVIDIA。

1. 本期问题清单

  • GAN 目前在 NLP 中都尝试了哪些任务,主要思路和效果是怎样的?

  • GAN 在离散数据上有哪些做法?存在哪些问题?

  • GAN for NLP 的玄学讨论

  • GAN 比较有可能解决 NLP 领域的哪些问题?

2. 话题讨论精选

Q: GAN 目前在 NLP 中都尝试了哪些任务,主要思路和效果是怎样的?

A: 对话系统,纯文本生成(如诗歌生成),机器翻译,IR,中文分词,文本分类(半监督学习)等等,补充一下,“图说”和“说图”等这类的应用也算。

A: 主要思路是用 D 来判别真假,用 RL 的 policy gradient 的方式来打分和更新。

A: 原有任务上做 RL 效果不一定会比 GAN 的方法好,而且在原有问题上也需要定义科学的 reward 才行。

A: 目前的做法不是直接给噪声让它生成,而是在原有任务上改进,就像 IRGAN。

Q: GAN 在离散数据上有哪些做法?存在哪些问题?

A: 离散数据上没办法直接反向传播,一般采用 RL 中的 policy gradient 或者 gumbel softmax(可以直接求梯度)来近似计算,但是 policy gradient 的 variance 比较大,需要特别注意学习率的调整;gumbel softmax 目前的效果还不是很好。

A: 此外,还可以用 seq2seq 的方法,参考 SeqGAN。

A: 存在问题:

(1). 离散数据和连续的 embedding 空间之间存在矛盾,embedding 上的一点微小改变,很难直接反映到离散数据上。这一点可以参考 Ian Goodfellow 的观点:

You can make slight changes to the synthetic data only if it is based on continuous numbers. If it is based on discrete numbers, there is no way to make a slight change.

For example, if you output an image with a pixel value of 1.0, you can change that pixel value to 1.0001 on the next step.

If you output the word “penguin”, you can’t change that to “penguin + .001” on the next step, because there is no such word as “penguin + .001”. You have to go all the way from “penguin” to “ostrich”.

Since all NLP is based on discrete values like words, characters, or bytes, no one really knows how to apply GANs to NLP yet.

摘自:Generative Adversarial Networks for Text • r/MachineLearning

(2). 可解释性差,这一点来源于 GAN 本身的可解释性差,GAN 就像一个黑盒子。

(3). 一般来说没办法直接求得梯度,需要借助 policy gradient 或者 gumbel softmax,但是它们也只是一种近似,存在 bias 或者 variance 较大的问题。

(4). RNN/LSTM 在 NLP 中很常用,但是跟 GAN 结合,需要添加很多 tricks 才能 work。

Q: GAN for NLP 的玄学讨论

A:

(1). G 和 D 的设计,D 用 CNN 比较多,G 用 seq2seq 的设计比较多,RNN/LSTM 用的比较多。

(2). 学习率的控制问题,如果采用 policy gradient,由于它的 variance 比较大,学习率不能太大,两者的学习率也要均衡,对实验效果的影响比较显著。(可以参考 Adversarial Neural Machine Translation 的讨论)

(3). 如果有监督信息,尽量用上监督信息,以机器翻译为例,用上 bilingual supervised training 能使训练更稳定。

(4). 下面这个 trick 来自于 reddit 的用户 LeavesBreathe:

I have had a very hard time getting them to work with RNNs. Talk about a learning rate adjustment nightmare.

One thing curiously that has helped me is training the Discriminator on discriminating between pre-trained generator network outputs.

a). Train a generator (G0) as normal using max-likelihood.

b). Train your discriminator to discriminate between inputs of this generator (G0) and real data.

c). Start with a fresh generator (G1) and use the GAN architecture to train it using the same discriminator.

My theory as to why this works better is that the discriminator already has some experience with how language works. When I child learns how to talk, they listen to words first, and learns to discriminate word order first. After having enough training data, a child then learns to generate words.

传送门:Generative Adversarial Networks for Text • r/MachineLearning

Q: GAN 比较有可能解决 NLP 领域的哪些问题?

A: 离散序列数据的生成目前还存在比较大的问题,生成的数据意义不大。

(1). 半监督学习是比较容易做好的一个方向,如分类问题。

(2). 机器翻译也能 work,近期有一些文章得到了较好的结果。

(3). 检索系统,如 IRGAN,可以做检索式问答、推荐等。

3. 参与讨论

请添加管理员微信:wxpengge,备注「GAN」申请入群。

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

微信公众号:PaperWeekly

新浪微博:@PaperWeekly

    原文作者:张俊
    原文地址: https://zhuanlan.zhihu.com/p/27613440
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞