- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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呢?我们⽤到了蒙特卡罗树搜索的⽅法。即使⽤前⾯已经产⽣的序列,从当前位置的下
您可能关注的文档
最近下载
- 2024年杭州市粮食收储有限公司人员招聘考试题库及答案解析.docx
- 220KV变电站电气二次部分设计毕业设计(论文).doc
- 烧结与球团生产操作与控制知识点4:造球操作造球操作.pptx
- 人力资源服务公司外包员工手册保密制度.docx
- 物理化学 课件第1章 热力学第一定律.ppt VIP
- 沪粤版八年级下册物理全册新质教学课件(配2025年春改版教材).pptx
- 医院培训课件:《穿脱隔离衣》.pptx
- 2006-2020 年全国地震重点监视防御区基本情况统计.pdf
- 2023年陕西国际商贸学院数据科学与大数据技术专业《数据库原理》科目期末试卷B(有答案).docx VIP
- 老子-道德经课件.ppt VIP
文档评论(0)