文章目录
MulT:未对齐多模态语言序列的多模态变换器
总结:引入 Crossmodal attention ,使得不同模态之间进行交互,结合 MulT 架构实现了模态的融合。
文章信息
作者:Yao-Hung Hubert Tsai,Shaojie Bai
单位:Carnegie Mellon University(卡内基梅隆大学)
会议/期刊:ACL 2019(Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics)
题目:Multimodal Transformer for Unaligned Multimodal Language Sequences
年份:2019
研究目的
探索多模态数据集中跨模态元素之间的长范围依赖关系(本质:实现在未对齐的多模态数据集上进行多模态融合)
研究背景
传统的处理未对齐的多模态序列方法是在训练前进行强制的 word-aligning,这种方法是人工手动的将视频特征和音频特征分别与文本特征进行对齐。这种人工的批注,耗费大量的精力与财力。
研究内容
提出了一个框架MulT进行多模态信息的融合,该框架引入了Cross-modal Attention机制。
研究方法
MulT 核心:利用 Cross-modal Attention 实现的 Cross-modal Transformer 模块。
1.总体架构
融合过程:首先利用 Conv1D 获取不同模态特征1的局部信息,并将不同模态的特征映射到同一维度上;然后给输出后的序列信息添加位置嵌入2;接下来利用Crossmodal Transformer学习两种模态特征之间的注意力,利用另一种源模态的低层次特征3强化目标模态,并使用Concatenation 将目标模态相同的 Crossmodal Transformer 的输出进行合并4,得到 Z L , Z V , Z A Z_L,Z_V,Z_A ZL,ZV,ZA;再通过 Transformer 获取特征之间的时序信息;最后将每个 Transformer 的最后一个元素提取出来,通过全连接层进行预测。
2.Crossmodal Attention
single-head Crossmodal Attention的计算公式如下:
Y
α
=
C
M
β
→
α
(
X
α
,
X
β
)
=
softmax
(
Q
α
K
β
⊤
d
k
)
V
β
=
softmax
(
X
α
W
Q
α
W
K
β
⊤
X
β
⊤
d
k
)
X
β
W
V
β
.
\begin{aligned} Y_{\alpha}& =\mathrm{CM}_{\beta\to\alpha}(X_\alpha,X_\beta) \\ &=\text{softmax}\left(\frac{Q_\alpha K_\beta^\top}{\sqrt{d_k}}\right)V_\beta \\ &=\text{softmax}\left(\frac{X_\alpha W_{Q_\alpha}W_{K_\beta}^\top X_\beta^\top}{\sqrt{d_k}}\right)X_\beta W_{V_\beta}. \end{aligned}
Yα=CMβ→α(Xα,Xβ)=softmax(dkQαKβ⊤)Vβ=softmax(dkXαWQαWKβ⊤Xβ⊤)XβWVβ.
符号含义:
- X α ∈ R T α × d α a n d X β ∈ R T β × d β X_{\alpha}\in\mathbb{R}^{T_{\alpha}\times d_{\alpha}}\mathrm{~and~}X_{\beta}\in\mathbb{R}^{T_{\beta}\times d_{\beta}} Xα∈RTα×dα and Xβ∈RTβ×dβ,代表两个模态的序列。
- T ( ⋅ ) T_{(\cdot)} T(⋅)表示序列长度, d ( ⋅ ) d_{(\cdot)} d(⋅)表示特征维度。
- Y α Y_{\alpha} Yα 表示从模态 β \beta β到模态 α \alpha α的跨模态注意力。
- Q α = X α W Q α Q_\alpha=X_\alpha W_{Q_\alpha} Qα=XαWQα, K β = X β W K β K_{\beta}=X_{\beta}W_{K_{\beta}} Kβ=XβWKβ, V β = X β W V β V_{\beta}={X_{\beta}}W_{V_{\beta}} Vβ=XβWVβ
3.Crossmodal Transformer
每一个Crossmodal Transformer由 D 层的Crossmodal attention块组成,通过Crossmodal Transformer 使一种模态能够接收另一种模态的信息5。
Crossmodal Transformer对 i = 1,…,D 层进行前向传播的过程:
Z
V
→
L
[
0
]
=
Z
L
[
0
]
Z
^
V
→
L
[
i
]
=
C
M
V
→
L
[
i
]
,
m
u
l
(
L
N
(
Z
V
→
L
[
i
−
1
]
)
,
L
N
(
Z
V
[
0
]
)
)
+
L
N
(
Z
V
→
L
[
i
−
1
]
)
Z
V
→
L
[
i
]
=
f
θ
V
→
L
[
i
]
(
L
N
(
Z
^
V
→
L
[
i
]
)
)
+
L
N
(
Z
^
V
→
L
[
i
]
)
\begin{aligned} &Z_{V\rightarrow L}^{[0]} =Z_{L}^{[0]} \\ &\hat{Z}_{V\to L}^{[i]} =\mathrm{CM}_{V\to L}^{[i],\mathbf{mul}}(\mathrm{LN}(Z_{V\to L}^{[i-1]}),\mathrm{LN}(Z_{V}^{[0]}))+\mathrm{LN}(Z_{V\to L}^{[i-1]}) \\ &Z_{V\rightarrow L}^{[i]} =f_{\theta_{V\to L}^{[i]}}(\mathrm{LN}(\hat{Z}_{V\to L}^{[i]}))+\mathrm{LN}(\hat{Z}_{V\to L}^{[i]}) \end{aligned}
ZV→L[0]=ZL[0]Z^V→L[i]=CMV→L[i],mul(LN(ZV→L[i−1]),LN(ZV[0]))+LN(ZV→L[i−1])ZV→L[i]=fθV→L[i](LN(Z^V→L[i]))+LN(Z^V→L[i])
【注】:第0层(也就是输入层),输入
Z
α
[
0
]
Z_{\alpha}^{[0]}
Zα[0]与
Z
β
[
0
]
Z_{\beta}^{[0]}
Zβ[0]6;对于其它层,输入的是上一层的输出与源模态的低层次特征3。在每一层的Crossmodal attention块中,源模态的低层次特征3都会转换成一组不同的 "Key/Value "对,以便与目标模态进行交互。
4.Conv1D
使用Conv1D是为了使得输入序列中的每个元素都能充分感知其邻近元素,提取输入序列中的局部信息,将不同模态的特征投影到同一维度。
X
^
{
L
,
V
,
A
}
=
Conv
1
D
(
X
{
L
,
V
,
A
}
,
k
{
L
,
V
,
A
}
)
∈
R
T
{
L
,
V
,
A
}
×
d
\hat{X}_{\{L,V,A\}}=\text{Conv}1\text{D}(X_{\{L,V,A\}},k_{\{L,V,A\}})\in\mathbb{R}^{T_{\{L,V,A\}}\times d}
X^{L,V,A}=Conv1D(X{L,V,A},k{L,V,A})∈RT{L,V,A}×d
5.Positional Embedding
当纯粹的使用attention-based transformer时,在改变输入序列的顺序后,其输出不会发生变化。因此,为了让模型利用序列的顺序,必须注入一些关于序列中的相对或绝对位置的信息。这就叫做位置嵌入(Positional Embedding)
通过Sin和Cos函数对长度为T的序列的位置信息进行编码:
P
E
[
i
,
2
j
]
=
sin
(
i
1000
0
2
j
d
)
PE
[
i
,
2
j
+
1
]
=
cos
(
i
1000
0
2
j
d
)
\begin{aligned} \mathrm{PE}[i,2j]& =\sin\left(\frac i{10000^{\frac{2j}d}}\right) \\ \text{PE}[i,2j+1]& =\cos\left(\frac i{10000^{\frac{2j}d}}\right) \\ \end{aligned}
PE[i,2j]PE[i,2j+1]=sin(10000d2ji)=cos(10000d2ji)
i
=
1
,
…
,
T
a
n
d
j
=
0
,
⌊
d
2
⌋
i~=~1,\ldots,T~\mathrm{and~}j~=~0,\lfloor\frac d2\rfloor
i = 1,…,T and j = 0,⌊2d⌋,i代表位置信息,j代表维度。
然后将编码的位置信息应用到输入序列上,得到加上位置嵌入的特征向量
Z
{
L
,
V
,
A
}
[
0
]
Z_{\{L,V,A\}}^{[0]}
Z{L,V,A}[0]:
Z
{
L
,
V
,
A
}
[
0
]
=
X
^
{
L
,
V
,
A
}
+
P
E
(
T
{
L
,
V
,
A
}
,
d
)
Z_{\{L,V,A\}}^{[0]}=\hat{X}_{\{L,V,A\}}+\mathsf{PE}(T_{\{L,V,A\}},d)
Z{L,V,A}[0]=X^{L,V,A}+PE(T{L,V,A},d)
6.Position-wise Feed-Forward Networks
位置方面的全连接前馈神经网络对每个位置分别进行相同的处理,包含两个线性变换,并且在中间有一个RELU激活函数。
F
F
N
(
x
)
=
max
(
0
,
x
W
1
+
b
1
)
W
2
+
b
2
\mathrm{FFN}(x)=\max(0,xW_1+b_1)W_2+b_2
FFN(x)=max(0,xW1+b1)W2+b2
结果与讨论
- 通过与 Sota 模型进行对比,表明了MulT无论是在对齐数据集上还是非对齐数据集上,效果都是最好的。
- 通过仅使用单个模态进行实验,表明了在仅使用一个模态的情况下,文本模态的效果要优于其他模态。但是远远不及多模态的效果。
- 将该融合方法与早期融合(接收三个异步序列的时间拼接)、晚期融合(仅仅将三个self-attention transformer的最后一个元素串联起来)方法进行对比,表明Crossmodal attention是可行的。
- 通过仅仅使用一对Crossmodal transformer的实验,研究了单个Crossmodal transformer的重要性,证明了结合三对(6个)Crossmodal transformer的效果是最好的。
- 通过探究融合源模态的中层次特征实验,证明了融合低层次特征是可行的。
- 通过可视化跨模态注意力权重,证明了Crossmodal attention能够关注两种模态之间有意义的信号。
代码和数据集
数据集:CMU-MOSI、CMU-MOSEI、IEMOCAP
代码:https://github.com/yaohungt/Multimodal-Transformer
实验运行环境:GTX-1080Ti GPU(11G)
😃😃😃
X L , X V , X A X_L,X_V,X_A XL,XV,XA,使用工具所提取出来的初级特征。 ↩︎
Positional Embedding,使序列能够携带时间信息 ↩︎
low-level features,低层次特征,其实就是模型中第0层的模态特征 Z β [ 0 ] Z_{\beta}^{[0]} Zβ[0],intermediate-level features,中层次特征, Z β [ i − 1 ] Z_{\beta}^{[i-1]} Zβ[i−1]. ↩︎ ↩︎ ↩︎
Z L = [ Z V → L [ D ] ; Z A → L [ D ] ] \begin{aligned}Z_L~=~[Z_{V\rightarrow L}^{[D]};Z_{A\rightarrow L}^{[D]}]\end{aligned} ZL = [ZV→L[D];ZA→L[D]] ↩︎
β → α \beta\to\alpha β→α表示将 β \beta β模态的信息传递给 α \alpha α模态 ↩︎
Z α [ 0 ] Z_{\alpha}^{[0]} Zα[0]与 Z β [ 0 ] Z_{\beta}^{[0]} Zβ[0]代表加上了位置嵌入的特征向量。 ↩︎