记录一次与大神们的关于GAN应用于NLP的讨论

96
加勒比海鲜王
2017.06.21 22:07* 字数 1281

欢迎走访我的CSDN博客阅读更多的机器学习相关原创博文。

说实话,是聆听了大神们,本人只是捧哏似的嗯、啊了几句。

之前paperweekly的GAN讨论组要进行一次讨论,给出了很多议题进行投票。里边有GAN in NLP、GAN and RL、半监督GAN等我比较感兴趣的话题。也有图像相关的关于GAN的正统问题。

没想到最后GAN in NLP获得了最多的票数。我原来对于把GAN应用于NLP叫做剑走偏锋,没想到志同道合的人这么多...

接下来是对讨论内容的完全记录,本文的最后是本人的一点点感悟。

下边的讨论问题与解答有些是文不对题的,首先是因为按照发言顺序整理,难免有插话的存在;第二,因为在讨论中大家的关注点比较集中,很多问题的讨论最后都会归纳到几个矛盾点上;还有就是有些内容关注的人并不是很多,因此也没有讨论出什么结果。另外,下边的问题有主题人按照议程提出的,有的是在讨论过程中同学们提出的。

最后,以下记录不代表本人立场,也不代表正确的解答。只是讨论记录。

  • 第一个问题: GAN目前在NLP中都尝试了哪些任务,主要思路是怎样的,效果如何?
A:有对话系统的,有纯文本生成的,有机器翻译的,也有IR的,越来越多的尝试。
B:还有做中文分词,文本分类的。
C:纯文本又可以做各种奇怪的任务,还有诗歌生成什么的。
D:见过有写唐诗的。
E:主要思路都是考虑d用来做真假判别,然后用rl的policy  gradient的方式来打分和更新。
  • 为什么采用policy gradient,而不是直接用gradient?
A:这感觉是NLP本身的一个难点,很多应用还缺乏非常合理的评价标准。
B:D本身就是作为一个判别器,所以说概率输出,就是这个概率作为分数。
C:因为文本是离散的,不能传导吧。
D:因为离散的序列在梯度微调时没有意义。
E:做过一些字符级生成的例子,效果不太好。
F:还是在原有任务上加rl效果比较好。
G:即使用的是word2vec之类连续的,微调之后可能得到一个什么都不代表的向量。
H:policy gradient的bias会比较大吧?
I:在文本生成里面,尤其是用了word2vec的。我这边提一个问题,我也不知道业界有没有方案。就是生成的向量是在空间里的,基本不可能对应到有意义的点(word),那么只能取最近的,那么如果这个向量做了优化,对GAN来说是非常敏感的,也许判别器就更难判断了,但是对词典里的词,是不敏感的,也许距离这个生成的向量的距离的排序没有改变。
  • 那么,如何才能降低GAN的敏感度呢?让优化更有意义
    ...

  • 目前GAN 在 NLP问题上的效果有多好?

A:我记得IR上做得最好的应该是IRGAN吧。
B:我觉得nlp上的gan和传统的不同,不是给噪声让他生成 而是在原有任务上改进,对就像irgan ,比如它的g ,其实是候选句 还是要sofmax。
C:G和D都是IR system,文章说,两个系统在对抗训练下,一般都会有一方比直接训练效果好。
D:SeqGAN是比较早做的,16年底放在arxiv上,但是效果目前可能有更好的,比如lecun刚放在arxiv上他们投17年nips的文章,用了wgan;IRGAN和SeqGAN都是UCL的Wang Jun老师和上交的Zhang Weinan组做的。
E:irgan有点像以前八十年代的minmax game theory。irgan的reward也是放g上,也不直接生成,而且从候选里面用softmax挑
F:另外我看irgan开源代码qa部分 没有用q和a的attention 引用的paper中有试过,所以还有提升空间 可能,g的reward通过d计算。
G:我看了代码,网络结构写得很简单,没有attention机制。
  • 其他任务目前的效果呢?比如对话系统,机器翻译,有没有同学来解答一下?
A:看过对话系统有一篇,思路和seqgan差不多。
B:seqgan算是一个开创之作?
C:16年底放arxiv上,算是最早的了吧,效果因此也没有很好,那时候wgan什么的才刚提出来。
D:不过g网络是seq2seq,d是hierarchical encoder (而非CNN)。
E:SeqGAN 的一作是个本科生,很是佩服。
F:除了Adversarial Learning for Neural Dialogue Generation之外,在chatbot 不知道还有其他没有,好像...没有了。
  • 第二个问题: 目前对抗生成文本的方法都有哪些?说说你看过的相关论文吧
A:话说gumble softmax似乎还没人提过。
B:一种可生成离散数据的可导的方法,但是一直没弄得很明白过。
C:中午我刚看了gumble softmax,它可以代替policy gradient,直接可导了。
D:这是简单粗暴的解决办法。
E:但是看结果也并没有好到哪里去,算是比较有潜力的方法之一吧。
提供了一种思路。
F:毕竟只是近似。
G:目前的方法主要是这两种吗?policy gradient和gumble softmax,还有其他的吗?(没有回答)
  • 有个基础的问题想请教一下,生成离散数据没法回传梯度,但隐层不是连续的么?为什么不直接用隐层的表示?像seq2seq 不也是在softmax 的输出基础上算的损失?
A:因为真实数据是离散的哦,为了给D和真实数据对应的生成数据,G所以也要生成离散的了。
B:因为在隐层上的细微更改没有意义
  • 第三个问题: GAN解决NLP问题,G和D的网络设计有哪些常见结构?各有什么优缺点?
A:这个方面可能比较多的架构就是seq2seq,还有hierarchy seq2seq
前面有同学提到g用seq2seq, d用hierarchical encoder
(接下来的回答又渐渐偏向了离散这个老生常谈)
B:可以用某种embedding方法把真实数据对应到某个表示空间,不过还是逃不过这个空间里的连续性问题
C:embedding的方法也会遇到问题,ian goodfellow讲过,词向量虽然是smooth的,但是词典是离散的
D:还原回去也只是近似的
E:所以我在想对loss加一项或者加权会不会有效,就针对离散,比如对最近的word的向量的距离+1,作为权值乘上原来的loss
F:让G生成的越接近离散loss越小?(对)
G:这个其实WGAN做的很好
  • 想起了没怎么认真看的IRGAN,他是怎么“选择”query对应的document的来着?想到如果可以有做出"选择"这个功能来似乎离散问题也不是特别大了?
它是通过一个G网络提特征,最后用softmax判断哪个document跟query最匹配
  • G和D的采用RNN,CNN都有文章做过了吧?有没有什么先验知识(玄学),可以指导我们什么情况下该用哪种?
A:感觉CNN做判别器比较多
B:CNN目前有没有拿去做generator的?
C:有吧,不过好像效果不太好
  • 第四个问题:GAN解决这类离散型序列问题的弊端
A:包括,Ian Goodfellow说的,离散数据的连续embedding空间的矛盾,只能做近似;policy gradient和gumble softmax存在bias
B:在生成text时,GAN对整个文本序列进行建模打分。对于部分(partially)生成的序列,十分难判断其在之后生成整个 (fully) 序列时的分数。
C:另一个潜在的挑战涉及RNN的性质(生成文本大多采用RNN模型)。假设我们试图从latent codes生成文本,error就会随着句子的长度成指数级的累积。最开始的几个词可能是相对合理的,但是句子质量会随着句子长度的增加而不断变差。另外,句子的长度是从随机的latent representation生成的,所以句子长度也是难以控制。
D:话说这个误差一直积累的问题,能不能加上self attention搞搞事情
attention现在有用到GAN的框架下了吗?
E:没有的话确实可以搞事情,效果不错的话,说不定一篇paper就出来了
F:jiwei li那篇用GAN做对话生成的文章就是seq2seq+attention来着
  • 下一个问题:你认为哪些NLP问题可能适合用GAN解决,现有的GAN方法可能坑太多,不一定适合那类NLP问题
A:我觉得,GAN做半监督还是比较有希望的,我觉得文本分类是一个可行的应用
B:对话生成如果有评估指标就应该可以做,但是现在没有
C:哈,在机器翻译中证明了gan的确是work的
D:半监督是比较有希望的哎,是不是可以通过GAN来做数据增强

(此时主持人召唤出大神一枚)

  • 你有篇工作吧 ,gan in nmt 可以给大家介绍一下
a:不过这个d的accuracy 包括d的设计也是很关键。另外得非常注意控制学习率,Adversarial neural machine translation
q:控制学习率有什么特别的技巧吗?
a:因为当把更新方式换成rl 的policy gradient之后,需要特别注意更新的学习率
q:D的设计能够展开说一下吗?
a:一般来说经验的设计,rl中对于学习率尽量保证小
a:我尝试了不同的学习率,发现规律的确是大了会影响结果
q:是因为policy gradient的variance太大吗?
a:恩,可以这么说
a:另外,尽量需要加入bilingual的supervised training,这点的确能够使训练更为stable
a:我个人觉得用gan的思路以及rl的方式去更新,的确是有帮助
  • 进入今天最后一个问题:目前GAN和基于检索方式的问答有哪些结合方法?
A:IRGAN是一种
B:大体看过的对话生成好像都是生成式的,那用IRGAN同样的思路做个检索式的对话系统似乎不是很难
A:generative和discriminative的检索方式都可以做,从IRGAN来看
填坑式创新。。感觉这算是IRGAN的特例了。。
A:大体上就分为生成模型和判别模型,IRGAN已经涵盖了这两种,或许我们可以再往细了讨论
A:generative/discriminative的检索式对话系统跟GAN有哪些结合方式?
A:我记得IRGAN里面说过,G可以直接生成样本,但是它们没有这么做,而是直接用softmax挑选
A:那么,直接生成样本是否也是一种方式?可行性如何?
C:检索式对话没有价值
A:也不是没有价值,我觉得检索出信息以后提取关键信息,后续可以定制个性回答

这是最后一个问题,可以看出来关注这个问题的同学已经不是很多了,因此也没有什么人来回答,一直是主持人在表达自己的看法,直到!!!C同学说了一句“检索式对话没有价值”...讨论就此结束。
因为对于这个问题我也不了解,所以无法进行评价。

接下来就我对于整个讨论表达一点点看法:

首先,文本是离散的。这一点毋庸质疑,也正是GAN应用在NLP的魅力所在。

从上边的讨论就可以看出,大部分都是会回归到这个问题的身上。

随后,同学们提到的最多的一个成果就是IRGAN。这篇论文我并没有看过,打算学习一下。
附上一个解读该论文的链接

关于seqgan,可以算是一个开创之作,提供了rl应用于GAN的思想。

还有gumble softmax,它可以代替policy gradient,只能说是提出了一种思路,因为它的生成效果不是很好,也说明这种思路的提升空间很大。

同学们还有的提到了GAN做半监督应用于文本分类的可能性,这也是我目前比较关注的方向之一。

最后,请大神们指教。

再附上一张大神对于本次讨论的总结图

相关链接:这次讨论的后续讨论内容记录

GAN
Web note ad 1