生成对抗网络记录(二)

       最近看了李宏毅老师关于gan的课程,并阅读了一些相关的论文,做一些笔记以便日后回顾。

       文字转化为图像,如果仅仅通过传统的有监督学习,将会导致生成的图像很模糊。比如,图像为多个火车的不同侧面图与正面图,有监督学习学到的图片最终将是这些图片的平均。因此需要使用gan去训练。如果只是采用传统的gan的话,输入文字与分布z,generator生成一幅图像,将会导致训练完后generator生成的图片和目标图片很相近,但是与输入的文字可能没有关系。因此出现了conditional gan。

       Conditional gan的目标不仅仅是让generator生成的分布于原始数据分布尽可能相似,而且需要输入的条件如文字转图像中的文字与图像两者需要匹配。因此算法如下:

       可以看到唯一的差别就是添加了一项匹配损失。

       Condition gan有两种网络形式

 

       gan可以用于seq to seq问题中。seq2seq一般用最大似然求解,但是最大似然得到的结果往往不是很好,如are you ok?回答i am john与not nad,往往最大似然认为前者比较好。此时可以通过两种方式提升seq2seq的效果:强化学习或gan。两者可以结合使用。

       下图为一个机器人聊天的例子,输入句子,输出回答句子。首先用rl解决该问题。用generator生成输出,generator要最大化收益期望。这个期望由人来给一个奖励值,来评价输入与输出的句子是是否匹配。

       如何最大化收益呢,可以用过强化学习中的policy gradient实现。对于seq2seq,每次输入,输出是一个概率,因此输入c,输出的x是一个分布。收益的期望值为

       即最大化下面的期望

       对收益求导即policy gradient

       因此参数的更新方式为

       因此当R大于0的时候,参数值增加,当R小与0时,参数值减少。

RL与最大似然的区别如下

       当采样的xi的reward都是正的,参数值将无法准确更新,往往这个时候会在r上减去一个数,让其有正有负。

       由于现实情境中人的互动很难那么频繁,reward不会随着模型训练进行实时反馈。因此可以将rl与gan结合使用。

       该rl过程和conditional gan类似,generator最小化输出与实际输出的差异,即最大化奖励,discriminator不仅需要最大化生成的句子与实际输出的差异,即判断当前输出的句子是真的还是假的(回馈奖励),同时需要输入的句子与输出的句子尽可能的匹配。用discriminator代替人去反馈奖励。

       在seq2seq中gan的结构是这样的,输入seq2seq一个token,输出一个token,将生成的token输入到discriminator中,输出一个分数。

 

       Seq2seq中输出时是一个采样过程,输出一串token,它是不可微分的。在采样的过程中,对输出的影响是不确定的。因此是不可微分的。有多种方式解决该问题:1、使输出连续2、使用强化学习。

       使用输出连续有种方式是将输出的token变为概率分布,取代直接采样。由于实际的输出是0和1,而生成的是一个概率分布,discriminator对于这两者分辨比较容易,generator最终生成的分布默认为尖峰分布,这是不太合理的,语言模型输出的分布不一定是尖峰分布。

       通过使用强化学习,使用policy gradient去更新generator,让generator收益最大,该收益的求解可以通过discriminator的输出求到。

 

       该求解是在每一步进行收益的求解的求和,

       如what’s your name,在回答i don’t know时,整体比较差,因此i下降,don’t下降等,但i其实应该是上升的。如果另一个采样回答 i am john时,i又会上升,因此采样足够多的时候,该影响可以抵消。但实际情况并不会采样如此均匀。因此可以进行改进,对每一步进行求解收益,而不是只求解最终的收益。其中一种实现可以通过蒙特卡罗搜索实现。通过gan生成的句子与最大似然的句子对比,往往gan生成的会更长与更复杂。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值