论文浅尝 | Flamingo:一个小样本学习的视觉语言模型

笔记整理:许彤,浙江大学博士

链接:https://arxiv.org/pdf/2204.14198v1.pdf

1. 动机

人工智能的一个关键方面是在给定少量指令的情况下,能够快速学习新任务的能力。虽然在计算机视觉领域已经在类似的能力上有所进展,但最常用的范式仍然是先对从网络上收集的大量有监督的多模态数据进行预训练,然后对感兴趣的任务进行模型微调。然而,为了成功进行微调,通常需要数千个带注释的数据。除了注释成本之外,这种方法通常需要仔细地对每个任务进行单独的超参数调优,并且非常耗费资源。最近,使用对比学习目标训练的多模态视觉语言模型实现了对新任务无需微调的零样本迁移,然而,由于这些模型只是简单地提供文本和图像之间的相似性评分,因此它们只能处理有限的任务形式,例如分类任务。它们的关键缺陷是缺乏生成语言的能力,这使得它们不适合更加开放的任务,比如字幕生成或视觉问答。其他人则探索了视觉条件语言生成,但是在低数据量的条件下表现的效果不好。因此,作者提出了Flamingo,一个视觉语言模型,该模型仅仅通过使用一些输入/输出样例作为提示,就在几种开放视觉和语言任务上达到了新的SOTA。

2. 贡献

(1)提出了一个Flamingo视觉语言模型,它可以通过少量的几个输入/输出样例来执行多个多模态任务(如字幕生成、视觉对话、分类和视觉问答)。模型的创新点包括一个新的架构,一个新的训练策略以及一个适应不同大小的视觉输入有效方法。

(2)定量评估了如何通过few-shot学习将Flamingo模型适应各种任务。作者特意保留了一系列基准测试,这些基准尚未用于验证该方法的任何设计决策或超参数。作者使用这些基准来估计模型的few-shot表现。

(3)Flamingo在16种多模态语言和图像/视频理解任务上通过few-shot学习的方式达到了新的SOTA。

3. 方法

如图所示,Flamingo模型是一种视觉语言模型,该模型接受交替的文本与图像/视频作为输入,并输出纯文本。首先,视觉编码器会从图像或视频中得到编码出的时空特征。之后,Perceiver Resampler会接收这些时空特征,并输出固定数量的视觉token。这些token用于重新初始化交叉注意力层来调节冻结的语言模型,这些注意力层在预训练的LM层之间交错。这些层为语言模型提供了一种新的表达方式,可以将视觉信息整合到下一个单词预测的任务中。Flamingo以交替的图像和视频x为条件,建模输出文本y:

模型使用的视觉编码器是一个预训练且参数被固定的NormalizerFree ResNet (NFNet)。Perceiver Resampler模块将视觉编码器连接到如图所示的参数固定的语言模型。它以来自视觉编码器的可变数目的图像或视频特征作为输入,并生成固定数量的视觉输出。

文本生成是由Transformer解码器执行的,以由Perceiver Resampler生成的视觉表示为条件。作者交替堆叠了参数固定的纯文本LM层和从头开始训练的交叉注意力层。

作者使用了三种数据集的混合集来训练Flamingo模型,来自网页的交错图像和文本数据集,图像和文本对,以及视频和文本对数据集。通过最小化期望数据集中文本的负对数似然的加权总和来训练模型。

4. 实验

作者在三种模型尺寸上进行实验,其中作者将冻结语言模型从1.4B缩放到7B和70B;并对其他部件的参数计数进行相应的调整,最终得到了三个版本的模型Flamingo-3B, Flamingo-9B和Flamingo-80B

作者使用了16任务来对模型进行测试,数据集及对应的评价指标如图所示:

实验结果展示了Flamingo模型有非常好的少样本学习的能力,如图所示,单个Flamingo模型在广泛的图像和视频任务上达到了最先进的水平,每个任务只需从4个示例中进行上下文学习,大大击败了以前的零样本或少样本方法。更重要的是,仅使用32个示例并且不调整任何模型权重,Flamingo在7个任务上优于当前最佳方法,这些任务对数千个带注释的示例进行了微调。

Flamingo模型也可以用于标准的分类任务。作者观察到与视觉语言基准测试相同的趋势:更大的模型表现更好,更多的照片也有帮助。

5. 总结

本文提出了一个名为Flamingo的视觉大语言模型,将视觉特征融入到大语言模型之中。通过将视觉编码器从图片或视频中提取到的视觉特征融入到大语言模型的注意力机制中,使得大语言模型在生成文本的过程中,在下一个单词预测的任务中参考了相关的视觉信息,从而使得最终生成的纯文本与得到的视觉信息相关。该模型能够通过借助大语言模型的语言生成能力来对不止是图片分类的更广泛的任务实现很好的少样本学习的效果,仅仅通过使用一些输入/输出样例作为提示,就在几种开放视觉和语言任务上达到了新的SOTA。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

点击阅读原文 ,进入 OpenKG 网站。

相关推荐
Octopus207712 分钟前
【C++】读取数量不定的输入数据
开发语言·c++·笔记·学习
Lostgreen17 分钟前
计算机网络----基本概念
网络·笔记·学习·计算机网络
孤邑31 分钟前
【Linux】网络通信
linux·服务器·网络·笔记·学习
Hacker_xingchen31 分钟前
Web 学习笔记 - 网络安全
前端·笔记·学习
PaLu-LI35 分钟前
ORB-SLAM2源码学习:Initializer.cc:Initializer::CheckFundamental地图初始化——检查基础矩阵F并评分
c++·opencv·学习·线性代数·ubuntu·计算机视觉·矩阵
9毫米的幻想40 分钟前
【Linux系统】—— 基本指令(四)
linux·c语言·c++·学习
青い月の魔女1 小时前
数据结构初阶---复杂度
c语言·数据结构·笔记·学习·算法
汤姆和杰瑞在瑞士吃糯米粑粑1 小时前
【优先算法学习】双指针--结合题目讲解学习
c++·学习·算法
十有久诚1 小时前
SVL-Adapter: Self-Supervised Adapter for Vision-Language Pretrained Models
人工智能·深度学习·计算机视觉·视觉语言模型·适配器微调
学习前端的小z1 小时前
【AI绘画】Midjourney进阶:色调详解(上)
人工智能·ai作画·aigc·midjourney