[阅读笔记7][ALBEF]Align before Fuse: Vision and Language Representation Learning with Momentum Distillat

接下来是albef,作者在21年9月发表的,在之后又发表了一系列相关的工作。

这篇论文主要有两个贡献,第一个贡献是提出了多模态融合前先进行特征对齐,也就是这个模型的名字ALBEF。第二个贡献是提出了动量蒸馏,缓解了带噪音的数据对模型带来的负面影响。
整个模型的结构并不复杂,左侧是一个vision transformer抽取图像特征,右侧是一个bert前六层抽取文本特征,然后通过对比学习使图像编码器和文本编码器输出的两个特征向量对齐,最后两个特征输入Bert后六层进行多模态融合。

在预训练阶段有三个损失函数,第一个是图文对比学习的损失,和moco那篇论文一样,也是动态维护了负样本队列,同样使用一个缓慢更新的动量模型,最后计算交叉熵损失。利用这个损失就完成了两个模态的对齐。
接下来的两个损失约束模态融合。
其中第二个损失使用的就是Bert中的完形填空损失。
第三个损失是图文匹配损失,图像特征和文本特征通过交叉注意力融合以后,使用[class] token位置的输出做一个二分类。但如果只是这样做的话这个模型效果并不好,假如batchsize为64,那么图文匹配上的就是64对,匹配不上的有64*64-64对,首先正负样本数量不均衡,然后就是这里的负样本都是easy negatives,在另一篇论文中有提到,easy negatives就是很明显不匹配的样本,比如这里的狗和飞机,放在多模态领域就是把飞机这张图片转成文字:这是一架飞机。因为是把其他图像的caption拿来当作负样本,所以这样的负样本基本都是easy的。这篇论文提到easy negatives是不重要的,只使用easy negatives不足以训练出一个好的模型,真正重要的是hard negatives,放在多模态领域那就是一张黄狗的图片和文字:这是一只白狗,这样的图文对才对模型训练有关键性作用,它也许能让模型意识到颜色之间的差异。最后一种是被误判为负样本的,这种负样本对模型训练是害的,之后提到的动量蒸馏就是为了缓解这种不良影响的。
回到这篇论文,作者是通过对比学习时计算的相似度来找hard negatives的,对于每张图片,也就是每一行,按照相似度在非对角线位置采样一次,令相似度作为被采样概率。因为batchsize就是64,所以拿到的hard negatives也是64个,这样正负样本数量均衡了,而且负样本质量也提高了。
最后三个损失加和作为模型总损失。

接下来是动量蒸馏,这也是作者提出的第二个贡献。动量蒸馏主要是针对刚才看到的最后一类负样本,它们和正样本非常接近,已经可以作为正样本了,但却被打上了负样本的标签。如果简单地使用one-hot编码计算损失那就会让模型很难训练,这里是将动量模型作为教师模型,用动量模型生成的软标签代替one-hot。可以看到公式里就是把one-hot替换为动量模型的输出了,由于不是one-hot了所以要改回相对熵损失。完形填空损失也是同理。
下图展示了为什么要动量蒸馏,伪target就是动量模型预测的结果。左边是完形填空任务,这里beautiful要比ground truth还要贴切,如果用one-hot就不太合理了。右边是对比学习任务,gt没有提到woman,但是动量模型计算相似度最高的这几个基本都提到了,而且更合理一点。

接下来是消融实验,可以看到对比学习的损失加入以后提升非常大,基本都涨了两三个点。加入hard negatives也有0.5的提升,然后对比学习时蒸馏一下,能大概提升0.2,完形填空蒸馏一下提升大概0.1,最后是下游任务微调的时候蒸馏一下,还能提个0.2左右。
然后是大数据集要比小数据集效果更好。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值