H是交叉熵函数,也可以看成InfoNCE,即负对数似然(Softmax)
2. Masked Language Modeling用图片和上下文来预测,但还是15%,完全可以设的更高一点来学习更多,或者用MAE,或者改成10%,或者分别Mask。或者还可以加上,通过完整句子和mask的图片来学习整个图片表示->改MAE的代码
3.图文匹配就是单纯的positive和negative,但有个采样硬负样本的过程,每个图/文在同个batch会依据对比相似度分布找一个硬负样本(语义相似,但细节不同)
L = Litc+Lmlm+Litm
4. 网络数据噪音,图文可能不太匹配,但前三个loss会惩罚看起来better,but不是label的选项,因此使用动量蒸馏,动态教师模型是单模和多模Encoder的指数移动平均。
一是,单模图文对比s(I,T)和s(T,I)不变,而软伪标签qi2t和qt2i则延伸一个batchsize
直接打破1,2的想法,不好改了,不过数据集如果精准,也就不需要动态蒸馏了
最小化KL散度等价于最小化以下公式,最大化互信息下界,可以认为对原始视图数据增强
训练过程中的学生模型作滑动平均作为教师,这样能够有效对抗数据集中的噪音,因为此时的教师模型作为多个模型的集成,能够更好地对抗噪声。
5.我们的模型由一个具有 123.7M 参数的 BERTbase 和一个具有 85.8M 参数的 ViT-B/16 组成。我们在 8 个 NVIDIA A100 GPU 上使用 512 的批大小对模型进行 30 个 epoch 的预训练。我们使用权重衰减为 0.02 的 AdamW [44] 优化器。学习率在前 1000 次迭代中升温到 1e -4,并按照余弦调度衰减到 1e -5。在预训练期间,我们将分辨率为 256 × 256 的随机图像裁剪作为输入,并应用 RandAugment4 [45]。在微调期间,我们将图像分辨率提高到 384 × 384,并在 [38] 之后插入图像块的位置编码。用于更新动量模型的动量参数设置为0.995,用于图文对比学习的队列大小设置为65,536。我们在第一个 epoch 内将蒸馏权重 α 从 0 线性提升到 0.4。
6. 可见,先对齐再融合的思路符合多模态任务的需求,让模型能够更好的利用多模态的信息,这解释了ALBEF在诸多多模态理解任务中的出色表现,同时从Visual Grounding任务中可以看出,ALBEF提出的预训练任务确实使得模型学会了图片信息和文本信息的对应关系,这也为后续研究提供了启发。
进一步提出了双边局部注意力 ViT (简称 BOAT),把特征空间局部注意力模块加入到现有的基于窗口的局部注意力视觉 Transformer 模型中,作为图像空间局部注意力的补充,大大提升了针对远距离特征依赖的建模能力
即使在图像空间距离较远但在特征空间距离较近的 token 同样会对彼此有很大的影响,因此它在特征空间对 token 进行聚类,并且只在每类特征的内部如同空间局部窗口一样计算自注意力
GPU内存消耗也是一个问题。针对这些问题,我们提出了几种技术,并以Swin Transformer为例进行了说明:1)后归一化技术和比例余弦变换方法,以提高大视觉模型的稳定性;2)对数间隔连续位置偏置技术,以有效地将在低分辨率图像和窗口中预先训练的模型有效地转换到它们的高分辨率模型。此外,我们还分享了我们的关键实现细节,这些技术显著地节省了GPU的内存消耗,从而使其成为可行的使用这些技术和自我监督的预训练
Scaling Up Model Capacity
residual post normalization
Scaled cosine attention
Implementation to Save GPU Memory
或者叫MS-CLIP共享参数的CLIP
ViT 在 ImageNet 等中型数据集上从头开始训练时,性能不如 CNN。我们发现这是因为:1)输入图像的简单tokenization未能对相邻像素之间的边缘和线条等重要局部结构进行建模,导致训练样本效率低;2)ViT的冗余注意力backbone设计导致固定计算预算和训练样本有限的特征丰富度有限。
1)逐层Tokens-to-Token(T2T)转换,通过将递归地将相邻令牌聚合为一个令牌(令牌到令牌),从而逐步将图像结构化为token(Tokens-to-Token),以便可以对由周围令牌表示的局部结构进行建模并且可以减少token长度;2)经过实证研究后,受 CNN 架构设计的启发,一种用于视觉变换器的具有深窄结构的高效主干。值得注意的是,T2T-ViT 将普通 ViT 的参数数和 MAC 减少了一半,同时在 ImageNet 上从头训练时实现了 3.0% 以上的改进
原因:全局自我关注的计算成本非常高昂,而局部自我关注通常会限制每个令牌的交互领域。
十字形窗口自注意机制,用于计算平行形成十字形窗口的水平和垂直stripe中的自注意,每个条纹都是通过将输入特征拆分为宽度相等的条纹而获得的。我们对Transformer网络不同层的条宽影响进行了详细的数学分析,并改变了stripe width,在限制计算成本的同时,实现了强大的建模能力。我们还引入了局部增强位置编码(LePE),它比现有的编码方案更好地处理局部位置信息。LePE自然支持任意输入分辨率,因此对于下游任务有效和友好。
(1) 在 MIM 任务中,mask patch 的大小如果是32×32,就能使得预训练任务成为一个 strong pre-text task,非常有利于预训练大模型性能的提升。(2) 直接回归预测原始像素 RGB 值的效果并不比复杂设计的patch分类方法差。(3) prediction head 可以设计成轻量化的模型,比如一个线性层,它的表现不比 heavy 模型差。
提出MuKEA通过显式三元组来表示多模态知识,以将视觉对象和事实答案与隐式关系相关联。为了弥合异构间隙,我们提出了三种客观损失,以从互补的观点中学习三元组表示:嵌入结构,拓扑关系和语义空间。
Self attention:message passing,一个token append其他token,有个分,加权平均得新表示
Token 2 Token充分信息交互,inter attention(输入输出之间/cross)
学不同部分得数据交互,容易建模,可以处理各种各样得dependency。Feed-forward network:neural knowledge database【看起来是两层mlp,大部分参数放在FFN里】
hidden state得query去查第一层FFN得key,激活一部分会传递到第二层,把第二层value拿出来当输出。【key-value得database】、
SelfATT 1是提供灵活建模关系的工具,二有FFN存储大量信息,可以模型stack很大很深
数据必须大于模型size
对比学习模型做不大,一是比较依赖数据增强的方式,对大object图片不错;但特别大的图片中不同object切分,得到正例信息不太对。会被data augementtation限制;二是scaling up的问题,包括memory或者computation inefficient,需要多变编码和large batchsize;三性能饱和,学的效率低很多,提升不高。
对比式学习着重于学习同类实例之间的共同特征,区分非同类实例之间的不同之处。 与生成式学习比较,对比式学习不需要关注实例上繁琐的细节,只需要在抽象语义级别的特征空间上学会对数据的区分即可,因此模型以及其优化变得更加简单,且泛化能力更强。
生成式自监督预训练加入vision领域
last hidden state作为imgae patch表示
预测Visual token,屏蔽掉后更好地构建representation的bottleneck,学更高层抽象表示
(用Visual token来pixel recover一开始效果不好)
Maked Image Modeling Head就是个Linear projection,在给定masked patch基础上预测它正确的visual tokens到底是啥
减少数据依赖,更快收敛
VLMo:Unified Vision-Language Pre-Training with Mixture
BEiT translates success from language to vision
Masked image modeling task,这样general 的一个范式对vision很好的帮助
BEiT achieves strong fine-tuning results on downstream tasks
Such as image classification, and semantic segmentation
BEiT is scaling-up-friendly
Critical for large· -scale self-supervised pre-training,对超参鲁棒性和对计算资源的利用
BEiT overcomes performance saturation
Longer training length consistently improves end-task performance,和之前对比学习相比
BEiT is an important step towards multimodal pre-training
Greatly reduce the reliance on image -text pairs
问题:1.单靠token表示能力弱,无法表达patch,但token是sequence有context概念(14*14=196token,表达能力就是8000多)。不是单个token表达单个patch,而是组合
2.输入整张图,由于残差链接,上面token和下面patch对应关系比较强
3.Transormer去拟合tokenizer,但直接用tokenizer去预训练不work。只是AntoEncoding,没有mask,原图恢复原图,会学到shortcut的pattern。直接finetuning甚至不如scratch,
可以想象成teacher,但并不是distillation,因为后来student会比teacher强很多,可以看成mask的distillation,teacher看全图来指导mask的student。
4.mae相对clean一些,直接恢复pixel,Encoder(architecture)输入的时候丢掉mask(speed up),用tokenizer会对预训练超参数鲁棒很多,比如data augementation,把细节信息屏蔽掉,学更抽象的语义,而mae在decoder把mask加进去,将low level detail强行推进
5. tokenizer这种teacher(clip)会把bottleneck定在这里,一是稳定二鲁棒,对大模型调参友好,恢复pixel对额外model依赖小一些。Mae teacher 可以看成Layer norm layer,不完全是pixel,每个patch过了一个layer再作teacher。BEiT是AutoEncoing出来的teacher,而data2vec用moment update来得到teacher model
6.VLmo(architecture改动,让vision和language在model更好共存)在VQA效果好,因为之前model没怎么对image做特别有效的预训练
7.多模态预训练是趋势,以前task layer改来改去,但pretrain model backbone很好的话,task layer就很简单,花的功夫少。做具体task就比较难一些,看起来单调。不过有预训练模型,很多之前做不了的事可以做了,比如多语言预训练模型,给英文数据finetune,直接拿中文测还蛮work
8. 做一些理论分析,预训练模型潜力挖掘
Pure VQA 任务一般是没有引入额外的 context
基本方法:为机器构造包含图像和语言的各种学习任务,恢复句子中掩蔽的词(MLM)、恢复图像中被掩蔽的图像块(MAE)、匹配图像和文本(ITM)
MRC任务实际上就只是引入了额外的 context 作为 VQA 任务的知识,并且更加注重于自然语言的理解。
主要分为四种,分别是完形填空,多选,片段抽取(Span Prediction)和自由作答
VQA 的总体目标是从图像中提取与问题相关的语义信息,从细微物体的检测到抽象场景的推理。不过由于VQA任务中问题会提供一定的场景,答案粒度是一定的,并且明确,因此相对而言,其评价相对简答。
基于对象检测的任务,如对象识别(猫狗)、动作识别和场景分类()都可以被定义为图像分类任务。除此之外,还有目标检测,语义分割(通过将每个像素分类为一个特定的语义类,使定位的任务更进一步),实例分割(用于区分同一语义类的不同实例), 后两者都不足以全面理解整个场景,主要原因在于标签歧义。
除了 VQA 外,图像描述(image captioning)是另一个比较主流的图文。其难点在于评价,虽然有一些自动评价方法: BLEU、ROUGE、METEOR、CIDEr(除了这个都是评价机器翻译结果),局限于常把机器生成标题排在人工标题之前,但以人的角度并不看好。也就是说,不加限制的话,图像描述系统总倾向于生成得分较高的表述(普适性)。
编码器和解码器 LSTM 之间共享一些权重。
与之前的模型相反,在编码问题之前,它们将图像编码作为第一个“词”传入 LSTM 网络。
主要想法:在 VQA 任务中,按照人为的思路,先定位到自行车,再定位到自行车的篮子,最后看篮子上是什么。这是个推理的过程。所以用分层注意力机制来模拟这个过程。对于复杂的问题,单一的 Attention 层并不足以定位正确的答案预测区域。本文使用多个 Attention 层迭代下列过程。
基于词、短语、句子三个层级分别构建 Attention 权重
两种 Attenion 机制:parallel co-attention 和 alternative co-attention:
• parallel co-attention 同时关注问题和图像
• alternative co-attention 同时在关注问题或图像间交替进行
引入两种类型的 DANs(r-DAN用于多模态推理,m-DAN 用于多模态匹配)进行多模态推理,匹配以及分类。推理模型允许可视化并在协作推理期间用文本注意机制互相关联。
● r-DAN for Visual Question Answering
VQA 本质上为分类问题,将图像 attention 特征和文本 attention 特征融合得到 memory vector,做分类任务。
● m-DAN for Image-Text Matching
图文匹配问题与 VQA 最大的不同就是,他要解决的是一个 Rank 问题,所以需要比对两种特征之间的距离,因此就不能共享一个相同的 Memory Vector。
2.3.6 Tips and Tricks for Visual Question Answering(Faster-RCNN+Glove Vectors)
文中使用了很多技巧来提升性能,但核心出发点都要依赖 joint embedding 和 multi-label classifier 方法来解决 VQA 问题的建模,换句话说就是利用视觉特征和语义特征进行有效融合,然后依赖特征在候选答案上做 multi-label 预测(区别于 softmax 多类预测,形象比喻就是 softmax 最后得到的是 N 类的预测向量,而 multi-label 可以认为是得到预测矩阵,每一行表示对应问题答案的预测向量,当然这只是比喻,并不严谨)。简单说,multi-label 的通常实现方式有两种,一种是 SigmoidCrossEntropyLoss,另一种是使用多个 SoftmaxWithLoss。
有五种模块:Attention, Re-attention, Combination, Classification 和 Measurement
• (1)将自然语言问题映射成布局(layouts)
(2)使用布局(layouts)组建最终的预测网络
通过一或多个支持和反对范例来取得一个微分注意力区域
数据库中取近样本作为支持范例、远样本作为反对范例
下面两张图是上述部分模型在部分数据集上的表现。
有趣的是,我们看到 ATP 模型的表现优于非注意模型,这证明简单地引入卷积和/或循环神经网络是不够的:原则上识别相关的图像部分是重要的。ATP 甚至可以与一些注意模型(如 WTL 和 SAN)相媲美甚至表现更好。
CoAtt 的表现有显著的提升,该模型首先注意问题然后注意图像。这对于长问题可能是有帮助的,由于这些问题更难用 LSTM/GRU 编码表示为单个向量,因此首先对每个词进行编码,然后使用图像来注意重要的词,这样有助于提高模型的准确率。NMN 模型使用了为每个(图像/问题)对自动组合子模型的新颖想法,它的表现效果类似于在 VQA 数据集上的 CoAtt 模型,但是在需要更高级推理的合成数据集上优于所有模型,表明该模型在实际中可能是一种有价值的方法。然而,需要更多的测试来判断该模型的性能。
在 COCO-QA 数据集上表现最好的模型是 AMA 模型,它包含外部知识库(DBpedia)的信息。这样做的一个可能的原因是知识库帮助解决涉及常识的问题,而这些知识可能不在数据集中。
该模型在 VQA 数据集上的表现不是很好,这可能是因为这个数据集没有太多的问题需要常识。自然地这种模型会为未来的工作带来两大方向。第一个方向是认识到外部知识的必要性:某种 CoAtt 和 AMA 的混合模型加上是否访问知识库的决策器可能会兼有两种模型的优点。该决策器可能是面向应用的,以实现端到端的训练。第二个方向是探索使用其它知识库,如 Freebase、NELL 或 OpenIE 的信息提取。
参考 https://github.com/wanng-ide/VQA_to_multimodal_survey