学习SeqGAN原理

(一)

论文分享-- >SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient
简单解说:生成器就是一个CNN 网络,我们会将input_x (二分类的) reshape 成一个四维的张量,然后通过各种的卷积,pooling 操作得到一个结果,然后再经过一个线性操作最终得到只有二维的张量,再做一个softmax 操作得到pred 作为reward 值。

(二)

Exposure Bias问题
SeqGAN----Exposure Bias问题_爬行的研究生的博客-CSDN博客

(三)

生成器:目标函数-各个状态价值的和,状态价值怎么算?策略函数×动作价值,策略函数是用策略网络训练出来的,动作价值不知道怎么办?用roll-out估算出一整个序列的动作就能用判别器计算其动作价值了。
SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient读书笔记_时光正好466的博客-CSDN博客

(四)

复现代码
https://github.com/natnij/seqGAN_pytorch

(五)

论文理解:
SeqGAN中生成模型G的目标是最大化期望奖励reward,简单说就是做出可能是奖励最大的选择,其公式如下:
在这里插入图片描述

上式中J是目标函数,E[]是期望,R是序列整体的奖励值,s是状态,θ是生成模型的参数,y是生成的下一个词(动作action),G是生成模型,D是判别模型,Q是动作价值(action-value)。简单地解释公式:希望得到一组生成模型G参数θ;能在s0处做出最佳选择,获取最大回报RT,而如何选择动作又取决于动作的价值Q。
在这里插入图片描述

动作价值是由判别函数D判定的,第T个时间步是最后一个时间步,上式中列出的是判别函数对完整系列的打分。若判别该序列为真实文本,则奖励值R最大。
在生成第t个词时,如何选择(动作a)涉及前期已生成的t-1个词(状态s),以及后续可能的情况,假设此时用模型Gβ生成N个备选词串(Yt:T),再用判别模型D分别对生成的N句(Y1:T)打分,此时使用了蒙特卡洛方法(MC),如下式所示:
在这里插入图片描述

这里的生成模型Gβ与前面Gθ通常使用同样的模型参数,有时为了优化速度也可使用不同模型参数。这里使用的蒙特卡洛算法,像下棋一样,不仅要考虑当前一步的最优解,还需要考虑接下来多步组合后的最优解,用于探索此节点以及此节点后续节点(Yt:T)的可能性,也叫roll-out展开,是蒙特卡洛搜索树中的核心技巧。
根据不同的时间步,采取不同的动作价值计算方法:
在这里插入图片描述

在最后一个时间步t=T时,直接使用判别函数D计算价值;在其它时间步,使用生成模型Gβ和蒙特卡洛算法生成N个后续备选项,用判别函数D打分并计算分数的均值。
SeqGAN与GAN模型相同,在训练生成器G的同时,判别器D也迭代地更新其参数。
在这里插入图片描述

此处公式与GAN相同,即优化判别模型D的参数φ,使其对真实数据Pdata尽量预测为真,对模型Gθ生成的数据尽量预测为假。

在这里插入图片描述

  • 程序定义了基本生成器Gθ,roll-out生成器Gβ,判别器D,以及训练集S。
  • 用MLE(最大似然估计)预训练生成器G。(2行)
  • 用生成器生成的数据和训练集数据预训练判别器D。(4-5行)
  • 进入迭代对抗训练:(6行)
  • 训练生成器(7-13行) 在每一个时间步计算Q,这是最关键的一步,它利用判别器D、roll-out生成器Gβ以及蒙特卡罗树搜索计算行为价值,然后更新policy gradient策略梯度。
  • 训练判别器(14-17行) 将训练数据作为正例,生成器生成的样例作为反例训练判别模型D。
    其Pytorch代码比较简单,与论文中描述的模型不完全一致,比如它的G和D都使用GRU作为基础模型,也没有实现rollout逻辑,只是一个简化的版本,优点在于代码简单,适合入门。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值