image caption笔记(六):《self_critical (scst)》

现在image caption主要存在的问题有:

1、exposure bias:模型训练的时候用的是叫“Teacher-Forcing”的方式:输入RNN的上一时刻的单词是来自训练集的ground-truth单词。而在测试的时候依赖的是自己生成的单词,一旦生成得不好就会导致误差的积累,导致后面的单词也生成得不好。

2、模型训练的时候用的是cross entropy loss,而evaluate的时候却用的是BLEU、ROUGE、METEOR、CIDEr等metrics,存在不对应的问题。

由于生成单词的操作是不可微的,无法通过反向传播来直接优化这些metrics,因此很多工作开始使用强化学习来解决这些问题。

但强化学习在计算期望梯度时的方差会很大,通常来说是不稳定的。又有些研究通过引入一个baseline来进行bias correction。还有一些方法比如Actor-Critic,训练了一个critic网络来估算生成单词的value。

而本文的方法则没有直接去估算reward,而是使用了自己在测试时生成的句子作为baseline。sample时,那些比baseline好的句子就会获得正的权重,差的句子就会被抑制。具体做法会在后面展开。

 

 

两种模型:

FC和attin

第一种和show and tell 的公式差不多,attin和show attend and tell 的区别在于上下文变量,attin只在输入门处添加。

使用ADAM方法优化的时候,这种结构的表现优于其他结构。

 

原本的结构:

 

更改之后:

 

 

作者的核心思想是,在训练的时候,对于每个批次的预测,按照概率来取词,生成预测结果。与gt比较,计算CIDER作为score1。

同时按照greed算法取词,生成预测结果,作为baseline使用,它与gt比较计算CIDER作为score2。

reward=score1-score2  即为强化学习的奖励。有了baseline,可以避免梯度过大的问题。

将奖励加入损失函数,  new_loss=-reawd*loss

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值