一言以蔽之:引入前一时序的注意力(ADP),引入 整个句子作为输入(LLC),以基本相同的参数和算量,实现CIDER-D提升2.32%
1. most conventional deep attention models perform attention operations for each block/step independently,which neglects prior knowledge obtained by previous steps.
2. we propose a novel method — DYnamic Attention PRior (DY-APR), which Attention Distribution Prior+Local Linguistic Context→dynamic attention aggregation
以往的注意力模型,多是独立针对block/step的,这导致了两个问题:
1.如果注意力是独立学习的(没有先验),则在全参数空间搜索的结果并不是很精准
2.需要大的数据集(ps:imgae net 沦为小数据集了)
我们发现‘高频共生词有更高的概率出现在同一个句子’(ps:应该是基于...的假设,熊猫和熊出现在一起的概率很高么?)提出了本地语境(语言先验)有助于词汇预测,又因为全局注意力机制易过平滑,我们又引入了基于前时序的先验。
注意力分配先验,ADP:
受仿生启发(逐步从一堆东西中找出感兴趣的而不是直接关注细节),由上层的注意力分布作为下层的归纳偏差(记为上层先验),上层先验和当前层注意力通过门机制一动态融合,门机制二用来平衡门机制一引入的噪音。如图
本地语境,LLC:
词嵌入向量由一组定长块组成(e.g. 512维向量=16组32维向量),第一个#C 块作为本地语境,由前一时序获得,记为 shift-through-time chunck ,再跟着一个由当前时序词嵌入线性转换获得的块。反向传播的时候带着本地语境一起更新,记为‘‘local–global attention’
ADP:
$A=\frac{QK^T}{\sqrt[2](d_k)}$ 注意力分数
$A^l_{agg}=\sigma(\alpha^l)A^l+(1-\sigma(\alpha^l))A^{l-1}_de$ 门机制一(融合注意)
其中$\alpha$ 是l层的权重直接由梯度下降更新,$\sigma$是门,使用了sigmoid,$A^l_{agg}$是l层的融合得分
$A^l_{de}=\sigma(\beta^l)A^l_{agg}$ 门机制二(滤波)
其中$\beta$类似$\alpha$,$A^l_{de}$为去噪得分,即最终的注意力得分。作者解释门机制一假设上层注意力与当前层注意力一致,而不同层的注意力也可能不一致,即噪音,为此引入门机制二用来滤波
LLC:
在预测t+1时序的时候,传统模型考虑了t时序的token,而这里考虑到了全序列。
first #C chunks ————由t-1时序获得
the following chunks——由t时序获得
最后拼接二者作为输入
因为共用了线性映射的参数,所以整个过程是没有参数开销的。(ps:唉,小老板,这钵怎么说)
t时序l层输入I时,公式如
$l_t=Concat(O_{t-1}W^c,O_tW^e)$
其中I输入,O输出,W权重,角标为背景/嵌入
训练逐步的从纯静态词转为全动态词。
懒得打公式了
数据集用的COCO,提取这块是ImageNet+Visual Genome
(ps:和VinVL差距还是比较大的)
效果图截了一部分意思下。作者给的评价是解决了更多UNK标识,而且更流畅
这个图的意思是说用了LLC之后,注意力的分布更集中,而且峰值变得更高了。