SeqGAN学习笔记(一)

2020-02-08  本文已影响0人  p_w

本篇文章为本人目前对论文《SeqGAN: sequence generative with adversarial nets with policy gradients》的学习与总结,欢迎批评指正。

论文思路

1、论文研究的问题

此篇论文意在将生成式对抗网络(GAN)这一训练生成模型的新方法应用在离散序列生成领域。论文中选取的任务之一是text generation。
简单来说,text generation的目标是训练一个神经网络(生成器)自动生成符合语言模型P(sentence)$的语句:

P(sentence) =
P(x_{1},x_{2},...,x_{t})=
P(x_{1})P(x_{2}|x_{1},...,P(x_{t}|x_{1},...,x_{t-1}))

主流的训练该神经网络的方法为使用真实的语料,在观察到x_{1},...,x_{t-1}的情况下maximizex_{t}的log likelihood,即MLE:

L(x)=-log\sum_{t=1}^{T}P(x_{t}|x_{1},...,x_{t-1})

那么,问题来了。使用MLE训练的神经网络生成器存在一些问题:

论文中举例了一些改进这些方面的例子,但认为这些方法都没有从根本上解决问题。于是便引出了本论文的中心问题,为什么要用GAN来做这件事情,GAN做出了哪些改变。

2、为什么用GAN

如上一节所陈述的使用MLE训练模型存在的问题,MLE只能采样现有的部分语料,计算loss,然后通过loss回调参数,这就导致一些真实数据中的概率分布必然不可能被模型学习到。而GAN不同,GAN训练的生成器具有“创造性”。
众所周知,GAN中的生成器的参数调整来源于判别器“传回的判断”。我之前思维定势的以为这个“传回的判断”也是一个真实的loss,实际并不是,原始的GAN中生成器判别器间并没有直接的“联系”。它们之间是通过GAN的目标函数巧妙地“联系”在一起的。如下图所示:


李宏毅老师讲课内容

可以看出,在生成器生成something之后,判别器通过从真实数据中“学”到的东西判断something是假的,判别器所“学”的东西比有限的采样中样本的MLE的loss要能包含更多信息,因此生成器在对抗判别器所“学”时,也包含了很多自己学到的东西,因此具有了一定的“创造性”。
在数学理论上,GAN的优势体现在JS divergence上,感兴趣的话可以了解KL divergence与JS divergence的区别与联系。
理解完GAN的优势后就要思考为什么要开发SeqGAN呢?GAN用在NLP领域有什么难点呢?

上一篇下一篇

猜你喜欢

热点阅读