大多数现有的基于注意力的图像描述方法都在一个时间步内关注当前单词和视觉信息并生成下一个单词,而不考虑视觉和语言的连贯性。
提出一种模型: Look Back and Predict Forward method(LBPF) ,以进一步整合过去的视觉信息和未来的语言信息。包括 Look Back(LB)和 Predict Forward(PF)两个部分。
我们的 LB 方法将上一个时间步的注意力值输入到当前注意力模块的输入中,以满足人类的视觉连贯性;
PF 方法在一个时间步内生成两个下一个单词,它利用语言连贯性并整合未来的信息,在推理阶段,将生成的两个概率组合在一起以预测当前单词。
首先给定一个图像I,我们使用预训练的编码器模型生成图像特征 V={v1,v2,····, vk}, vi ∈ \in ∈RD,并将平均池化向量v~作为全局信息,然后我们在解码端应用我们的 LBPF 方法。
给定k个空间图像特征向量 V={v1,v2,····, vk} ∈ \in ∈ RD×k 和当前隐藏状态 ht ∈ \in ∈Rd,传统的注意力模块使用注意力函数fatt来计算加权平均向量attt为:
一般情况下,计算出的加权平均向量attt直接与ht连接起来,预测下一个词y′t+1。然而attention的区域应当有视觉的连贯性,且能够为之后的时间步提供信息。
因此,我们提出了 Look Back 方法,该方法有助于将先前的注意力结果考虑在内。如上图所示,我们引入 attt-1,这是之前的注意力结果,并将其与当前隐藏状态ht连接,作为fatt的输入。我们将 o o o表示为连接操作,我们得到新的 attt为:
加权向量 α \alpha α和最终的注意力attt具体计算过程为:
其中,Ht=ht o o o attt-1;Wvu, Whu和wu是fatt中的参数; α \alpha αt = { α \alpha α1,t, α \alpha α2,t,…, α \alpha αk,t} ∈ \in ∈ Rk 是一个和为1的k维向量。
值得一提的是,在我们的 Look Back 模型中,我们简单地使用 attt-1 的值并切断通过它到上一个时间步的反向传播。如果所有的梯度都累加在一起,注意力模块可能会变得过于复杂并且难以收敛。
在大多数现有的序列生成方法中,将当前词 yt 经过word embedding送入基于RNN的架构中,并在该时间步预测下一个词 y’t+1。在推理阶段,y′t+1 很大程度上取决于 y′t,错误采样的概率导致序列生成不可避免的累积误差(exposure bias)。我们在此提出了 Predict Forward 方法来在一个时间步中预测 y’t+1 和 y’t+2 以缓解这个问题。
如上图所示,给定 LSTM 的隐藏状态 h1t 和视觉特征 V,我们通过 Att 模块得到 att1t 并将它们一起输入 LSTM2。这里我们将注意力函数记为 fatt,将 LSTM2 的数学运算记为 F2,将拼接运算记为 o o o,则 h2t 可以计算为:
h2t-1 是上一个时间步 LSTM2 输出的隐藏状态。
然后,h2t 送入 logit1 层来获得生成 y’t+1 的概率 p2t :
在我们提出的 PF 模块中,h2t 除了输入到 logit1 层之外,它还进一步经过 Att 和 LSTM2 模块并预测 h3t 。
相同的颜色表示 Att 模块和 LSTM2 的参数是相同的。与原始方法的主要区别在于 LSTM2 的隐藏状态更新为h2t 。然后 h3t 由以下生成:
接下来,将 h3t 连接到另一个 logit2 层以预测 y’t+2 的概率 p3t 为:
连接 LSTM2 和 h3t 的虚线表示 h3t 不会传递到下一个时间步,只是用来生成 y′t+2。相反,在下一个时间步中,h2t在下一个时间步中被存储,用来生成 h3t 和 h2t+1 。
我们将 Predict Forward 模块表示为 PF-LSTM 单元,以便进一步解释。
在训练阶段,采用交叉熵损失衡量,PF-LSTM分T个步骤执行,其中T为 ground-truth Y的长度。
这个过程会产生两个预测语句:Y1’ = {y1’1,y1’2,…,y1’T,EOS} 和 Y2’ = {y2’2,y2’3,…,y2’T,EOS,EOS} ,其中,Y1’对应h2t的结果, Y2’对应h3t的结果。
训练阶段的输入从 (BOS) 开始,通常为零向量,预测序列以 (EOS) 结束。当 h2t 输出 EOS 时,我们放弃了Y2’ 中的最后一个 EOS。
然后,我们将损失函数定义为:
loss1 +loss2 同样为 Y1’ 和 Y2’的损失函数 ,这促使模型更准确的预测 y′t+1 和 y′t+2。为了利用这一优势,我们通过以下方式将 y1′t 和 y2′t 的预测概率组合在一起:(15)
λ \lambda λ 是一个权衡系数,用来平衡 p2t 和 p3t-1 。我们通过 p’t 来预测下一个单词。
推理阶段采用了波束搜索的方法,从这两种概率分布来看,波束大小为3基本上可以保证最优单词的存在。
这个操作使得预测 y’t+1不再简单地依赖于采样的 y’t,也可以直接查看前一时间步长的生成结果,有效地减少了错误采样的累积误差。
我们还将我们的模型与 CIDEr 上的 self-critical(SC) 优化一起应用。传统的关于图像描述生成的 self-critical 学习侧重于优化预测序列上的 CIDEr 分数。训练过程是最小化负期望奖励:
其中,r(y1:T) 是序列 Y1’ 的 CIDEr 分数, θ为网络参数。
根据基于强化学习方法,梯度近似为:
其中,ys1:T 表示采样序列,ym1:T 表示最大采样序列,基线为 r(ym1:T) 反映网络的当前容量。
在 PF 模块中,同时生成了两个序列 Y1’, Y2’,而 self-critical sequence training (SCST) 肯定需要一个序列进行优化。为了将我们的 PF 模型与 SCST 一起应用,我们选择 Y1’ 进行 CIDEr 分数优化训练,并通过将 Y2’ 的交叉熵损失附加到 Y1’ 来强制 Y2’ 逼近 Y1’,并将 Y1 作为 ground-truth(以第一步学习的结果为标签计算交叉熵损失)。交叉熵损失 Lc 计算如下:
然后我们将 self-critical 损失 Lr 和交叉熵损失 Lc 结合在一起,作为 SCST 的总损失:
在 SCST 的推理阶段,我们也将 Y1’ 和 Y2’ 的概率一起使用,并按照公式(15)生成最终序列。
Look Back 模型专注于注意力模块,并将上一个时间步的注意力结果作为输入,这有助于模型嵌入来自先前视觉注意力的信息。预测前向模型旨在在一个时间步中预测接下来的两个单词。我们可以将这两个模型组合在一起,只需在一个时间步中为下一个时间步保留两个注意力结果(att1t 和 att2t),如图 1所示。通过引入先前和未来的信息,我们的 LBPF 模型能够通过情境和视觉信息的上下文来预测下一个单词,从而提供更多的细节和指导。
LSTM2 和 Att 相同的颜色表示它们共享相同的参数;Et 表示 yt 的词嵌入。