type
status
date
slug
summary
tags
category
icon
password
标题: Flamingo: a Visual Language Model for Few-Shot Learning
作者: Jean-Baptiste Alayrac, Jeff Donahue, Pauline Luc, Antoine Miech, Iain Barr, Yana Hasson, Karel Lenc, Arthur Mensch, Katherine Millican, Malcolm Reynolds, Roman Ring, Eliza Rutherford, Serkan Cabi, Tengda Han, Zhitao Gong, Sina Samangooei, Marianne Monteiro, Jacob L Menick, Sebastian Borgeaud, Andy Brock, Aida Nematzadeh, Sahand Sharifzadeh, Mikołaj Bińkowski, Ricardo Barreira, Oriol Vinyals, Andrew Zisserman, Karén Simonyan
项目地址:

摘要
构建仅使用少量标注示例即可快速适应新任务的模型,是跨模态机器学习研究的一个开放挑战。
我们介绍了Flamingo,这是一系列具有这种能力的视觉语言模型(VLM)。
我们提出了关键架构创新:
- 连接强大的预训练视觉和语言模型。
- 处理任意交织的视觉和文本数据序列。
- 无缝插入图像或视频作为输入。
得益于其灵活性,Flamingo模型可以在包含任意交织文本和图像的大规模多模态网络语料库上进行训练,这对于赋予它们上下文少样本学习能力至关重要。
我们对我们的模型进行了彻底的评估,探索并测量了它们快速适应各种图像和视频任务的能力。
这些任务包括开放性任务,如视觉问答,其中模型被提示一个问题,它必须回答;字幕任务,评估描述场景或事件的能力;以及封闭性任务,如多项选择视觉问答。对于这个范围内的任何任务,单个Flamingo模型可以通过提示特定任务的示例,仅通过少样本学习实现新的最先进水平。
在众多基准测试中,Flamingo优于在数以千计的任务特定数据上微调的模型。
主要贡献
1. 引入了Flamingo系列VLM,它可以从少量输入/输出示例中执行各种多模态任务(如标题生成、视觉对话或视觉问答)。得益于架构创新,Flamingo模型可以高效地接受任意交织的视觉数据和文本作为输入,并以开放式生成文本。
2. 定量评估了Flamingo模型如何通过少样本学习适应各种任务。
3. Flamingo在16个多模态语言和图像/视频理解任务上达到了少样本学习的SOTA水平。
Introduction
概览图表
能力展示:

可以看到flamingo支持 图文类的 few-shot in-context learning,在例子中展示了较强的逻辑推理和数字推理能力。还可以支持图-文,文-图-文 这样的多顺序输入,以及视频的问答。还包括多轮对话问答等能力。

左边的图表展示了在多数据集上有优势的能力,右边的图标展示了遵循scaling law
方法
整体架构

Visual Encoder:
Our vision encoder is a pretrained and frozen Normalizer-Free ResNet (NFNet) [10] – we use the F6 model. We pretrain the vision encoder using a contrastive objective on our datasets of image and text pairs
之所以采用这个NFNet作为VisualEncoder,我推测还是因为这篇论文的通讯作者也是Flamingo的通讯作者的关系。可以换成其他的。VisualEncoder的pretrain是通过和Bert来进行的contrastive-learning进行的。
模型 NFNet F6
huggingface timm implementation:
论文主要研究了如何在不使用归一化(如批量归一化)的情况下,训练高性能的大型图像识别模型。以下是论文的核心内容解读:
研究背景
- 批量归一化(Batch Normalization)是深度学习中广泛使用的组件,它通过减少内部协变量偏移来加速训练过程。然而,批量归一化存在一些问题,例如依赖于批量大小、训练和推理时行为不一致、以及在某些任务中可能导致信息泄露等。
- 研究动机:尽管已有研究尝试在不使用归一化层的情况下训练深度残差网络(ResNets),但这些模型的性能通常不如使用批量归一化的网络,且在大学习率或强数据增强下不稳定。因此,作者希望开发一种无需归一化层的高性能图像识别模型。
研究方法
- 自适应梯度裁剪(Adaptive Gradient Clipping, AGC):作者提出了一种基于梯度范数与参数范数比值的自适应梯度裁剪技术。这种方法可以根据每个参数的更新幅度动态调整裁剪阈值,从而在大批次训练中保持稳定性。

- Normalizer-Free ResNets(NFNets):作者设计了一种改进的无归一化残差网络(NFNets),通过调整网络结构和训练策略,使其在不使用归一化层的情况下达到与批量归一化网络相当甚至更好的性能。
- 网络结构改进:作者对传统的ResNet结构进行了多项改进,包括调整宽度和深度模式、增加额外的3×3分组卷积、使用GELU激活函数等,以提高模型的性能和训练速度。
- 训练策略:作者采用了包括MixUp、RandAugment和CutMix在内的强数据增强策略,并结合余弦退火学习率调度和Nesterov动量优化器,以进一步提升模型性能。
实验结果
- ImageNet数据集上的性能:作者的NFNet-F1模型在训练速度上比EfficientNet-B7快8.7倍,同时达到了类似的准确率(84.7%)。NFNet-F5模型在ImageNet上达到了86.0%的top-1准确率,刷新了当时的单模型单裁剪记录。
- 大规模预训练后的微调性能:在使用3亿张标记图像进行大规模预训练后,作者的NFNet模型在ImageNet上的微调性能显著优于批量归一化网络,最佳模型达到了89.2%的top-1准确率。
- 与现有模型的比较:NFNets在训练速度和准确率上均优于或接近现有的EfficientNet等模型,同时在大规模预训练后的迁移学习任务中表现出色。
梯度裁剪在2013年就被Pascanu等人提出:

一般情况下, 取值为1。
这篇文章主要改进的是细化了每层的gradient的调整。
其它细节:对于图像输入Vision Encoder的输出是一个2D的feature,flattened到1D。对于视频输入,用1 FPS的方法进行sub sampling,输出是一个3D(包含时间维度)。此时加上temporal embedding之后,再展开为1D。
损失函数:Contrastive Loss(和CLIP一样)和 梯度裁剪
附录B.1.3:

训练数据集:The vision encoder is pre-trained on the ALIGN and LTIP datasets.
超参数细节:The training image resolution is 288 ×288, the joint embedding space is size 1376 and the batch size is 16,384. It is trained for 1.2 million parameter update steps, each of which consist of two gradient calculation steps (more details below) on 512 TPUv4 chips.
The learning rate is decayed linearly from 10−3 to zero over the course
of training. Images have random color augmentation and horizontal flips applied during training. We use the tokenizer employed by Jia et al. [50]. The Adam optimizer is used to optimize the network, and we apply label smoothing of
0.1. We apply adaptive gradient clipping (AGC) [10] to the NFNet encoder and global norm gradient clipping of 10 for the BERT encoder.苏剑林对梯度裁剪有一篇博客:为什么梯度裁剪默认模长是1


GATED XATTN-DENSE layers
在各个 LM block 之间插入 GATED XATTN-DENSE 来获取视觉特征。
Multi-visual input support: per-image/video attention masking
通过 Mask 限制每个文本 token 能够看到的视觉 token。模型仅能关注到之前的一个视觉 token,而非前文出现过的所有视觉 token。这一限制比允许模型直接注意所有视觉 token 效果更好。


冻结的LM Layer能够对所有的vision 信息在self-attention这一块进行交互,但在新增的待训练的这个 GTATED XATTN-DENSE 部分的cross-attention,有这种只能看到前面的最近的限制。这里新增的这个Layer采用了Gated策略,也就是最开始的训练中,alpha_xattn和alpha_dense两个系数初始化为0,本质上是一个iid作用,随着训练的进行开始变大。这里作者统计了在Flamingo-3B这个模型下,两个系数随着训练步、在不同深度层的大小变化

可以看到,attention部分在浅层的系数增长较慢,仍然倾向于iid,而在深层的系数随着学习过程中,值逐渐变大;在FFW tanh gating中,变化较快。作者在这里比较保守的没有进行进一步的conclusion
Perceiver Resampler
这个模块处在VisionEncoder的输出与冻结的语言模型之间,起到连接的作用。它可以接收任意数量的图像或者视频特征输入,输出固定的视觉token数量(64)。类似于Perceiver和DETR(其实我感觉更像BLIP2),通过cross-attention将预先设定的输入作为Query进行学习。这里有一个不一样的就是这里的预设输入X还和数据输入进行concat后作为K和V。

结构信息如下

Squared ReLU:
s = torch.pow(torch.relu(x), 2)数据增强
M3W
M3W collection
和爬取MassiveWeb 数据集类似,我们先过滤掉了非英文的文档,然后对文档质量等进行了其他一系列的过滤(比如没有文字内容,没有图片或者视频内容的)。我们把HTML树中同一级别的文字和图像进行提取,组成对。丢掉了图像太宽、太窄、太小的和单一色调的。
M3W image-placement augmentation
文字和图片的依赖顺序在数据集当中其实不是固定的。比如说可能有以下四种情况:

最相关的图片出现在文字后面(a),或者出现在文字前面(b)。在训练过程中,我们以1/2的阈值来决定这个图片是出现在文字的前还是后面。这种方式有一些无法避免的缺陷,例如在一半的时间,我们会碰到A这种情况,这种情况下,如果选前面的图片,则会变成 <dog image> This is my cat!
实验
主实验

Flamingo模型在广泛的图像(I)和视频(V)理解任务中,通过少样本学习达到了SOTA水平,显著优于之前最佳的无样本和少样本方法,只需四个示例即可。更重要的是,仅使用32个示例且未调整任何模型权重,Flamingo在七个任务上优于当前最佳方法——这些方法是在数千个标注示例上微调的。

可见fine-tune后有更高的表现。
作者在Flamingo使用少量样本学习未能达到SOTA的九项任务上对Flamingo进行了微调。在其中的五项任务上,Flamingo创造了新的SOTA,超越了使用诸如模型集成或特定领域指标优化(例如CIDEr优化)等技巧的方法(标记为†)

- 训练数据混合的重要性。(i)对训练数据进行了消融实验,特别是对M3W图文交织数据的有无进行了消融,发现图文交织数据能提供大约17%的提升。
- 多数据学习时的loss权重分配(ii):根据模型在数据集上的梯度对数据集的损失结果进行加权。
- 视觉训练的冻结LM。(iii)不使用tanh gating会导致约4.2%的性能下降,且会使训练不稳定。(iv)使用GATED XATTN-DENSE比使用原始的Transformer交叉注意力效果更好。
- 计算/内存与性能权衡。(v)添加新的GATED XATTN-DENSE块的频率越高,模型效果越好,但模型的可训练参数数量和时间复杂度会显著增加。每四个块插入一次可以加速训练66%,同时整体分数仅下降1.9%。(vi)MLP和原始Transformer在性能和速度上都不如Perceiver。
- 视觉编码器。(vii)NFNet-F6的效果比CLIP ViT-L/14好5.8%,比NFNet-F0好8.0%。
- 冻结LM组件可防止灾难性遗忘。(viii)训练随机初始化的LM层,性能会下降12.9%。微调预训练LM也会导致性能下降8.0%。这表明模型出现了“灾难性遗忘”,即模型在训练新目标时逐渐忘记了其预训练。在本文的设置中,冻结语言模型是比在混合中使用预训练数据集(MassiveText)进行训练更好的替代方案。
- Author:Yixin Huang
- URL:https://yixinhuang.cn/article/192d1582-2d17-8078-a358-fde9e048ce37
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!



