Self-critical Sequence Training for Image Captioning
Self-critical Sequence Training for Image Captioning
时间:2017
Intro
近年来策略梯度(policy-gradient)在训练深度端到端系统上展现了它的能力,它可以以不可导的度量作为目标函数,本文考虑的问题就是使用强化学习来训练image captioning模型,称为self-critical sequence training(SCST),它是一种REINFORCE算法,但它不使用baseline来正规化rewards以减小方差,而是使用新的test-time inference算法来正规化reward,我们发现在测试时使用贪婪解码直接优化CIDEr的效率十分高,最终模型将CIDEr从104.9提升到了114.7
传统的nlg模型往往以最大化似然函数作为目标,但这使得训练和测试之间出现了断层,因为测试是的时候模型使用的是之前预测的词来预测下一个词,这个exposure bais使用错误在测试的时候不断累积。模型在训练时的交叉熵损失和测试时使用的BLEU,ROUGE,METEOR,CIDEr等度量也存在不一致性
Caption Models
FC Models,图片编码器使用一个CNN,然后用线性映射映射到词向量空间中,以这个向量作为第一个输入的词:
其中是2单元的maxout函数,代表单元,戴氏sigmoid函数,模型输出
记为模型的参数,通常模型是在交叉熵(XE)上优化
Attention Model(Att2in),attention特征仅输入到cell node中
其中是attention feature,对于N个不同位置的特征,它计算为
Reinforcement Learning
形式化,用RL的术语描述整个任务
- agent:LSTM
- environment:words和image features
- policy:模型参数决定policy
- reward:生成句子的CIDEr
训练的目标是最小化负期望回报
REINFORCE策略梯度算法,REINFORCE策略梯度为
实践中通常使用一个Monte-Carlo采样来估计均值
REINFORCE with a Baseline,为了减少方差,REINFORCE可以引入Baseline
同样使用单个采样来估计
Final Gradient Expression,最终的梯度为
其中是softmax函数的输入,
Self-critical sequence training(SCST)
SCST的核心思想是用当前模型在inference时的reward来baseline REINFORCE算法,
其中是当前模型在测试时得到的reward
Experiments
使用XE训练的模型作为预训练模型,结果如表所示
在不同的度量上训练
可见在CIDEr上训练的效果最好
结论
本文给出了一个基于策略梯度的image captioning训练方法,在MSCOCO上达到了SoTA的效果