网站大量收购独家精品文档,联系QQ:2885784924

对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析.pdf

对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析.pdf

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对对抗抗思思想想与与强强化化学学习习的的碰碰撞撞--SSeeqqGGAA NN模模型型原原理理和和代代码码解解析析 11、、背背 GAN作为⽣成模型的⼀种新型训练⽅法,通过discriminative model来指导generative model的训练,并在真实数据中取得了很好的效果。尽 管如此,当⽬标是⼀个待⽣成的⾮连续性序列时,该⽅法就会表现出其局限性。⾮连续性序列⽣成,⽐如说⽂本⽣成,为什么单纯的使⽤GAN没 有取得很好的效果呢?主要的屏障有两点 : 1)在GAN中,Generator是通过随机抽样作为开始,然后根据模型的参数进⾏确定性的转化。通过generative model G的输 出,discriminative model D计算的损失值,根据得到的损失梯度去指导generative model G做轻微改变,从⽽使G产⽣更加真实的数据。⽽在 ⽂本⽣成任务中,G通常使⽤的是LSTM,那么G传递给D的是⼀堆离散值序列,即每⼀个LSTM单元的输出经过softmax之后再取argmax或者基 于概率采样得到⼀个具体的单词,那么这使得梯度下架很难处理。 2)GAN只能评估出整个⽣成序列的score/loss,不能够细化到去评估当前⽣成token的好坏和对后⾯⽣成的影响。 强化学习可以很好的解决上述的两点。再回想⼀下Policy Gradient的基本思想,即通过reward作为反馈,增加得到reward⼤的动作出现的概 率,减⼩reward⼩的动作出现的概率,如果我们有了reward,就可以进⾏梯度训练,更新参数。如果使⽤Policy Gradient的算法,当G产⽣⼀ 个单词时,如果我们能够得到⼀个反馈的Reward,就能通过这个reward来更新G的参数,⽽不再需要依赖于D的反向传播来更新参数,因此较好 的解决了上⾯所说的第⼀个屏障。对于第⼆个屏障,当产⽣⼀个单词时,我们可以使⽤蒙塔卡罗树搜索(Alpho Go也运⽤了此⽅法)⽴即评估当前 单词的好坏,⽽不需要等到整个序列结束再来评价这个单词的好坏。 因此,强化学习和对抗思想的结合,理论上可以解决⾮连续序列⽣成的问题,⽽SeqGAN模型,正是这两种思想碰撞⽽产⽣的可⽤于⽂本序列⽣ 成的模型。 22、、SSeeqqGGAA NN的的原原理理 SeqGAN的全称是Sequence Generative Adversarial Nets。这⾥打公式太⿇烦了,所以我们⽤word打好再粘过来,冲这波⼿打也要给⼩编⼀ 个赞呀,哈哈 ! 整体流程 模型的⽰意图如下 : Generator模型和训练 接下来,我们分别来说⼀下Generator模型和Discriminator模型结构。 Generator⼀般选择的是循环神经⽹络结构,RNN,LSTM或者是GRU都可以。对于输⼊的序列,我们⾸先得到序列中单词的embedding,然后 输⼊每个cell中,并结合⼀层全链接隐藏层得到输出每个单词的概率,即: 有了这个概率,Generator可以根据它采样⼀批产⽣的序列,⽐如我们⽣成⼀个只有,两个单词的序列,总共的单词序列有3个,第⼀个cell的输 出为(0.5,0.5,0.0),第⼆个cell的输出为(0.1,0.8,0.1),那么Generator产⽣的序列以0.4的概率是 1-2,以0.05的概率是 1- 1。注意这⾥Generator 产⽣的序列是概率采样得到的,⽽不是对每个输出进⾏argmax得到的固定的值。这和policy gradient的思想是⼀致的。 在每⼀个cell我们都能得到⼀个概率分布,我们基于它选择了⼀个动作或者说⼀个单词,如何判定基于这个概率分布得到的单词的还是坏的呢?即 我们需要⼀个reward来左右这个单词被选择的概率。这个reward怎么得到呢,就需要我们的Discriminator以及蒙塔卡罗树搜索⽅法了。前⾯提 到过Reward的计算依据是最⼤可能的Discriminator,即尽可能的让Discriminator认为Generator产⽣的数据为real-world的数据。这⾥我们设 定real-world的数据的label为 1,⽽Generator产⽣的数据label为0. 如果当前的cell是最后的⼀个cell,即我们已经得到了⼀个完整的序列,那么此时很好办,直接把这个序列扔给Discriminator,得到输出为 1的概 率就可以得到reward值。如果当前的cell不是最后⼀个cell,即当前的单词不是最后的单词,我们还没有得到⼀个完整的序列,如何估计当前这个 单词的reward呢?我们⽤到了蒙特卡罗树搜索的⽅法。即使⽤前⾯已经产⽣的序列,从当前位置的下

文档评论(0)

liuzhouzhong + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档