论文地址:https://arxiv.org/abs/1906.00295
对多模态人类语言序列数据进行建模的主要挑战:
1.每种模态的序列的采样方法不同,因此不同数据是未对齐的(就是一段文字,采样后与之相匹配的视频片段或音频片段与之并未对其)
2.跨模态的元素之间的长期依赖关系(哭泣可能与之前所说过的话有关系)
本文提出MulT来解决上述问题。
通过电影评论的实例视频剪辑对比对齐与跨模态注意。
对于词对齐,视频和音频特征在每个口语单词的时间间隔内被平均化。而在本文提出的方法中不需要将它们进行对齐,而是每个词与所有的视频和音频片段计算注意力权重。
本模型的核心是跨模态注意模块,它关注话语(一段话)规模上的跨模态交互作用。无论是否需要对齐,该模块都会通过重复强化一种模态的特征与其他模态的特征来潜在地将数据流从一种模态调整到另一种模态。
该图素MulT模型的整体结构,按照输入到输出的顺序该模型主要由时间卷积(Conv1D)、位置嵌入(Positional Embedding)、跨模态Transformer(Crossmodal Transformers)、自注意力Transformer组成(Self-Attention Transformer)和结果预测组成。
1、时间卷积
一维时间卷积的作用是为了确保输入序列的每个元素对其相邻元素有足够的感知:
X ^ { L , V , A } = C o n v 1 D ( X { L , V , A } , k { L , V , A } ) ∈ R T { L , V , A } × d \hat{X}_{\{L,V,A\}}=Conv1D(X_{\{L,V,A\}},k_{\{L,V,A\}})\in 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
三种模态的输入特征序列为 X { L , V , A } ∈ R T { L , V , A } × d { L , V , A } X_{\{L,V,A\}}\in R^{T_{\{L,V,A\}} \times d_{\{L,V,A\}}} X{L,V,A}∈RT{L,V,A}×d{L,V,A},在此 每个模态的维度是不同的,因此在后续的跨模态注意块中无法进行运算。而时间卷积可以将不同模态的特征投影到相同的维度d,因此可以在后续的跨模态注意模块中执行点积运算。
2、位置嵌入
与原始的Transformer一样,为了使序列能够携带时间信息,将位置嵌入(PE)添加到卷积层的输出 X ^ { L , V , A } \hat{X}_{\{L,V,A\}} X^{L,V,A}上,使得输入到跨模态Transformer的信息是具有时间顺序的。
Z { L , V , A } [ 0 ] = X ^ { L , V , A } + P E ( T { L , V , A } , d ) Z^{[0]}_{\{L,V,A\}}=\hat{X}_{\{L,V,A\}}+PE(T_{\{L,V,A\}},d) Z{L,V,A}[0]=X^{L,V,A}+PE(T{L,V,A},d)
3、跨模态Transformer(Crossmodal Transformers)
跨模态Transformer使一种模态能够接受来自另一种模态的信息。下面演示将视觉( V V V)信息传递给语言( L L L)信息的例子,用 V → L V\to L V→L表示,由于前面输入信息经过了时间卷积的处理,因此每个模态的所有的维度都是固定的 d d d。跨模态Transformer的作用可以理解为使用源模态 V V V对目标模态 L L L的信息进行重构,以学习到跨模态关联的有意义的信息。
每个跨模态Transformers由D层跨模态注意块组成,如下图所示。
形式上,跨模态transformer按照 i = 1 , . . . , D i=1,...,D 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 ] ) Z^{[0]}_{V\to L}=Z^{[0]}_L\\ \hat{Z}_{V\to L}^{[i]}=CM_{V\to L}^{[i],mul}(LN(Z_{V\to L}^{[i-1]}),LN(Z^{[0]}_V))+LN(Z_{V\to L}^{[i-1]})\\ Z_{V\to L}^{[i]}=f_{\theta^{[i]}_{V\to L}}(LN(\hat{Z}_{V\to L}^{[i]}))+LN(\hat{Z}_{V\to L}^{[i]}) 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])
其中 C M V → L [ i ] , m u l CM_{V\to L}^{[i],mul} CMV→L[i],mul位于第 i i i层的 C M V → L CM_{V\to L} CMV→L的多头版本, C M V → L CM_{V\to L} CMV→L为计算不同模态之间的跨模态注意。融合跨模态信息的一个好的办法是提供一种跨模态的潜在适应,即 β \beta β到 α \alpha α。其中 α \alpha α代表视觉信息( V V V), β \beta β代表语言信息( L L L)。
在第 i i i层跨模态注意块中,跨模态注意计算的输入 X α ∈ R T α × d α X_{\alpha}\in R^{T_\alpha \times d_ \alpha} Xα∈RTα×dα为第 i − 1 i-1 i−1层跨模态注意块的输出然后再经过层归一化得到的,即 L N ( Z V → L [ i − 1 ] ) LN(Z_{V\to L}^{[i-1]}) LN(ZV→L[i−1]),输入 X β ∈ R T β × d β X_{\beta}\in R^{T_\beta \times d_ \beta} Xβ∈RTβ×dβ为源模态经过层归一化得到,即 L N ( Z V [ 0 ] ) ) LN(Z^{[0]}_V)) LN(ZV[0]))。从 β \beta β到 α \alpha α的潜在适应表示为跨模态注意为:
Y α = C M β → α ( X α , X β ) = s o f t m a x ( Q α K β T d k ) V β = s o f t m a x ( X α W Q α W K β T X β T d k ) X β W V β Y_\alpha=CM_{\beta\to\alpha}(X_\alpha,X_\beta)\\ =softmax(\frac{Q_\alpha K^T_\beta}{\sqrt{d_k}})V_{\beta}\\ =softmax(\frac{X_\alpha W_{Q_\alpha}W^T_{K_\beta}X^T_{\beta}}{\sqrt{d_k}})X_\beta W_{V_\beta} Yα=CMβ→α(Xα,Xβ)=softmax(dkQαKβT)Vβ=softmax(dkXαWQαWKβTXβT)XβWVβ
其中查询(Query) Q α = X α W Q α Q_{\alpha}=X_{\alpha}W_{Q_{\alpha}} Qα=XαWQα来自模态 α \alpha α,键(key) K β = X β W K β K_{\beta}=X_{\beta}W_{K_{\beta}} Kβ=XβWKβ和值(value) V β = X β W V β V_{\beta}=X_{\beta}W_{V_{\beta}} Vβ=XβWVβ来自模态 β \beta β。
具体的说,上式中按比例( d k \sqrt{d_k} dk)缩放的 s o f t m a x softmax softmax计算分数矩阵 s o f t m a x ( ⋅ ) ∈ R T α × T β softmax(\cdot)\in R^{T_\alpha \times T_\beta} softmax(⋅)∈RTα×Tβ,其第 ( i , j ) (i,j) (i,j)项测量由模态 α \alpha α的第 i i i个时间步长对模态 β \beta β的第 j j j个时间步长给予的关注度。因此, Y α Y_\alpha Yα的第 i i i个时间步长是 V β V_\beta Vβ的加权总和,其权重由 s o f t m a x ( ⋅ ) softmax(\cdot) softmax(⋅)中的第 i i i行确定。上式为单头跨模态注意,其计算过程为:
在计算完跨模态注意之后,然后进入Positionwise feed-forward( 相 当 于 全 连 接 层 \color{red}{相当于全连接层} 相当于全连接层),基于先前关于transformer的工作,在跨模态注意块中添加了残差连接以及在跨模态注意计算的前后添加层归一化操作,以组成完整的跨模态注意块。
每个模态通过多头跨模态注意模块(multi-head cross-modal attention module)其他模态的底层信息进行交互不断更新其序列。在跨模态注意的级别上看,来自源模态( β \beta β)的低级信号被变换成一组不同的键/值对以与目标模态( α \alpha α)进行交互。跨模态transformer学习跨模态关联的有意义的信息。
MulT是基于对每对跨模态交互进行建模的。因此,考虑到3种模态(即L、V、A),一共有六个跨模态transformer。
4、自注意力Transformer和预测(Self-Attention Transformer and Prediction)
作为最后一步,我们将来自共享相同目标模态的跨模态transformers的输出连接起来,以产生 Z { L , V , A } ∈ R T { L , V , A } × 2 d Z_{\{L,V,A\}}\in R^{T_{\{L,V,A\}}\times2d} Z{L,V,A}∈RT{L,V,A}×2d。例如, Z L = [ Z V → L [ D ] ; Z A → L [ D ] ] Z_L=[Z^{[D]}_{V\to L};Z^{[D]}_{A\to L}] ZL=[ZV→L[D];ZA→L[D]]。然后,它们中的每一个都通过self-attention transformer模型来收集时间信息以进行预测。最后,提取self-attention transformer模型输出的最后一个元素并将其连接起来,然后通过全连接层进行预测。
在先前的工作中,多模态序列被手动进行对齐,因此不同模态在对齐的位置具有较强的注意力,其注意力矩阵呈阶梯对角线。
而对于MulT来说,多个模态元素之间的相关性纯粹基于注意力,MulT不会通过(简单地)对齐来处理模态不对齐。跨模态注意鼓励模型直接关注存在强信号或相关信息的其他模态中的元素。因此,MulT能够以一种常规对齐不容易揭示的方式捕捉远处不同模态的相关信息,其注意力矩阵是通过MulT模型学习到的不同模态之间每个位置之间相关联的程度。
CMU-MOSI数据集
自己运行的结果:
A c c 7 Acc_7 Acc7 | A c c 2 Acc_2 Acc2 | F 1 F1 F1 | M A E MAE MAE | C o r r Corr Corr |
---|---|---|---|---|
35.4 | 81.0 | 80.6 | 0.975 | 0.673 |
CMU-MOSEI数据集
自己运行的结果:
A c c 7 Acc_7 Acc7 | A c c 2 Acc_2 Acc2 | F 1 F1 F1 | M A E MAE MAE | C o r r Corr Corr |
---|---|---|---|---|
48.2 | 80.6 | 80.7 | 0.620 | 0.666 |
IEMOCAP数据集
自己运行的结果:
Happy | Sad | Angry | Neutral | ||||
Acc | F1 | Acc | F1 | Acc | F1 | Acc | F1 |
85.6 | 79.0 | 79.4 | 70.3 | 75.8 | 65.4 | 60.0 | 48.3 |