前两个都是VLP(Vision-Language Pre-training)
领域的架构,而后一个都是在之前一定基础上做的应用。BLIP
和BLIP2
名字相似,但是思路并不一样。BLIP
是从训练数据角度出发,通过对训练数据的提纯、增强,来达到提高训练效果;BLIP2
是提出一种新的架构,通过利用现有的视觉大模型和语言大模型,提出Q-Former
模块来解决两种模态间的隔阂,而InstructBLIP
是在BLIP2
的基础上,对输入的数据进行结构化,形成一种指令输入序列,其对26个数据集进行转换操作,从而达到不修改BLIP2
的架构的情况下,实现VLP
下各种任务的统一。
该论文任务现在的VLP
模型都是在大量web data(image-text pair) with noisy
下训练出来的大模型,这是不是最优的训练数据。又由于人工标注数据是非常昂贵的,所以提出了BLIP
模型。BLIP
模型通过两个步骤完成图片相关的文本标注操作:captioner和filter。前者针对图像信息生成合成的标题(字幕),再通过后者从原始的text
和合成的text
中选择其中噪音多的一个去除掉,以此达到数据的优化,从而训练得到更好的模型。
这个模型有两部分组成:
Image Encoder: 使用的ViT
作为图片编码器,目的是把图片信息转化成embedding
。采用这个方法的原因:更便于计算,并且大部分其他架构都使用。
需要注意的一点是,
[CLS]
作为一个全局图像特征的表征的开始,其被添加到图像patch的前面。代码中体现如下:
Multimodal mixture of encoder-decoder(MED) 组成
BERT
相同的文本编码器
以
[CLS]
作为文本输入的开始token。
SA
处理,图像信息和处理后的文本信息被CA
处理。
[Encode] token
被添加到文本token的前面,[Encode]
的embedding
作为图像文本对的多模态表征。
Causal Self-Attention
代替Bi Self-Attention
。
[Decode]
被添加到文本序列的开始,表示一个序列的开始信号。
注意:文本编码器和文本解码器除了
SA
模块,其他模块都共享所有参数。换句话说就是,除了SA
不同,其他的都是相同的,根据不同任务,可以通过即插即用的方式处理SA
从而实现特定任务。
这是个二分类任务(binnary classsification task),输出文本和图像是否匹配 论文中使用
the hard negative mining strategy
:具有较高对抗相似度的负数据集对更有可能被选择来计算损失。
使用
交叉熵损失(cross entropy loss)
。计算该损失时使用了标签平滑(0.1)的方法 这是使用LM
,而不是用MLM
的原因是为了提高模型的泛化能力
这个模块的作用就是处理数据,使数据更纯净,没有噪音。基本思路就是通过少量的人工标注数据训练模型生成标签(标题/字幕)。
两部分组成:
ITM head
预测文本与图像不匹配,则认为文本是噪声的。论文中说的....
该论文的出发点是任务现在VLP
模型都是建立在大数据集上的,训练起来非常昂贵,所以提出一种利用现有的模型,固定其原本的参数(防止微调/训练的时候灾难性遗忘),通过小参数的模型整合,从而达到低资源大提升的目的。
提出一种轻量级的Querying Transformer(Q-Former)
,通过Q-Former
来连接两种模态的预训练模型。主要做法是通过两阶段来训练:第一阶段接受文本图像表征来训练得到一个表示向量query
;第二阶段通过Q-Former
的输出来引导一个语言与训练模型达到图像文本生成学习。整体思路如下:
整体思路一句话说就是:使用一个可以学习的
query
向量从图像编码器中抽取有用的视觉特征,然后再把这个query
喂给LLM
,是其输出渴望的文本。
其中只有
Q-Former
是可训练的模块。
Q-Former
模块组成:
这两个子模块的
SA
是共享的。 使用不同的SA mask
控制query-text
交互 使用32个查询,其中每个查询的维度为768
初始化:
Q-Former
,使用与训练好的权重CA
层使用随机初始化参数固定参数的预训练模型:
ViT-L/14
、ViT-G/14
OPT(decoder-based LLMs)
、FlanT5(encoder-decoder-based LLMs)
全连接层的作用:用于将输出query embedding
线性投影到与LLM
的文本嵌入相同的维度中。
利用
a unimodal self-attention mask
控制query-text
之间不能互相看见[CLS]
token作为第一个文本token
Q-Former
在给定条件文本,生成目标文本
使用
a multimodal causal self-attention mask
控制query-text
之间交互 用新的[DEC]
token替换[CLS]
token作为第一个文本token,以用控制解码任务。
query
的输出送到一个二分类线性器中,获得logits
,然后将所有query
的logits
平均值作为输出匹配分数
使用
a bi-directional self-attention mask
控制query-text
交互 使用the hard negative mining strategy
创建有信息的负性对
该论文主要是解决VLP
任务中,不同任务需要不同格式的输入信息这个问题。改论文在BLIP2
的基础上,对26个数据集,11种任务,做了系统和综合的分析,通过修改数据集格式到统一的形式,即输入信息中包含指令(instruction-aware)
,可以通过指令信息对视觉特征进行抽取工作,从而完成对应的任务。
相关任务和数据集如下:
对于每一项任务,使用10到15个不同的自然语言指令模板。
使用
the language modeling loss
来指令微调模型
固定参数的预训练模型:
ViT-G/14
FlanT5-XL
、FlanT5-XXL
、Vicuna-7B
、Vicuna-13B
本文作者:HuanQing
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!