美文网首页
SeqGAN学习笔记(一)

SeqGAN学习笔记(一)

作者: p_w | 来源:发表于2020-02-08 23:59 被阅读0次

    本篇文章为本人目前对论文《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训练的神经网络生成器存在一些问题:

    • 在训练过程中使用了Teacher-forcing方法,导致了exposure bias的问题。
    • 逐词评判loss的方法不合理,应当以整个句子作为判断标准。
    • 语料库不能完全覆盖真实情况的语料。

    论文中举例了一些改进这些方面的例子,但认为这些方法都没有从根本上解决问题。于是便引出了本论文的中心问题,为什么要用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领域有什么难点呢?

    相关文章

      网友评论

          本文标题:SeqGAN学习笔记(一)

          本文链接:https://www.haomeiwen.com/subject/lmjethtx.html