论文笔记:Self-critical Sequence Training for Image Captioning

Self-critical Sequence Training for Image Captioning

1.提出问题

  • 文本的生成模型通常经过训练,以使用反向传播在给定前一个 ground-truth 单词的情况下最大化下一个 ground-truth 单词的可能性。这种方法被称为 ”Teacher Forcing“ 。但是,这种方法会在训练和测试之间造成不匹配,因为在测试时,模型使用模型分布中先前生成的单词来预测下一个单词。这种 exposure bias 会导致测试时生成过程中的错误累积,因为该模型从未暴露于自己的预测中。

  • 之前这个问题是用 “Professor Forcing” 解决的,它使用对抗训练,来使从网络中采样的上文词汇尽量贴合 ground truth。但之前的方法,模型训练的时候用的是cross entropy loss,而evaluate的时候却用的是BLEU、ROUGE、METEOR、CIDEr等评价指标,存在不对应的问题。

  • 由于生成单词的操作是不可微的,无法通过反向传播来直接优化这些metrics,因此很多工作开始使用强化学习来解决这些问题。但强化学习在计算期望梯度时的方差会很大,通常来说是不稳定的。又有些研究通过引入一个baseline来进行偏差校正。还有一些方法比如Actor-Critic,训练了一个critic网络来估算生成单词value,但这些也是不稳定的。

2.提出创新点

本文提出了一种新的序列训练方法,称之为 self-critical sequence training (SCST),并证明 SCST 可以显着提高图像描述系统的性能。 SCST 是一种强化算法,它不是估计 reward ,而是使用了自己在测试时生成的句子作为baseline。sample 时,那些比baseline好的句子就会获得正的权重,差的句子就会被抑制。

3.方法

3.1、Captioning Models

FC models

首先,使用 CNN 对输入图像F进行编码,然后乘上一个嵌入矩阵 WI,得到一个x1。把生成的单词送入LTSM:

在这里插入图片描述

Φ \Phi Φ是一个2单元的非线性 maxout 函数, ⊗ \otimes 代表单元;σ 是sigmoid函数。

每个单词xt可以看作一个独热向量乘上一个维度和WI一样的嵌入矩阵E。

BOS代表每个句子的开始,EOS代表结束。

h0和co初始化为0。

LSTM 使用 softmax 函数输出下一个单词 wt 的分布:(1)

在这里插入图片描述

之后让θ 表示模型的参数,参数 θ 是通过最大化观察到的序列的可能性来学习的。具体来说,给定一个目标ground truth 序列(w1,…,wT),目标是最小化交叉熵损失(XE):

在这里插入图片描述

其中 pθ(wt|w1, . . . , wt−1) 由方程(1)中的参数模型给出。

Attention Model (Att2in):

修改了LSTM,把 attention 特征仅输入到 cell node 中:

在这里插入图片描述

其中 It 是 attention-derived image feature,代表对于N个不同位置的特征,它计算过程为:

在这里插入图片描述

h0和co同样初始化为0。

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

3.2、Reinforcement Learning

把序列生成看作是一个RL的问题:

  • Agent: LSTM
  • Environment: 单词和图像的特征
  • Action: 预测下一个生成的单词
  • State: LSTM 的单元和隐藏状态、注意力权重等
  • Reward: 生成句子的 CIDEr 分数

训练的目标是最小化Reward的负的期望:

在这里插入图片描述

ws = (ws1, . . . ,wsT) 是在时间步t从模型中采样的单词。

实际上,L( θ \theta θ)来自p θ \theta θ的单个样本估计(而不是选择概率最大的那一个):

在这里插入图片描述

带有 REINFORCE 的策略梯度:

使用REINFORCE方法计算上述目标函数的梯度:

在这里插入图片描述

推导过程:

在这里插入图片描述

在实践中,期望梯度可以通过使用单个蒙特卡洛抽样从p θ \theta θ中抽样ws近似。对于小批量中的每个训练样例:

在这里插入图片描述

带有 Baseline 的 REINFORCE:

由 REINFORCE 给出的策略梯度可以推广到计算与相对于参考奖励或基线 b 的 action 值相关的奖励:

在这里插入图片描述

基线可以是任意函数,只要它不依赖于“action”ws ,因为在这种情况下:

在这里插入图片描述

这说明b不会改变预期梯度,但重要的是,它可以降低梯度估计的方差。对于每个训练案例,我们再次使用单个样本 ws∼pθ 来近似预期梯度:

在这里插入图片描述

最终梯度表达式:

根据链式法则和编码过程中注意力参数模型p θ \theta θ:

在这里插入图片描述

其中st是注意力模型中softmax函数的输入。使用带有基线b的 REINFORCE 算法,img的梯度计算为:

在这里插入图片描述

(Reinforcement learn-ing neural turing machines. 推导这篇论文提到,但没看懂啥意思。)

3.3、Self-critical sequence training (SCST)

自临界序列训练 (SCST) 方法的中心思想是将 REINFORCE 算法与当前模型在测试时使用的推理算法下获得的 reward 作为基线。

来自模型的样本 ws 的负奖励的梯度,到时间步 t 处的 softmax 激活然后变为:

在这里插入图片描述

其中 r(w^) 是当前模型在测试时使用的推理算法下获得的 reward。

因此,模型中reward高于w^的样本将被“提高”或概率增加,而导致reward较低的样本将被抑制。

对于如果当前sample到的词比测试阶段生成的词好,那么在这次词的维度上,整个式子的值就是负的(因为等式右边一定为负),这样梯度就会上升,从而提高这个词的分数,而对于其他词,等式右边一定为正,梯度就会下降,从而降低其他词的分数。

我们使用贪婪解码:

在这里插入图片描述

SCST阶段的训练过程如图所示:

在这里插入图片描述

这样,最大限度地减少了使用测试时间推理算法进行基线对训练时间的影响,因为它只需要一个额外的前向传递,并训练系统进行优化,以在测试时间进行快速、贪婪的解码。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 自我批评序列训练是一种用于图像字幕生成的技术。它通过在训练期间对生成的字幕进行自我批评,以改进模型的性能。该方法使用了一种称为“自我注意力”的技术,它允许模型在生成字幕时关注先前生成的单词,从而提高生成的质量。自我批评序列训练已被证明是一种有效的技术,可以在各种图像字幕生成任务中提高模型的性能。 ### 回答2: Self-critical sequence training(SCST)是一种图像标注模型的训练方法,它通过对模型输出的错误进行自我评估来提高图像标注的精度。SCST是一种监督式学习方法,它通过与基础模型进行有针对性的反馈,来提高模型的输出结果。 在SCST中,模型首先生成一个单词序列,然后通过自我评估方法计算序列的损失函数。模型会将自己生成的序列与参考答案进行比较,并根据两者之间的差异来调整自己的参数。如果模型生成的序列与参考答案相似度高,则可以认为模型输出的结果是正确的,模型会将该序列的损失函数作为最终的目标值进行优化。 SCST的另一个优点是它可以生成更加准确的图像标注。在传统的图像标注方法中,模型在标注一张图片时会依靠之前标注的其他图片的信息,但是这种方法的精度往往会受到前一个标注结果的影响。而SCST在每个输入图像上独立进行标注,每一步只考虑当前序列的损失函数,从而减少标注过程中的误差。 总的来说,SCST是一种有效的图像标注训练方法,它能够通过自我评估来优化模型,同时生成更加准确的图像标注。 ### 回答3: “自我批评顺序训练”是一种用于图像描述的深度学习技术。该技术的主要目的是提高用计算机生成图像描述的质量和准确性。 在传统的图像描述方法中,计算机通过“编码-解码”系统生成描述。首先将图像输入编码器,然后将编码结果传入解码器,最后给出相应的描述。但是这种方法很难准确地给出正确的图像描述,特别是对于长句描述来说。 为了解决这个问题,研究人员提出了自我批评顺序训练技术,该技术的基本思想是通过与人工生成描述的对比来训练模型。具体来说,这个技术包括三个关键步骤: 1. 生成描述。计算机将图像输入到编码器,然后用解码器生成一个最初的描述并提交给人工审核。 2. 人工批评。人工将计算机生成的描述与自己生成的描述进行比较,然后给出分数。 3. 重新训练。计算机接收到人工评分后,采取相应的操作来调整自己的模型。然后再进行描述生成,直到达到最终的分数为止。 通过这种方法训练的计算机模型,可以显著提高图像描述的准确度和质量。在使用这种技术进行研究时,研究人员还发现,自我批评顺序训练能减少过拟合现象的发生。因为它强制计算机与人类对比,从而避免了学习到过多的训练数据和模型参数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值