总结:引入 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 模块。
融合过程:首先利用 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 的最后一个元素提取出来,通过全连接层进行预测。
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β
每一个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 "对,以便与目标模态进行交互。
使用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
当纯粹的使用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)
位置方面的全连接前馈神经网络对每个位置分别进行相同的处理,包含两个线性变换,并且在中间有一个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
数据集: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]代表加上了位置嵌入的特征向量。 ↩︎