导语
多模态学习是指从不同输入模态学习表示的过程,例如图像数据、文本或语音。由于自然语言处理(NLP)和计算机视觉(CV)领域的方法学突破,多模态模型因其能够增强预测和更好地模拟人类学习的方式而受到越来越多的关注。本文重点讨论图像和文本作为输入数据。该文章内容分为以下几个部分:
- Image2Text
- Text2Image
- Images supporting Language Models
- Text supporting Vision Models
- 两种模型如何结合做自监督模型训练
第一部分:Image2Text
使用COCO数据集和基于Transformer的架构,实现对复杂图像的有意义的字幕生成。虽然人类看图像并描述它或解析场景并描述其上下文并不难,但对于计算机来说却具有挑战性。在2014年,Microsoft COCO通过更深入研究场景理解问题来推动物体识别技术发展,并解决了场景理解中的三个核心问题:目标检测、分割和字幕。本文关注图像作为输入模态,介绍基于Transformer的架构"M2",该架构使用了Meshed-Memory Transformer技术,改进了图像编码,并实现了图像生成语言的步骤。通过在MS COCO数据集上比较M2和其他全注意模型的性能,可以进一步展示该架构的优势。
第二部分:Text2Image
本部分介绍了一种合并文本输入以生成视觉表现的方法。最近的进展主要源于NLP领域的最新突破,这使得学习文本的上下文表示成为可能。Transformer-like的架构被用于将输入编码成嵌入向量,从而为图像生成过程提供指导。本部分按时间顺序探讨了这个领域的发展,并深入研究了最近的里程碑。这包括生成对抗网络(GAN)、变分自编码器(VAE)、带向量量化(VQ-VAE)、扩散和自回归模型等概念,为读者提供了更好的了解当前研究的根源及其未来的可能方向。
第三部分:Images supporting Language
本小节探讨了将视觉元素整合到纯文本语言模型中的方法。
虽然分布式语义模型,如Word2Vec和BERT,认为通过分析单词或句子在文本语料库中的分布来理解其含义和用法,但这一假设受到了质疑,因为理解单词和句子的含义需要在其他感知维度中得到支持。为了改进纯语言模型,人们开发了各种模型,旨在通过添加其他感知维度,如视觉,来提升性能。本节着重介绍将视觉元素整合到纯语言模型中的方法,这需要将视觉表示与语言模型结合。解决这个问题的方案有两种:一种是分别学习文本和视觉元素,然后将它们“组合”在一起;另一种是同时学习文本和视觉特征。
第四部分:Images supporting Language
本部分介绍了一种利用自然语言作为CV模型附加监督的方法。相较于仅由手动标记的数据监督的模型,这些模型更加强大,因为训练数据中包含更多可用的信号。CLIP模型是该领域一个显著的例子,其使用WebImageText数据集,其中包含从互联网上抓取的4亿个文本图像对。CLIP使用了类变压器架构来联合预训练文本编码器和图像编码器。通过对比目标的方式,训练模型来预测哪个自然语言文本与特定批次中的哪个图像相关。该模型的训练方式比为图像生成文字更有效,并表现出灵活性,
可以用于光学字符识别、地理位置检测和动作识别等多个任务。CLIP模型的性能可以与特定于任务的监督模型竞争,从而为弥合“鲁棒性差距”迈出了重要的一步,即机器学习模型无法满足其以前在新数据集上的性能。
第五部分:models for both modalities
本节讨论了将文本和图像输入合并到单个自监督学习框架中的两种模式的模型。
这种框架的优势在于可以避免人类标记的限制,并提高模型在不同模态中的泛化程度。本节分别介绍了三种不同的模型:data2vec、VilBert和Flamingo。其中,data2vec使用变压器架构来预测输入数据的潜在表示,VilBert可以处理跨模态任务,而Flamingo则是一种现代的少镜头学习模型,具有强大的文本生成和处理开放式任务的能力。这三种模型都具有不同的优势和适用范围。值得注意的是,通用多用途框架可以帮助提高鲁棒性,同时简化学习者档案袋。此外,通过感知架构有效地编码来自不同模式的输入,并利用预处理和冻结模型之间的通信可以有效地训练越来越大的模型。
如果有感兴趣多模态内容的,私信我,我把原文章文件分享给你,或者下载我的资源《Multimodal Deep Learning》
1. Image2Text
这部分主要介绍如何图片转文字:通过图像来实现文本生成,这需要模型对图像有语义理解能力,以及生成准确和精确描述句子的能力。
、
1.1 图像数据集准备
在图像数据集这块Microsoft COCO是一个注释丰富的大规模数据集,旨在提高计算机视觉研究中的场景理解水平。
它专注于三个核心问题:检测非图标视图、检测对象之间的语义关系和确定对象的精确定位。该数据集包含91个常见对象类别,共有328000个图像和2500000个实例标签。MS COCO的图像采集和注释过程分为两个阶段:数据收集和图像注释。研究人员从不同的现有数据集中收集了几个类别,如PASCAL VOC和其他来源,共同作者根据这些类别的常见情况、实际适用性和与其他类别的差异,以1至5的比例对其进行评级。所有包含的图像可以大致分为三种类型:标志性物体图像、标志性场景图像和非标志性图像。
由于数据集的规模和注释过程的高成本,设计具有高效成本的高质量注释管道是一项困难的任务。下图为MS COCO的注释管道分为三个主要任务:
- 类别标记
- 实例定位
- 实例分割
如上图所示,在第一步中确定了每个图像中的对象类别。由于有大量的数据集和类别,他们使用分层方法,而不是对每个类别进行二进制分类。所有91个类别都被分为11个超级类别。
然后,注释器检查每个实例是否属于给定的超级类别之一。工作人员只需使用类别的图标为每个超级类别标记一个实例(Lin等人,2014c)。对于每个图像,要求八名工人对其进行标记。这种分层方法有助于减少标记时间。然而,第一阶段仍然需要2万个工作小时才能完成。
在下一步中,图像中对象类别的所有实例都被标记,每个工作人员最多标记每个图像中给定类别的10个实例。在实例定位和实例分段步骤中,当前工作线程可以看到工作线程在前一阶段找到的实例的位置。每幅图像都由8名工人重新标记,总计10k个工作小时。
在最后的分割阶段,每个对象实例被分割,其他实例的分割和工人在前一阶段对对象实例的规范再次显示给工人。分割250万个对象实例是一项非常耗时的任务,每1000个分段需要超过22个工作小时。为了最小化成本和提高分割质量,要求所有工人完成每个对象类别的训练任务。为了确保更好的质量,还对每个分段实例执行了显式验证步骤。
1.2 图像to文本的生成模型
图像to文本生成任务涉及到自然语言描述图像的视觉内容,这需要算法来理解和建模视觉元素和文本元素之间的关系,以生成输出单词的序列。
基于Transformer和BERT的图像生成文本模型可以被看作是一种“看图说话”的技术,其主要目的是根据给定的图像生成相应的自然语言描述。这类模型通常采用卷积神经网络(CNN)作为图像编码器和Transformer或BERT作为文本生成器。
基于transformer的图像生成文本模型可以通过以下步骤实现:
- 图像特征提取:将图像输入卷积神经网络(CNN)中,提取出图像的特征向量。
- 序列建模:将图像的特征向量输入到transformer中,作为encoder的输入。同时,将一段文本的词向量序列作为decoder的输入。
- 语言建模:通过decoder中的自注意力机制和前馈神经网络,对文本进行语言建模,从而生成与图像相关的自然语言描述。
- 预测:根据decoder生成的词向量序列,通过softmax函数计算每个词汇在当前位置的概率分布,从中预测下一个词汇。
在这个过程中,拟人的方法可以帮助我们更好地理解算法的思维逻辑:
我们可以把图像看作是一个人眼中所看到的视觉信息,而文本则是该人脑海中对这些信息进行的语言描述。在图像生成文本模型中,CNN充当了人眼的角色,将图像转化为向量形式。transformer模型则扮演了人脑的角色,将图像特征向量与文本进行结合,生成自然语言描述。因此,我们可以把这个模型看作是一个拟人的过程,将图像与文本结合起来,模拟出人脑的思维过程。
1.2.1 M2 模型(Meshed—Memory Transformer)
为了实现多模态,图像生成文本任务,2020年提出了一种新颖的完全注意力的方法,用于实现图像生成文本模型。称为M2模型,旨在改进图像编码器和语言解码器的设计。
M2 (Meshed-Memory Transformer) 模型相较于之前的图像生成文本模型有两个创新点:
- 网格式记忆机制:M2模型通过引入网格式记忆机制,将每个单词与其它单词进行交互。这种交互方式不仅包括相邻单词之间的交互,还包括远距离单词之间的交互。这种网格式交互方式可以更好地捕捉单词之间的关联关系,从而提高图像生成文本的效果。
- 并行推理机制:M2模型通过并行推理机制,加速了文本生成的速度。该模型将多个解码器之间的交互和并行化,减少了不必要的等待时间,提高了文本生成的效率。这两个创新点都是针对之前模型的缺陷而提出的,可以更好地应对长距离依赖和计算效率问题,提高了图像生成文本模型的表现。
网格式记忆机制概念理解
让我们来用一个拟人的例子来解释这个概念。假设你正在学习一门新的语言,你要记住一些单词,比如“苹果”、“橙子”、“香蕉”等。你可以把这些单词存储在你的脑海中,但是你不可能记得每一个单词在你学习这门语言的所有上下文中的使用情况。所以,你需要一个记忆机制来帮助你更好地处理这些信息。
现在,假设你学会了一些短语,比如“我想要一些…”、“这是一个…”、“这是我的…”等等。这些短语可以帮助你更好地描述你所见到的事物。但是,如果你只记住了这些短语,而没有记住它们与特定单词之间的关系,那么你可能无法正确地使用它们。
这就是网格格式记忆机制的作用。它可以帮助Transformer模型记住序列数据中的长期依赖关系,例如在图像生成文本任务中,可以帮助模型记住之前看到的图像内容,以便更好地生成对应的文本描述。具体来说,网格格式记忆机制将原始的序列数据转化为一个网格状的数据结构,其中每个元素都与其他元素相连。这种连接方式可以帮助模型更好地捕捉数据中的长期依赖关系。
M2架构如下图所示
对比一下经典的transformer架构,就可以发现m2模型的不同层级的解码器和编码器也是互连的
上图显示了M2 Transformer的详细架构。它可以分为编码器(左)模块和解码器(右)模块,两个模块都有多个层。给定输入图像区域X,图像通过注意力和前馈层传递。
每个编码层都会将具有先验知识的图像区域之间的关系进行编码,每个编码层的输出将被解码层读取,逐字为图像生成文本。
图像X的特征向量提取还是通过注意力机制来计算的,注意力机制可以定义为如下形式:
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
s
o
f
t
m
a
x
(
Q
K
T
d
)
V
Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt d})V
Attention(Q,K,V)=softmax(dQKT)V
如果有不懂这个机制的原理的可以参考我的这篇博客:从Transformer到ViT:多模态编码器算法原理解析与实现
下面对模型架构的工作原理进行解析,跟transformer一样将模型架构分成解码器和编码器。
Memory-Augmented Encoder
M2模型中的Memory-Augmented Encoder是该模型的编码器部分,它的主要作用是将输入图像X编码为一系列特征向量,以供后续的解码器使用。
Memory-Augmented Encoder具有一些创新的设计,使其在编码图像时能够更好地利用先验知识。Memory-Augmented Encoder的架构与标准Transformer的编码器非常相似,都是由多个编码器层堆叠而成。每个编码器层都由两个子层组成:多头自注意力层(self-attention layer)和全连接前馈层(feed-forward layer)。每个编码器层的输入是上一层的输出,因此最后一层的输出就是整个编码器的输出。
Memory-Augmented Encoder的创新之处在于引入了一个新的机制,称为Memory-Augmented Attention。这个机制可以帮助模型更好地利用先验知识,从而提高图像的编码质量。Memory-Augmented Attention主要是通过扩展键(keys)和值(values)来实现的,从而使模型能够学习到先验知识。
这里的先验知识指的是在训练模型时所提供的关于图像的先验信息,例如图像中不同区域之间的空间关系、颜色和纹理等视觉特征。
具体来说,Memory-Augmented Attention的实现方式是:为键和值增加一个额外的矩阵,记为 M k M_k Mk和 M v M_v Mv,这个矩阵不依赖于图像的具体内容,而是通过学习得到的。 M k M_k Mk和 M v M_v Mv的初始值可以是任意的,但是它们会在训练过程中被不断更新,以便更好地适应输入图像。在自注意力层中,模型会使用 M k M_k Mk和 M v M_v Mv与输入图像X的线性投影来计算注意力权重,从而更好地建模图像中不同区域之间的关系。在这种方式下,Memory-Augmented Attention可以将输入图像中的先验知识与注意力机制相结合,从而提高图像的编码质量。
实现公式:
首先,将输入的图像表示 X X X 和 Memory 矩阵 M M M 进行线性变换,得到对应的 query、key、value 矩阵 Q , K , V , M k , M v Q,K,V,M_k,M_v Q,K,V,Mk,Mv:
Q
=
X
W
q
Q=XW_q
Q=XWq
K
=
X
W
k
+
M
k
W
k
m
K=XW_k+M_kW_{km}
K=XWk+MkWkm
V
=
X
W
v
+
M
v
W
v
m
V=XW_v+M_vW_{vm}
V=XWv+MvWvm
其中, W q W_q Wq、 W k W_k Wk、 W v W_v Wv、 W k m W_{km} Wkm、 W v m W_{vm} Wvm 是可学习的权重矩阵, M k M_k Mk, M v M_v Mv 是 M M M 经过线性变换得到的矩阵。
然后,计算 query 和 key 的相似度得到注意力权重 A A A:
A = s o f t m a x ( Q K T d k ) A=softmax(\frac{QK^T}{\sqrt d_k}) A=softmax(dkQKT)
其中, d k d_k dk 是 key 的维度。最后,将注意力权重和 value 矩阵相乘得到输出矩阵 O O O:
O = A V O=AV O=AV
其中, O O O 的维度与 X X X 相同。
得到的输出后,将它输入到前馈层,并做正则化处理
该前馈层的计算公式如下:
F
F
N
(
x
)
=
m
a
x
(
0
,
x
W
1
+
b
1
)
W
2
+
b
2
FFN(x)=max(0,xW_1+b_1)W_2+b_2
FFN(x)=max(0,xW1+b1)W2+b2
x
^
=
A
d
d
N
o
r
m
(
F
F
N
(
x
)
)
\hat x=AddNorm(FFN(x))
x^=AddNorm(FFN(x))
其中, x x x表示输入的特征向量, W 1 W_1 W1和 b 1 b_1 b1是第一层前馈层的参数(也可以被视为一组权重和偏置项), W 2 W_2 W2和 b 2 b_2 b2是第二层前馈层的参数, m a x ( 0 , ⋅ ) max(0,\cdot) max(0,⋅)表示ReLU激活函数
因为存在n个编码层因此就会输出n个 x ^ \hat x x^, X ^ = ( X 1 , X 2 , . . . , X n ) \hat X=(X_1,X_2,...,X_n) X^=(X1,X2,...,Xn)
Meshed Decoder
Meshed Decoder是m2模型中的一个重要部分,它利用前面编码器中所有层的输出
x
^
\hat x
x^与前面生成的单词向量
Y
Y
Y,通过交叉注意力机制生成图片的描述。具体来说,Meshed Decoder由两个主要组成部分组成,即交叉注意力层和位置前馈网络层。
交叉注意力层:用于将之前生成的单词向量和所有编码器层的输出通过交叉注意力进行融合,生成新的向量。其中,交叉注意力操作通过查询来自解码器的向量,而关键字和值则来自编码器。具体地,交叉注意力操作的公式如下:
C ( X i , Y ) = A t t e n t i o n ( W q Y , W k X i , W v X i ) C(X_i,Y)=Attention(W_qY,W_kX_i,W_vX_i) C(Xi,Y)=Attention(WqY,WkXi,WvXi)
其中, X i X_i Xi表示编码器的第 i i i层输出, Y Y Y表示解码器前面已经生成的单词向量, W q W_q Wq、 W k W_k Wk、 W v W_v Wv是可学习的权重。
为了表达每个编码器层的贡献以及它们之间的相对重要性,引入了一个大小与交叉注意力结果相同的权重矩阵 i i i。这个矩阵可以通过以下公式进行计算:
i = σ ( W i [ Y , C ( X i , Y ) ] + b i ) i=\sigma(W_i[Y,C(X_i,Y)]+b_i) i=σ(Wi[Y,C(Xi,Y)]+bi)
其中, σ \sigma σ是sigmoid激活函数, W i W_i Wi和 b i b_i bi是可学习的权重和偏差。位置前馈网络层:对于每个生成的单词,Meshed Decoder也包括一个位置前馈网络层,它通过两个线性转换和一个激活函数来对其进行编码。具体来说,它的公式如下:
F ( X ) = R e L U ( W 1 X + b 1 ) W 2 + b 2 F(X) = ReLU(W_{1}X+b_{1})W_{2}+b_{2} F(X)=ReLU(W1X+b1)W2+b2
其中, W 1 W_1 W1、 W 2 W_2 W2和 b 1 b_1 b1、 b 2 b_2 b2是可学习的权重和偏差。Meshed Decoder层的输出可以表示为:
Z
=
A
d
d
N
o
r
m
(
M
m
e
s
h
(
X
,
A
d
d
N
o
r
m
(
S
m
a
s
k
(
Y
)
)
)
)
Z=AddNorm(Mmesh(X,AddNorm(Smask(Y))))
Z=AddNorm(Mmesh(X,AddNorm(Smask(Y))))
Y
~
=
A
d
d
N
o
r
m
(
F
(
Z
)
)
\widetilde{Y}=AddNorm(F(Z))
Y
=AddNorm(F(Z))
其中, S m a s k Smask Smask表示一个掩码,可以确保生成的单词向量只与前面的单词向量相互作用,而不是向后查看。 A d d N o r m AddNorm AddNorm表示在每个层中添加残差连接和归一化操作
为了更好的理解模型,我们可以把Meshed-Memory Transformer想象成一个人,他有两个部分:一个负责看图像的大脑和一个负责说话的嘴巴。
首先,当这个人看到一张图像时,他的大脑会把图像中的每个区域编码成一个向量,这些向量会传递给大脑的一个叫做Memory-Augmented Encoder的部分。这个部分会把这些向量整理成一种更容易处理的形式,然后把它们存储在内存中。接下来,当这个人想要说些关于这张图像的话时,他的嘴巴就会开始工作。他的嘴巴中有一个叫做Meshed Decoder的部分,它的工作是根据之前已经生成的词语和图像区域编码,逐步地生成描述这张图像的话语。这个过程中,嘴巴会不断地注意之前已经生成的词语和图像区域编码,并且动态地调整注意力的权重,以便生成下一个最合适的词语。
2. text2Image
跨模态的文本生成图像模型领域在近年来得到了显著发展
本章的主要意图是向读者呈现一个关于该领域如何按时间顺序发展的视角。从GAN的介绍开始,通过第一个跨域模型,以及以最先进的成就(截至2022年9月)结束,把握最重要的概念,、
2.1 生成对抗网络(GAN)
生成对抗网络(GAN)的出现是生成模型发展的一个重要里程碑。GAN由Goodfellow等人于2014年提出,它提出了一种新颖的体系结构和训练方案,这对应着生成器和鉴别器之间的最小最大二人博弈(因此有了“对抗性”这个词)。GAN可以被认为是文本到图像模型领域的一个初步启动器,并且很长一段时间以来,GAN类似的模型一直取得着最先进的结果,因此在本章中介绍了它们的核心概念。
2.1.1 文本生成图像基础GAN
在基础GAN中,生成器模型(G)和判别器模型(D)在最小最大博弈中一起优化,其中G旨在生成一个如此逼真的样本,以至于D无法区分它是否来自真实或生成的图像分布。另一方面,D正在被训练来区分这两个。最初,多层感知器被提出作为D和G的模型架构,尽管理论上任何可微分函数都可以被使用。更形式化地说,让pz表示输入噪声向量z定义的先验分布。然后,生成器G(z)表示将这个嘈杂的随机输入映射到生成的图像x的函数。判别器D(x)输出一个概率,即x来自真实数据而不是生成器分布 p g p_g pg。在这个框架中,D应最大化正确猜测真假数据标签的概率。G被训练以最小化 l o g ( 1 − D ( G ( z ) ) ) log(1-D(G(z))) log(1−D(G(z)))。
这种表示对应于以下价值函数(最优解):
m
i
n
G
m
i
n
D
V
(
D
,
G
)
=
E
x
∼
p
d
a
t
a
(
x
)
[
l
o
g
(
D
(
x
)
)
]
+
E
z
∼
p
z
(
z
)
[
l
o
g
(
1
−
D
(
G
(
z
)
)
)
]
min_Gmin_D V(D,G)= E_{x \sim p_{{data}(x)}}[log(D(x))] + E_{z \sim p_{z(z)}}[log(1-D(G(z)))]
minGminDV(D,G)=Ex∼pdata(x)[log(D(x))]+Ez∼pz(z)[log(1−D(G(z)))]
GAN相关详细的信息可以参考我的这篇博客:Generative Model - 李宏毅笔记
2.1.2 text-embedding
文本生成图像的过程中,需要将文本表示成计算机能够处理的向量,也就是文本嵌入(text-embedding)向量。这个向量通常被看作是对文本含义的抽象表示。一种常见的方法是使用卷积神经网络(CNN)和循环神经网络(RNN)结合的方式,将文本映射为一个固定长度的向量,即text-embedding向量。
具体来说,先使用CNN将字符级别的文本输入转换成高维特征向量,然后再通过RNN将高维特征向量压缩成固定长度的text-embedding向量。其中,CNN部分可以看作是对于字符的特征提取过程,RNN部分则可以看作是对于整个文本的语义信息提取过程。因此,通过text-embedding向量,计算机可以更好地理解文本的语义信息,从而进一步实现文本到图像的生成过程。计算text-embedding向量的公式可以表示为:
h t = R N N ( C N N ( x t ) ) h_t=RNN(CNN(x_t)) ht=RNN(CNN(xt))
其中, x t x_t xt表示第 t t t个字符的特征向量, C N N CNN CNN表示CNN模型, R N N RNN RNN表示RNN模型, h t h_t ht表示文本在第 t t t个位置处的text-embedding向量。整个文本的text-embedding向量可以表示为整个文本各个位置的text-embedding向量的平均值或者加权平均值。
使用GoogLeNet作为图像编码器,结合字符级CNN和RNN的文本编码器,以最小化编码图像和文本表示之间的距离为目标的模型。
在GAN-CLS中,GAN是基于嵌入文本进行条件训练的。为了解决鉴别器无法区分图像是否与文本匹配的问题,该模型提出了一种训练方法,在训练中引入了真实图像与正确文本、真实图像与错误文本、以及生成图像与正确文本三种观察。此外,为了帮助正则化训练过程,该模型还提出了GAN-INT的概念,即在训练过程中使用人工生成的文本嵌入进行插值。最终,使用GAN-INT-CLS方法的模型在鸟类和花朵数据集上实现了最佳性能,可以成功地传输风格和背景,还表现出了有趣的零样本能力。在MS-COCO上训练的GAN-CLS证明了其在多个领域的潜力,尽管结果并不总是连贯的。
2.1.3 未来GAN发展
未来发展方向:
- 提升图像分辨率和生成质量
- 多模态生成(例如同时生成图像和文字描述)
- 更好的控制生成过程(例如指定特定物体的姿势或背景)
- 改进训练效率和稳定性
StackGAN:
StackGAN是一种具有多阶段生成器的GAN模型,可逐步生成具有更高分辨率的图像。该模型采用了条件Batch Normalization,将文本特征嵌入到每个阶段的生成器中,从而实现了对文本描述的控制。
AttnGAN:
AttnGAN采用了注意力机制(attention mechanism),使生成器能够集中于文本描述中的重要区域。该模型还采用了多层嵌入,从而能够更好地捕捉文本描述中的语义信息。
DM-GAN:
DM-GAN采用了一种新的生成器结构,称为“Deformable Modules”,这种结构可以自适应地调整各个模块的形状和大小,从而生成更加多样化和真实的图像。
DF-GAN:
DF-GAN采用了一种名为“Disentangled Feature”的结构,将图像特征分解为各个子特征,并对每个子特征分别进行生成,从而实现更好的控制和可解释性。
2.2 Dall-E 1
OpenAI的Dall-E毫无疑问将文本到图像的领域推向了另一个高度。这是第一次,一个模型展示了极佳的零样本能力,与以前的特定领域的模型相当。为了实现这一点,需要前所未有的数据集规模和训练过程。为此,收集了2.5亿个文本图像对,使得可以训练一个拥有120亿个参数的版本的模型。不幸的是,Dall-E并不公开,遵循最近闭源模型的趋势。更确切地说,它开创了这一趋势,随后GLIDE、Dall-E 2、Imagen、Parti等模型都效仿了。然而,Dall-E的内部工作原理在Ramesh等人(2021b)中有所描述下,本节将尝试解释其最重要的部分。
在此之前,需要了解一些已经存在于生成模型领域中相当长时间的基本概念非常关键,即变分自编码器(VAE)。
2.2.1 VAE
Variational Autoencoder (VAE) 是一种生成模型,旨在将高维数据编码成潜在空间中的低维向量,并从中生成新的数据样本。与传统的自编码器(Autoencoder)不同,VAE 通过学习数据分布的概率分布来实现数据的编码和生成。在这个过程中,VAE 也包括一个编码器和一个解码器。
具体模型详细可以参考我的这篇博客:深度学习中的自动编码器
2.3 GLIDE
GLIDE是由Nichol等人(2021b)介绍的,它开启了大规模扩散模型的时代。扩散的概念在深度学习领域已经被使用了一段时间。但是,GLIDE的作者们更进一步,将其与基于文本的引导相结合,以便将学习过程引导到文本的含义方向。这种强大的方法已被证明可以取得出色的结果,在撰写本文时仍与当前最先进的模型竞争。
2.3.1 扩散模型
在了解GLIDE内部工作原理之前,有必要介绍驱动它的核心概念,即扩散。扩散的想法源于物理学。简而言之,它对应于在另一个流体中扩散颗粒(例如一种流体中的另一种流体)。通常它具有单向性,也就是说,它不能被反转。然而,正如Sohl-Dickstein等人(2015)所展示的,并由Ho等人(2020a)稍后改进,如果将数据扩散过程建模为带有高斯噪声的马尔科夫链,连续添加高斯噪声,就可以学习如何将其反转。
具体详细可以参考我的一篇博客:Diffusion Model算法
3. Images supporting Language Models
3.1 非符号化上下文中的单词
假设你独自一人身处一个外国国家,你不会说当地语言,而你唯一的资源就是一本当地语言的词典。你看到一个标牌上写着一个单词,但你无法理解它的含义。你能做什么呢?一个想法是打开词典查这个单词。
但问题是,这个单词是用当地语言中的其他单词来定义的。(类似于方言)
四川的苍蝇馆,本地人知道这个是吃饭的地方,不知道的以为是养苍蝇的地方
因此,作为第二步,你会查找这些新单词,并像这样继续进行下去,直到“无限地和超越”(引用Buzz Lightyear的话)。
但是,即使你在词典中查找了每一个单词,你仍然无法理解标牌上写的单词的含义。
但是如果在那个标牌上,未知单词旁边展示了其他东西,例如一把叉子和一把刀,你可能会猜测这个单词表示与食物有关的东西,比如一家餐厅。并且这是在不明确知道单词含义的情况下做出的。
这个例子启发了Stevan Harnad的工作,他在90年代初提出了所谓的符号基础问题(Harnad(1990))。
这一问题指出,仅仅通过查看其他单词,是不可能理解一个单词的含义(语义)的,因为单词本质上是没有意义的符号。只有将单词放置在一个超出书面语言的感知空间中,即非符号化表示(如图像)中,才能理解单词的含义。在过去的十年中,分布式语义模型(DSMs)有了惊人的发展,特别是在Word2vec(Mikolov等人(2013b))革命之后。这一类模型假设单词和句子的含义可以通过它们在文本语料库中的“分布”推断出来(由Harris等人(1954)提出的分布假设)。但前面提到的符号基础问题表明,DSMs并不类似于人类学习单词的方式,即在多模态感知上下文中。因此,为了在纯语言模型中融合更多模态(如视觉模态),已经开发出了模型,假设将单词和句子在其他感知上下文中接地,应该能够更好地理解它们的语义,并且结果是,在纯语言任务中表现更好。
这个例子说明就是反应了人类学习知识,更多的图文结合一定比单独的文字理解起来更容易。人类的大脑学习知识,更喜欢知识载体是图片。这也就是有多模态模型的原因之一
3.2 词嵌入(Word-Embeddings)
语言的多模态模型起点始终是一个纯语言模型,即仅使用文本输入来生成单词嵌入的模型,这些嵌入是以数值向量形式表示的单词。在本小节中,文献中使用最广泛的纯语言模型有以下三种:
- Skipgram(Word2vec,Mikolov等人(2013b)):给定目标单词,需要最大化预定义窗口中相邻(周围)单词的概率。训练可以通过分层softmax或通过负采样进行,其中涉及最大化实际邻居的单词概率,最小化不是实际邻居的单词概率(“负样本”)。
- GloVe(Pennington等人(2014)):基于整个语料库中单词共现,旨在最小化两个单词嵌入向量的点积和共现数量的对数之间的差异。
- BERT(Devlin等人(2018c)):使用两个预训练任务来获取单词嵌入:
– Masked Language Modelling(MLM):给定一个带有[MASK]标记的句子,目标是预测这些标记。
– Next Sentence Prediction(NSP):给定两个句子A和B,目标是预测B是否跟随A。
最后需要补充两点。首先,Skipgram和GloVe生成的嵌入是“无上下文的”:它们不考虑单词出现的上下文。相反,BERT旨在表示给定单词出现的上下文(句子):因此,我们可以根据上下文得到相同单词的不同嵌入。其次,这些模型的输入是标记:通过标记器(可以针对不同的模型不同),将文本分割成“块”,称为标记(它们不一定是单个单词)。
3.3 顺序多模式嵌入(Sequential Multimodal Embeddings)
本节讨论将语言和视觉特征表示与特定单词相关联,如何将它们融合。一种直观的想法是将文本和视觉模态连接起来。假设 V t e x t V_{text} Vtext是一个单词的文本表示, V i m g V_{img} Vimg是它的视觉表示,则某个单词的融合表示F可能采取以下简化形式:
F = γ ( V t e x t ) ⨁ ( 1 − γ ) V i m g F=\gamma(V_{text})\bigoplus (1−\gamma)V_{img} F=γ(Vtext)⨁(1−γ)Vimg
其中 γ \gamma γ是调节参数,控制两种模态对最终融合表示的相对贡献。Bruni等人(2014)提出这个模型,其中目标单词的含义通过语义向量的形式表示,并将所有向量收集在基于文本的语义矩阵中;其中文本嵌入是基于预定义窗口中单词的(变换后的)共现计数来计算的。获得某个目标单词的基于图像的表示的起点是带标签图像的数据集。
Kiela和Bottou (2014) 提出了基于神经网络的自动特征选择方法:使用从ImageNet数据库中训练的卷积神经网络中的前七个层来提取视觉特征。使用Mikolov等人(2013b)提出的Skipgram模型来提取文本特征,然后再将它们拼接起来。相比于Sequential Multimodal Embeddings方法,这种方法不需要手动提取特征,更加高效,模型结构图如下图所示:
3.4 基础空间
前面提到的模型隐式地假定文本和图像之间都具有一一对应的关系:只有与具体图像相关联的词语才能提取出视觉表示。
这存在局限性,部分原因在于:
- 一方面,对于在训练集中没有可用图像的词语,我们如何描述它们?是否有可能从语言信息中想象出纯粹的视觉表示?
- 另一方面,我们是否可以为每个词语找到一个视觉表示?这对于具体的词语可能是正确的,但是对于抽象词语来说,找到合适的视觉表示并不总是可能的,或者换句话说,许多词语不是视觉上具体的。
为此,研究人员提出了一个问题:我们是否可以将文本和视觉元素映射到一个基础空间中,并设计出能够在训练集之外推广图像和词语的模型?
答案是肯定的!Lazaridou等人(2015)提出的多模式Skip-gram算法是一种将文本和视觉元素嵌入到同一基础空间中的方法,该方法能够将文本和图像信息进行联合建模,从而提高模型的性能。
3.4.1 算法原理
- 首先,对于每个文本词 t t t和图像特征 v v v,分别通过两个不同的嵌入层 E t E_t Et和 E v E_v Ev进行嵌入处理,得到它们的嵌入向量 h t h_t ht和 h v h_v hv。这里采用的是Skip-gram模型的方法,通过预测上下文中的词来学习嵌入向量。
- 然后,为了将文本和图像信息融合到同一基础空间中,Lazaridou等人采用了一个共同的嵌入层 E E E。该层的权重矩阵 W W W被设计为一个对角阵,以便将文本和图像元素在共同的嵌入空间中进行均衡融合。
- 最后,通过最小化文本和图像元素在共同嵌入空间中的距离来训练模型。这里采用的是负采样的方法,即通过随机采样一些不在上下文中的单词来构造负样本,从而提高模型的鲁棒性。其目标损失函数如下:
1 T ∑ t = 1 T ( L l i n g ( w t ) + L v i s i o n ( w t ) ) \frac{1}{T}\sum_{t=1}^T(\mathcal{L}_{ling}(w_t)+\mathcal{L}_{vision}(w_t)) T1t=1∑T(Lling(wt)+Lvision(wt))
其中 L l i n g \mathcal{L}_{ling} Lling是Skip-gram的损失函数, L v i s i o n \mathcal{L}_{vision} Lvision是视觉损失函数
L
v
i
s
i
o
n
\mathcal{L}_{vision}
Lvision是视觉损失函数用于学习单词的多模态表示和对应的视觉向量之间的关系。公式如下:
L
v
i
s
i
o
n
(
w
t
)
=
−
∑
w
0
−
P
n
(
w
)
m
a
x
(
0
,
−
c
o
s
(
z
w
t
,
v
w
t
)
+
c
o
s
(
z
w
t
,
v
w
0
)
)
\mathcal{L}_{vision}(w_t)=-\sum_{w_0 - P_n(w)}max(0,-cos(z_{w_t},v_{w_t})+cos(z_{w_t},v_{w_0}))
Lvision(wt)=−w0−Pn(w)∑max(0,−cos(zwt,vwt)+cos(zwt,vw0))
其中, w t w_t wt表示目标单词, w 0 w_0 w0表示从概率分布 P n ( w ) P_n(w) Pn(w)中随机选择的负样本单词, v w t v_{w_t} vwt表示目标单词的对应视觉向量, z w t z_{w_t} zwt表示目标单词的多模态表示。在训练过程中,如果某个单词没有对应的图像,视觉损失函数 L v i s i o n \mathcal{L}{vision} Lvision会被设置为零。通过学习交叉模态映射矩阵 M u , v M_{u,v} Mu,v,可以将文本输入映射到视觉表示。当交叉模态映射矩阵被估计出来后,可以为在训练集中没有相关图像的新单词生成其对应的图像向量,从而实现了想象新单词的功能。这种方法将文本和视觉元素嵌入到同一基础空间中,生成基础空间,提高单词表示的质量。
3.5 transformers
2017年由Vaswani等发表的《Attention is all you need》的论文,提出了一种新的架构——Transformer,仅利用了注意力机制,可以实现机器翻译任务。
与循环神经网络(RNNs)和长短期记忆网络(LSTMs)相比,Transformer 在过去四年中在自然语言处理领域(以及其他领域)变得如此流行的原因是什么呢?主要有以下三个特性:
- 自注意力机制
- 并行输入处理
- 位置嵌入
3.5.1 Vokenization
对于一个孩子来说,描述一个词的意思往往很困难。孩子可能无法描述狮子是什么,但如果给他不同动物的图片,他可能很容易指出狮子的图片。因此,视觉指向可以作为自然语言的一种监督形式。那么,是否有可能在纯语言模型中建立一种视觉监督形式,模仿孩子经常采用的视觉指向呢?这正是Tan和Bansal(2020)试图解决的问题:如何将每个文本表示(标记)与一个视觉表示(Voken)相关联。
具体详细可以参考我的博客:Vokenization
3.6 图像想象力
维基百科将想象定义为“在没有任何直接感官输入的情况下,在头脑中产生或模拟新颖的对象、感觉和思想”。
人类不仅会将单词与真实图像相关联,而且还利用想象单词/概念的能力:想象力可以帮助人类大脑通过增强其泛化能力来解决具有有限监督或样本点的问题。到目前为止,我们讨论的是由视觉信息(例如从图像字幕数据集检索到的真实图像)支持的语言模型。但是随着生成图像模型领域的最新进展,值得研究的是这些生成模型是否可以帮助纯语言模型产生更好的单词表示。特别是,我们将讨论Lu等人提出的iACE(Imagination-Augmented Cross-Modal Encoder)框架:其想法就是简单地使用生成模型来获得文本输入的视觉表示,然后将这些想象的表示用作“想象监督”来纯化语言模型。该框架有两个主要组成部分:
- 想象生成器G:给定一个文本输入 x x x,使用VQGAN(Esser等人(2021))来渲染 x x x的“想象” i i i,并使用CLIP(Radford等人(2021a))来查看生成的图像 i i i与输入文本 x x x的对齐程度。这个生成框架被称为VQGAN+CLIP
- 交叉模态编码器 E c E_c Ec:首先使用语言编码器和视觉编码器对文本输入和渲染的想象进行编码,
然后进行最小化二个编码之间的距离,公式如下:
d
(
X
,
Y
)
=
∑
i
=
1
l
(
x
i
−
y
i
)
2
=
2
(
1
−
X
T
Y
)
d(X,Y)=\sqrt {\sum_{i=1}^l (x_i-y_i)^2} =2(1−X^TY)
d(X,Y)=i=1∑l(xi−yi)2=2(1−XTY)
通过这个简单的代数运算,可以看出最小化X和Y之间的欧几里得距离等价于最大化
X
T
Y
X^TY
XTY,这是内积。这证明了内积最大化和最近邻搜索之间的等价性。
算法流程图如下所示:
。
4. Text supporting Vision Models
4.1 简介
70年的人工智能研究中最重要的教训是,最有效的方法是利用计算的通用方法,而且优势非常明显。
大多数人工智能研究都是一个特定的任务,对于新的数据集模型就会出现不泛化的情况。然而,随着时间的推移,可用计算资源大量增加,能否利用计算。从这个“苦涩的教训”中应该学到的一个重要事情是通用方法的强大力量,这些方法可以随着可用计算资源的增加而不断扩展,即使可用的计算资源变得非常庞大。这个想法有点像通用大模型
文本支持视觉的模型,这些模型主要通过将自然语言处理(NLP)的最新发现应用于计算机视觉(CV)来实现。
- 一方面,NLP中首次流行的架构概念被CV领域使用开来(例如,自监督学习或视觉变换器;Dosovitskiy等,2020b)。
- 另一方面,这些强大的新NLP模型,大多数是Transformers(Vaswani等,2017b),作为文本编码构建块从内部支持更大的模型
在本章中,我们将介绍最近的相关CV模型CLIP(Radford等,2021a)、ALIGN(Jia等,2021b)和Florence(Yuan等,2021)并讨论它们的核心概念。强大的性能证实了令人印象深刻的GPT-3(Brown等,2020)所提示的,利用NLP的帮助改进CV和增加规模的潜力。
在计算机视觉领域中一直存在的核心问题就是模型缺乏鲁棒性,无法很好地适应数据分布的变化。一种解决方法是基于规模的方法,试图尽可能地增加样本数量,并使用互联网上已有的大量图像和文本对生成大规模数据集。然而,这种方法也面临着一些挑战,例如数据的噪声和社会偏见等问题。
该文介绍了 CLIP、ALIGN 和 Florence 等模型,它们在大规模数据集的基础上取得了优异的表现。与调整模型结构和训练算法的方法不同,这些模型的研究者尝试通过规模来解决问题,避免在模型中注入专家知识。通过这种方法,模型可以更好地泛化到新的数据集,这是计算机视觉领域所追求的一个目标,下面是这些模型的数据规模:
- 400 million (CLIP; Radford et al., 2021a)
- 900 million (Florence; Yuan et al., 2021)
- 1.8 billion (ALIGN; Jia et al., 2021b)
4.2 对比学习
这里介绍一种对图像和文本进行训练的方法,叫做对比学习。这个方法通过分别训练图像和文本的编码网络,对图像和文本的向量表示进行对齐。对齐的过程是通过最小化对比损失函数来实现的,公式如下:
V i m g , t x t 1 = − 1 N ∑ i = 1 N l o g e h ( v i i m g , v i t x t ) / τ ∑ j = 1 N 1 [ i ≠ j ] e h ( v i i m g , v j t x t ) / τ V_{img,txt}^1=-\frac{1}{N}\sum_{i=1}^Nlog\frac{e^{h(v_i^{img},v_i^{txt})}/ \tau}{\sum_{j=1}^N1_{[i\neq j]}e^{h(v_i^{img},v_j^{txt})/ \tau}} Vimg,txt1=−N1i=1∑Nlog∑j=1N1[i=j]eh(viimg,vjtxt)/τeh(viimg,vitxt)/τ
其中, v i i m g v_{i}^{img} viimg 和 v i t x t v_{i}^{txt} vitxt 分别是图像和文本的向量表示, h ( v i i m g , v i t x t ) h\left(v_{i}^{img}, v_{i}^{txt}\right) h(viimg,vitxt) 表示它们的相似度, τ \tau τ 是一个温度参数, 1 [ i ≠ j ] \mathbf{1}_{\left[i \neq j\right]} 1[i=j] 是一个指示函数,表示当 i ≠ j i\neq j i=j 时为1,否则为0。
对比损失函数的目标是让同一个图像和它的描述文本在向量表示空间中更加接近,而不同的图像和文本在向量表示空间中更加远离。这种方法能够通过自然语言监督,利用图像和它的描述文本的共现信息来进行训练。
对比学习图像和文本的编码方法如下图所示,在对数据进行编码之后,计算图像和文本的相似性矩阵。
其目的是使N组真实图像和文本配对的得分值较高(图中蓝色区域的部分),而
N
2
−
N
N^2−N
N2−N其他可能的组合得分较低。
对比学习与传统预测模型之间有什么区别:
对比学习与传统预测学习的不同在于度量好坏的空间不同。传统预测学习中,通常是在输出空间(例如对于图像彩色化任务,是比较预测的颜色和真实颜色),来度量预测的好坏。而对比学习则是在表征空间(representation space)来度量。对比学习中的方法可能会比传统的预测方法效果更好,原因是对于常见的预测损失(例如L2损失),它们通常是独立地惩罚每个预测输出维度,而对于对比学习中的度量,则涉及到在交织的表征空间中进行度量。
使用对比学习作为训练模型的目的不是理论上的考虑,而是为了提高数据利用效率。
如下图所示,Radford等人(2021a)开始尝试使用基于Transformer的语言模型来预测图像的确切标题,以寻找适当的预训练模型(有关详细信息,请参见3.4.2.3小节)。结果表明,与预测单词袋文本编码的更简单基线相比,该方法的数据效率慢了三倍。此外,转换为CLIP的对比学习目标将数据效率提高了四倍。但是,转换到对比学习会带来一些限制。其严格性需要某些额外步骤,并且放弃了生成模型的高灵活性。特别地,这意味着类似于CLIP的对比模型受限于可用选项,并且不能自由生成文本或图像。要扩展这些模型的功能,需要使用附加的网络构建块。
4.2.1 Foundation models and zero-shooting基础模型与零技术
基础模型是指规模巨大、能够适应各种下游任务的模型,最早出现在自然语言处理领域。BERT就是一个早期的例子。这些模型通常是未完成的,其能力的真正范围无法清晰地描述,因为神经网络的期望能力并不是显式设计的,而是在实现和下游任务的使用过程中逐步形成的。
这就意味着可以用许多意想不到的方式来应用这些模型,而且还有可能有一些未被发现的方法。基础模型是建立在迁移学习的概念上的,即在可行的源任务上进行预训练,然后将其应用于所需的下游任务。在本章的背景下,这意味着在网络规模数据上进行预训练,并在各种常见分类数据集上评估性能。零射击是指没有在新的目标数据集上重新训练的情况下评估性能。零射击的明显优势是评估性能更加客观,因为像过拟合到数据生成分布的过程不会扭曲结果。
本章中展示了对比模型如何执行零射击传输,如下图所示。在图像分类的情况下,所有可用的类别都由语言模型进行编码。然后,CV子网络计算要分类的图像的编码,并返回所有成对相似度分数。最佳分数的一对可以作为决策结果。图像检索则反过来:在对所有图像进行初始编码后,可以返回与表示空间中编码的自然语言文本提示最相似的图像。
4.2.2 模型架构
CLIP(Contrastive Language-Image Pre-training)的文本编码器是改进后的Transformer,用于处理文本信息。图像编码器则使用多个子网络,包括:
- ResNets(如ResNet-50、ResNet-101) Vision
- Transformers(如ViT-B/32、ViT-B/16、ViT-L/14)
其中表现最好的子网络是ViT-L/14,而最大的模型RN50x64在592个V100 GPU上训练了18天,ViT-L/14仅用256个GPU训练了12天。使用Transformer的高并行能力似乎很有效。在介绍零样本学习时,略过了一个文本处理步骤。
这将模型在ImageNet上的零样本准确性提高了1.3个百分点。当使用80个不同的上下文提示来集成模型时,ImageNet的准确率进一步提高了3.5个百分点,总计近5个百分点。在36个数据集上的平均性能提升为5个百分点。类似地,也可以直接向模型传达视觉概念,如“picture”、“macro”、“drawing”甚至“dog”。
下图展示了CLIP和ResNet101在不同数据分布下的性能表现。可以推断出,Radford等人(2021a年)在论文中研究的方法对于缩小先前提到的鲁棒性差距是重要的一步。随着数据集的不断变化,ResNet101的性能会下降,而CLIP的准确性仍然比较高。但需要注意的是,由于OpenAI不允许公众访问他们的训练数据,因此独立的第三方无法自行调查这些结论。例如,必须依赖于他们的重叠分析的结论来排除在训练过程中CLIP未看到过偏差量的未来测试数据。
4.3 ALIGN
Jia等人的方法与CLIP类似,重申了大规模视觉数据集的必要性,但指出CLIP的数据收集过程仍然涉及一定量的数据筛选。他们提出通过减少筛选来获得更多的额外观察,弥补了增加的噪声量,创建了一个包含18亿个图像文本对的训练数据集。
相应的模型名为ALIGN,“A Large-scale ImaGe and Noisy-text embedding”的缩写,其缩写暗示了对比损失函数,该函数在表示空间中对齐向量编码。
4.3.1 模型结构
ALIGN模型采用了双编码器的结构,其中一个编码器用于图像,另一个编码器用于文本。在训练期间,模型学习如何将图像和文本编码成向量,以便它们可以在向量空间中进行比较。为了确保图像和文本之间的向量表示相似,模型使用一种叫做对比损失的方法来训练。一旦训练完成,这个模型可以用来执行许多任务,例如图像和文本的检索,或者生成新的图像和文本匹配。通过将图像和文本编码成向量,ALIGN模型可以将它们放在同一个向量空间中,这使得它们之间的比较变得容易。
比如,你可以让模型找到与“大象”这个词相关的图像,或者让它生成与“蓝色汽车”相匹配的图像。在这种情况下,模型可以通过计算向量之间的相似度来完成任务。
4.4 Florence
Yuan等人的方法在原则上与其他方法并没有太大区别,但他们更关注于创建一个真正的基础模型。为了实现这一目标,他们提出了一种可能的视觉应用。如下图所示,他们希望进入细粒度目标检测、动态动作识别和真正的多模态任务等领域。由于他们的野心很大,他们将他们的模型命名为Florence,以“文艺复兴的诞生地”命名(Yuan等人,2021)。
4.4.1 模型结构
作为预训练核心的两个编码器,他们使用了用于图像的分层Vision Transformer(CoSwin Transformer)和类似于CLIP的文本Transformer。他们的893 million个参数也是从头开始共同训练的,并且使用了9亿个图像-文本对。对齐发生在所谓的图像-标签-描述空间中,通过特殊版本的对比损失函数进行编码,该函数将所有具有相同标签的图像-文本对视为正实例。下图展示它的模型结构
5. Models for both modalities(有两种模式的模型)
数据是每一个数据科学问题的核心
多模态机器学习模型的前景及其面临的挑战,其中数据是关键问题之一。获取足够的数据是困难的,因为标记大量数据的成本过高,而将不同类型的数据转换为可用的模型输入也是一个挑战。单模态机器学习模型的选择较多,但跟踪和转移领域之间的模型是有挑战的。整合不同领域的模型到一个统一框架是多模态机器学习的一个重要前景。
在接下来的内容中,我们将在视觉语言模型的背景下,探讨多模态机器学习的挑战和前景。视觉语言模型是可以处理语言和图像作为输入数据的模型。
具体而言,在视觉语言模型方面,已经有许多研究进行。其中,Data2vec、VilBert和Flamingo是三种不同的多模态机器学习模型。
- Data2vec是一种无监督模型,可以处理不同的模态数据,但无法处理它们之间的交互关系。
- VilBert是一种早期的视觉语言模型,可以通过创新的交叉注意力概念处理图像和文本之间的交互关系。
- Flamingo是一种最近出现的少样本视觉语言模型,通过使用大型语言模型实现了大量的表达能力。
当前,研究的主要方向是视觉问题回答(VQA)和视觉字幕生成(VC)等领域。此外,还有视觉常识推理(VCR)、视觉语言导航(VLN)和多模态情感计算(MAC)等领域。其中,VCR是将VQA扩展到更广泛的场景下,使模型更易于解释的重要方向之一。VLN在机器人领域中具有许多实际应用,尤其是人机交互方面。
5.1 Data2vec
Data2Vec是一种多模态的深度学习模型,可以用于处理文本、图像或语音等不同的输入数据。这个模型由Meta(以前的Facebook)的数据科学家开发,旨在解决一些现有模型的问题,并突出了复杂训练方案的重要性。
Data2Vec模型采用一种自监督的教师-学生关系,因此可以减少对人工标注的需求。该模型并不是一种通用模型,也不是一种对于每种模态都使用完全相同的算法的通用模型。然而,无论是文本、语音还是图像输入数据,Data2Vec的总体模型结构都是相同的,只有特定的编码、标准化和屏蔽策略是特定于模态的。
因此,Data2Vec是处理不同模态的一种更通用的方式,而且在典型的数据集上,它非常有效。Data2Vec模型的主要组成部分是教师模型和学生模型。它们的唯一不同之处在于教师模型的权重是学生模型权重的指数衰减平均值。
教师模型的目的是为学生模型创建训练目标,模型结构如下图所示:
首先,选择一种模态,根据该模态的特定编码方案对输入进行编码。这样,训练目标将使用整个输入数据上的自注意力机制来完全上下文化。训练目标基于教师模型的前K层,即蓝色的层。具体而言,如果
y
t
y_t
yt表示时间t时的训练目标,
a
t
l
a^l_t
atl表示第
l
l
l个块的输出,则:
y
t
=
1
K
∑
l
=
L
−
K
+
1
L
a
^
t
l
y_t = \frac{1}{K}\sum_{l=L-K+1}^L \hat a_t^l
yt=K1l=L−K+1∑La^tl
即训练目标是应用归一化后的教师网络顶部K层输出的平均值。与其他模型相比,Data2Vec模型没有跨模态训练,用于回归目标的特定损失函数是平滑的L1损失。
Data2vec多模态模型,它的目标是学习出一个学习者的潜在表示。这个潜在表示能够在不同的模态(比如图像、文本、音频等)之间进行转换,从而在不同的任务中起到更好的作用。该模型采用了平滑的L1损失函数,如下:
L ( y t , f t ( x ) ) = { ( y t − f t ( x ) ) 2 β , i f ∣ ∣ ( y t − f t ( x ) ) ∣ ∣ ≤ β ∣ ( y t − f t ( x ) ) ∣ − β 2 , o t h e r w i s e L(y_t,f_t(x))= \begin{cases} \frac{(y_t-f_t(x))^2}{\beta},\quad if ||(y_t-f_t(x))||\leq \beta\\ |(y_t-f_t(x))|-\frac{\beta}{2}, \quad otherwise \end{cases} L(yt,ft(x))={β(yt−ft(x))2,if∣∣(yt−ft(x))∣∣≤β∣(yt−ft(x))∣−2β,otherwise
Data2vec多模态模型它具有连续性和对异常值的敏感性,并且使用了一个标准的transformer架构。对于不同的模态输入,Data2vec采用了不同的处理策略。对于图像,该模型采用了Vision Transformer(ViT)策略,将图像分割为多个小块,然后将每个小块线性变换成一个序列,并为其添加可学习的位置编码。这些序列输入到ViT模型中进行上下文化处理。这个过程中,模型使用了multi-head attention模块来加强注意力,将keys、queries和values进行投影,使用softmax函数计算出scaled dot-product-attention,从而生成更加有效的注意力图。同时,Data2vec在图像上使用了类似BERT预训练中的BEiT模型的遮蔽策略,增加了图像的数据增强操作,最后使用softmax函数对最后一个transformer block中的所有小块进行平均池化,并将其输入到softmax函数中进行分类。
具体vit模型详细,可以参考我的这篇博客:从Transformer到ViT:多模态编码器算法原理解析与实现
5.2 VilBert
ViBert是一种多模态模型,旨在同时处理图像和语言输入,并在两种模态之间进行信息交换。该模型扩展了经典的BERT架构,使其能够处理视觉和语言数据。与处理单一模态的BERT不同,ViBert采用了并行流的处理方式,分别将图像和语言输入馈送到两个BERT风格的Transformer模型中。这种并行流的设计使得ViBert能够更好地满足不同模态的需求,同时使用共同的co-attention机制,使两种模态之间可以交换信息。
ViBert的处理流程如下图所示:
如上图所示,在语言流中,输入使用词汇表加上特殊的分类标记(cls)、分割标记(sep)和掩码标记(mask)进行编码。而对于视觉流,使用Faster R-CNN模型从图像中提取区域特征,然后通过一个5维向量将空间位置编码到特征中,并与位置编码进行映射和相加。通过这种方式,图像序列中的每个区域都可以得到编码,而图像标记则表示整个图像。
ViBert模型通过并行流的设计,使得模型可以单独为每种模态调整其复杂度。相比于将视觉空间离散化,然后像文本标记一样使用离散化后的标记,这种方法能更好地保留模态之间的灵活性,同时避免因为对图像信息的处理而对语言模型产生负面影响。在预训练后,ViBert可以通过微调处理来适应具体任务的需求。
ViBert的核心是co-attention机制,这使得模型能够在图像和语言之间进行信息交换,以更好地处理多模态数据。在并行流的处理方式下,ViBert能够更好地满足不同模态的需求,同时使用共同的co-attention机制,使两种模态之间可以交换信息。
co-attention机制的处理流程如下图所示:
在这种机制下,模型能够同时处理语言和图像输入,并学习如何将两种输入融合起来,以更好地理解和处理多模态信息。
具体而言,co-attention层会计算查询、键和值矩阵,然后将每个模态的键和值输入到另一个模态的多头注意力块中。这种通信只在模型的特定部分发生,被标记为“co-trm”。在ViBert模型中,语言输入会在第一个co-attention层之前进行大量的预处理,而图像输入则不需要。
下面是一些公式:
对于一个多模态的输入,ViBert模型使用了以下公式来计算co-attention矩阵:
H
t
=
A
t
V
t
H_{t}=A_{t}V_{t}
Ht=AtVt
H
v
=
A
v
V
v
H_{v}=A_{v}V_{v}
Hv=AvVv
其中, H t H_{t} Ht和 H v H_{v} Hv是分别由文本和图像输入计算得到的隐藏状态矩阵, A t A_{t} At和 A v A_{v} Av是由查询矩阵 Q Q Q和键矩阵 K K K计算得到的注意力矩阵, V t V_{t} Vt和 V v V_{v} Vv是分别由文本和图像输入计算得到的值矩阵。
通过co-attention机制,ViBert模型可以根据语言输入来调整视觉注意力,而根据图像输入来调整语言注意力。这种机制类似于人类在处理多模态信息时的注意力方式,能够更好地理解和处理多模态信息。同时,研究者还发现,对于VQA任务而言,名词是最有影响力的词性,预处理中的Wh-words(例如“who”和“where”)可以影响最终层的细粒度注意力图,同时使用基于对象的区域提议来处理图像可能会导致细粒度注意力图不足。
5.3 Flamingo
首先,Flamingo模型是一个用于多模态自然语言处理的神经网络模型,可以处理图像、文本和语音等多种模态的输入数据。它的主要目的是在多模态场景下进行任务,如图像描述生成、视觉问答等。
Flamingo模型主要由两个部分组成:视觉编码器和语言编码器。视觉编码器负责将输入的图像转换成向量表示,语言编码器则负责将输入的自然语言文本转换成向量表示。
这两个部分分别对输入进行处理,最后通过多层感知机进行融合,得到最终的输出结果。在Flamingo模型中,视觉编码器使用了卷积神经网络(CNN),用于提取图像的特征。而语言编码器则使用了循环神经网络(RNN),用于处理文本序列。这两个编码器都会将输入数据映射到向量空间中,以便后续的融合操作。
Flamingo模型的主要创新点是它提出了一种基于对抗训练的跨模态生成器,用于将视觉特征和语言特征进行融合。具体来说,跨模态生成器将视觉特征和语言特征映射到相同的向量空间中,然后使用对抗训练的方式来优化这个映射过程。这样,就可以让不同模态之间的语义信息得到更好的融合,从而提高了模型的性能。下面是Flamingo模型的公式:
V
=
f
v
(
I
)
V=f_v(I)
V=fv(I)
h
t
=
f
l
(
w
t
,
h
t
−
1
)
h_t =f_l(w_t,h_{t-1})
ht=fl(wt,ht−1)
v
t
=
f
a
(
V
,
h
t
)
v_t=f_a(V,h_t)
vt=fa(V,ht)
h
t
∗
=
f
s
(
v
t
,
h
t
)
h_t^*=f_s(v_t,h_t)
ht∗=fs(vt,ht)
p
t
=
s
o
f
t
m
a
x
(
W
p
h
t
∗
+
b
p
)
p_t=softmax(W_ph_t^*+b_p)
pt=softmax(Wpht∗+bp)
其中, I I I 表示输入的图像, w t w_t wt 表示输入的自然语言文本序列中的第 t t t 个单词, V V V 表示图像的特征向量, h t h_t ht 表示文本序列中前 t t t 个单词的语义向量, v t v_t vt 表示跨模态生成器生成的向量, h t ∗ h^*_t ht∗ 表示语言编码器和视觉编码器的融合向量, p t p_t pt 表示模型预测第 t t t 个单词的概率分布文章来源:https://www.toymoban.com/news/detail-760405.html
可以这样来理解这个公式:模型首先通过视觉编码器将输入的图像转换成特征向量 V V V,通过语言编码器将输入的文本序列文章来源地址https://www.toymoban.com/news/detail-760405.html
到了这里,关于多模态模型技术综述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!