之前在秋招和写毕业论文,一个月没更了。毕业论文交了,开更。
《VLMo: Unifified Vision-Language Pre-Training with Mixture-of-Modality-Experts》
多模态的单双塔困境
在多模态工作中存在两类主流方法,分别是双塔模型和单塔模型。
双塔模型以CLIP和ALIGN为代表,这类方法对文本和图像分别用一个编码器进行编码,然后计算两个模态的embedding的相似度。这类方法的优点是适合检索任务,可以检索大量的文本与图像,缺点是仅在塔顶的相似度loss交互信息有限,不足以处理复杂的VL分类任务。比如CLIP在视觉推理任务上的准确度较低。
单塔模型以ViLT为代表,这类模型的优点是可以充分地将多模态的信息融合,更擅长分类任务,这种模型架构天然不适合检索,因为没有显示的对齐操作,只能用 【CLS】 的输出匹配 or 不匹配。利用这种模型架构做检索任务,需要encode所有的文本-图像对,时间复杂度是
O
(
N
2
)
O(N^2)
O(N2) 的。
下图是ViLT的模型架构,有三个预训练任务,分别是图像文本匹配、MLM和单词-图像区域对齐(WPA)。
其中 Word Patch Alignment是 UNITER 这篇中提出的方法,WPA 是利用最优传输(OT)的形式完成的。
对比推荐的单双塔
这里可以联系推荐场景,召回模型通常是作用在 亿级别的,需要快速匹配,因此通常是双塔模型,用户和物品不存在特征交互,只在塔顶相遇进行相似度匹配。
精排阶段通常是作用在千级别,需要进行充分的特征交互挖掘,深度的特征交互有助于更准确的推荐,这个是推荐经典的理论。
所以可以帮助我们理解多模态里的单塔双塔困境。
VLMo——MoE解决单双塔问题
这篇文章希望融合这两个架构的优点,提出VLMo希望既可以作为双编码器(双塔)去做检索任务,也可以作为融合编码器(单塔)。VLMo利用了一个古老的模型结构 混合专家,VLMo的核心结构是 Mixture-of-Modality-Experts(MOME) Transformer,简而言之是将 Transformer中的FFN前馈网络替换成了针对不同任务的网络,称之为模态专家。每个专家拥有特定任务的知识,处理具体任务时切换到相应的专家。
下面来看具体方法。VLMo的整体结构和训练流程如下。左边是VLMo的结构,右边是按顺序的三个预训练任务。
Input Representations
图片和文本要变成embedding才能输入进VLMo。所以首先是如何生成embedding。
- 图像表示:二维图像
v
∈
R
H
×
W
×
C
v \in \mathbb{R}^{H \times W \times C}
v∈RH×W×C 分割成
N
=
H
W
/
P
2
N=H W / P^2
N=HW/P2 个patch,
v
p
∈
R
N
×
(
P
2
C
)
v^p \in \mathbb{R}^{N \times\left(P^2 C\right)}
vp∈RN×(P2C),C 是图片的通道数。将图片patch展开拉成向量,并通过线性变换的到patch embedding。还要再准备一个图片的【CLS】token。再加上一维position emb和type emb得到图像的最终输入:
V
type?
∈
R
D
:
H
0
v
=
[
v
[
I
1
?CLS?
]
,
V
v
i
p
,
…
,
V
v
N
p
]
+
V
pos?
+
V
type?
\boldsymbol{V}_{\text {type }} \in \mathbb{R}^D: \boldsymbol{H}_0^v=\left[\boldsymbol{v}_{\left[I_1 \text { CLS }\right]}, \boldsymbol{V} \boldsymbol{v}_i^p, \ldots, \boldsymbol{V} \boldsymbol{v}_N^p\right]+\boldsymbol{V}_{\text {pos }}+\boldsymbol{V}_{\text {type }}
Vtype??∈RD:H0v?=[v[I1??CLS?]?,Vvip?,…,VvNp?]+Vpos??+Vtype??
其中
H
0
v
∈
R
(
N
+
1
)
×
D
\boldsymbol{H}_0^v \in \mathbb{R}^{(N+1) \times D}
H0v?∈R(N+1)×D,
V
∈
R
(
P
2
C
)
×
D
\boldsymbol{V} \in \mathbb{R}^{\left(P^2 C\right) \times D}
V∈R(P2C)×D,
V
p
o
s
∈
R
(
N
+
1
)
×
D
V_{p o s} \in \mathbb{R}^{(N+1) \times D}
Vpos?∈R(N+1)×D,
V
type?
∈
R
D
V_{\text {type }} \in \mathbb{R}^D
Vtype??∈RD。所以每个patch先投影,然后和【CLS】 concat起来,然后每个位置加不同的
V
p
o
s
V_{p o s}
Vpos? 和相同的
V
t
y
p
e
V_{type}
Vtype?
- **文本表示:**没什么好说的,和BERT一样,
H
0
w
∈
R
(
M
+
2
)
×
D
\boldsymbol{H}_0^w \in \mathbb{R}^{(M+2) \times D}
H0w?∈R(M+2)×D:
H
0
w
=
[
w
[
T
C
C
L
S
]
,
w
i
,
…
,
w
M
,
w
[
T
1
S
E
P
]
]
+
T
pos?
+
T
type?
\boldsymbol{H}_0^w=\left[\boldsymbol{w}_{\left[T_C \mathrm{CLS}\right]}, \boldsymbol{w}_i, \ldots, \boldsymbol{w}_M, \boldsymbol{w}_{\left[T_1 \mathrm{SEP}\right]}\right]+\boldsymbol{T}_{\text {pos }}+\boldsymbol{T}_{\text {type }}
H0w?=[w[TC?CLS]?,wi?,…,wM?,w[T1?SEP]?]+Tpos??+Ttype??
H
0
v
l
=
[
H
0
w
;
H
0
v
]
H_0^{v l}=\left[H_0^w ; H_0^v\right]
H0vl?=[H0w?;H0v?]
MOME Transformer
MOME Transformer用3个模态专家替换了Transformer的前馈网络:视觉专家(V-FFN)、语言专家(L-FFN)和视觉语言专家(VL-FFN)。针对不同的情况,使用不同的专家来处理任务。
但是,Transformer的Multi-Head Self-Attention(MSA)是共享的,意味着Query、Key和Value的参数是共享的。
**双塔:**如果输入是仅图像或仅文本向量,则使用视觉Expert对图像进行编码,使用语言Expert对文本进行编码。如果是VL检索任务,分别得到图像和文本的embedding后,计算两者相似度。这就是VLMo的双编码器结构。
**单塔:**如果输入是多种模态的向量组成,如图像-文本对的向量,则使用视觉专家和语言专家在Transformer底层编码各自的模态向量。然后使用视觉语言专家在顶层来捕获更多的模态交互。比如下图的VL分类任务,就是VLMo的融合编码器结构。
Pre-Training Task
VLMo有三个预训练任务。
图像-文本对比学习:给定一个batch的图像文本对,图像文本对比学习的目标是预测
N
×
N
N \times N
N×N 个可能的图像文本对的匹配对,在batch内有
N
2
?
N
N^2-N
N2?N 个负图像-文本对。[I_CLS]标记和[T_CLS]标记的最终输出向量分别用作图像和文本的聚合表示。然后进行线性投影和归一化,最终得到图像向量
{
h
^
i
v
}
i
=
1
N
\left\{\hat{h}_i^v\right\}_{i=1}^N
{h^iv?}i=1N? 和文本向量
{
h
^
i
w
}
i
=
1
N
\left\{\hat{h}_i^w\right\}_{i=1}^N
{h^iw?}i=1N?,计算图像到文本和文本到图像的相似性:
s
i
,
j
i
2
t
=
h
^
i
v
?
h
^
j
w
,
s
i
,
j
t
2
i
=
h
^
i
w
?
h
^
j
v
p
i
i
2
t
=
exp
?
(
s
i
,
i
i
2
t
/
σ
)
∑
j
=
1
N
exp
?
(
s
i
,
j
i
2
t
/
σ
)
,
p
i
t
2
i
=
exp
?
(
s
i
,
i
t
2
i
/
σ
)
∑
j
=
1
N
exp
?
(
s
i
,
j
t
2
i
/
σ
)
\begin{gathered} s_{i, j}^{i 2 t}=\hat{\boldsymbol{h}}_i^{v \top} \hat{\boldsymbol{h}}_j^w, s_{i, j}^{t 2 i}=\hat{\boldsymbol{h}}_i^{w \top} \hat{\boldsymbol{h}}_j^v \\ p_i^{i 2 t}=\frac{\exp \left(s_{i, i}^{i 2 t} / \sigma\right)}{\sum_{j=1}^N \exp \left(s_{i, j}^{i 2 t} / \sigma\right)}, p_i^{t 2 i}=\frac{\exp \left(s_{i, i}^{t 2 i} / \sigma\right)}{\sum_{j=1}^N \exp \left(s_{i, j}^{t 2 i} / \sigma\right)} \end{gathered}
si,ji2t?=h^iv??h^jw?,si,jt2i?=h^iw??h^jv?pii2t?=∑j=1N?exp(si,ji2t?/σ)exp(si,ii2t?/σ)?,pit2i?=∑j=1N?exp(si,jt2i?/σ)exp(si,it2i?/σ)?? **掩码语言建模:**BERT中的MLM。
图像-文本匹配:使用[T_CLS]标记的最后一个隐藏向量来表示图像-文本对,并将该向量输入具有交叉熵损失的分类器进行二进制分类。还加了难负样本图像-文本对。
Stagewise Pre-Training
- 首先,只使用图像数据对MOME Transformer的视觉专家和注意力模块进行视觉预训练。作者直接利用BEIT的预训练参数来初始化注意模块和视觉专家。
- 然后,冻结注意力模块和视觉专家的参数,只使用文本数据对语言专家进行语言预训练。
- 最后,解开冻结,用整个该模型进行VL预训练。
微调
**视觉语言分类(单塔):**对于视觉问题回答和视觉推理等分类任务,使用VLMo作为融合编码器来建模图像和文本的模态交互。使用标记[T_CLS]的最终编码向量作为图像-文本对的表示,并将其提供给特定于任务的分类器层来预测标签。
**视觉语言检索(双塔):**对于检索任务,VLMo可以作为双编码器分别对图像和文本进行编码。在微调过程中,对图像-文本用对比损失函数优化。在推理过程中,计算所有图像和文本的表示,然后使用点积得到所有可能的图像-文本对的图像到文本和文本到图像的相似性得分。
|