联合表示Joint Representation:《多模态表示学习:综述》学习笔记(1)
原论文:
Guo W, Wang J, Wang S. Deep multimodal representation learning: A survey[J]. Ieee Access, 2019, 7: 63373-63394.
异质性差异
异质性差异(heterogeneity gap):多模态的特征向量经常是定义在不相等的子空间里。这样的话,就算是相同的语义,在不同模态下,表示向量是完全不同的。
一种自然的常见的想法是:将不同模态的异构特征,映射到一个共同的子空间中,同时保证相似语义的输入拥有相似的表示向量。也就是,在缩小异质性差异的同时,还能保持在原模态下特定语义的完整。
原模态下特定语义的完整怎么理解呢?当表示猫猫的图片信息和表示猫猫的文本描述都用相近的向量表示(分别为v,t,但是v,t相似)的时候,我们拥有了“猫猫”语义的一般性的底层的“模态不变的(modality-invarious)”表示向量,但是又希望v保留了毛茸茸的质感的视觉表现的信息,这是t所没有的。(既要抽象,又要低损)
(后面会再次提到。)
为什么要解决异质性差异,又同时带来了什么好处呢?
自然的,当不同模态的表示向量在一个共同的子空间里,且我们构建的时候,要求向量之间计算相似/相关是有意义的。那么,我们可以有很多应用,例如,跨模态检索cross- modal retrieval(用文本句子检索图像,或者根据图像检索文字)、跨模态翻译cross-modal translation(输入图像,获得标题;输入视频,获得视频描述说明)
因为深度学习方法的表示能力强,可以获得不同程度的表示,而且无需要求手工特征设计,所以聚焦在深度学习方法。
深度多模态表示学习分类
深度多模态表示学习按网络架构设计分为三种:联合表示joint representation,协同表示coordinated representation,编码-解码encoder-decoder
一些常见模型在分类中的情况。
单模态的表示MODALITY-SPECIFIC REPRESENTATION
在三种框架中,首先都是要对原模态输入进行表示学习,然后才能进行或融合,或约束修正,或重构的操作。
- 图像:基于CNN的LeNet,AlexNet,GoogleNet,VGGNet,ResNet;特别地,可以应用一些给予CNN预训练模型,进行迁移学习。
- 词字:word embedding(word2vec、Glove)、character embedding(解决未登录词的问题)
- 手工特征提取(handcrafted features):对特定输入至今还有广泛应用
- 人脸:OpenFace提取人脸特征(facial landmark)
- 音频:openSMILE提取音频特征(MFCC、强度、音调等)
- 序列:得益于NLP的发展,有很多研究
- 一般情况:RNN,加入门控的LSTM、GRU;双向的RNN、LSTM、GRU;
- 句子级别:CNN(应用在句子级别sentence level的情感分析中有效)
- 视频/音频:看作是fames,先应用单个fame的表示方法(例如CNN、OpenFace、openSMILE等),再对序列处理(例如RNN),获得完整的视频/音频表示
联合表示JOINT REPRESENTATION
从“整合不同类型的特征,以提高机器学习方法的性能”这种策略进行拓展,在多模态表示学习中对异质性特征进行融合。
在多模态分类、聚类任务中,这个策略得以实现。(下游任务定义约束进行融合)
为了消弭异质性差异,**联合表示法(Joint representation)**目标是将所有单模态表示投射到一个共享的语义空间中。
拼接concatenate
这里的拼接,通常都是通过一个额外的隐藏层实现,如式子(1)。其中
v
1
v^1
v1、
v
2
v^2
v2 是单模态的表示,
f
f
f是激活函数
z
=
f
(
w
1
T
v
1
+
w
2
T
v
2
)
\begin{equation} z=f(w_1^Tv_1+w_2^Tv_2) \end{equation}
z=f(w1Tv1+w2Tv2)
这种也被称为加法方法additive method。
另外,也有人提出乘法方法multiplicative method,并试图捕获模态内和模态间的动态关系(exploit either intra-modality or inter-modality dynamics),如式子(2)
z
m
=
[
z
l
1
]
⊗
[
z
v
1
]
⊗
[
z
a
1
]
\begin{equation} z^m= \left[ \begin{matrix} z^l \\ 1 \\ \end{matrix} \right] \otimes \left[ \begin{matrix} z^v \\ 1 \\ \end{matrix} \right] \otimes \left[ \begin{matrix} z^a \\ 1 \\ \end{matrix} \right] \end{equation}
zm=[zl1]⊗[zv1]⊗[za1]
由于外积计算需要高的运算成本,引入Count Sketch projection function 进行降维。
数据缺失问题和模态不变特性(modality-invariant property)
根据Joint的结构就可以发现,它需要并行独立同时计算不同模态的数据,但是同一对象能获取的模态数据有可能缺失。什么意思呢,训练图片-文本-语音三模态表示的模型,有了猫猫吃鱼的图片、猫猫吃鱼的文本,但是没有相关的语音,那是否只能舍弃“猫猫吃鱼”这个语义的表达呢?或者只能讲此数据用在负例中?
研究发现,充分利用有缺失模态的数据,甚至可以加入只有部分模态的训练数据,能够提高模型的性能,甚至能有助于获取模态不变的(modality-invariant)通用语义信息。(个人理解是,能达到一种类似“数据增强”的正则效果)
除了在数据准备过程这么做,也可以在在训练中的,某些epoch里,随机排除某个模态的数据(类masked操作)。
还可以在中间隐藏层加入统计正则化约束,鼓励保留通用语义信息,而最小化模态特有的(modality-specific)特征的影响。
共享语义(shared semantic)和互补语义(complementary semantic)
不管愿不愿意,其实Joint的模型结构和设计都是在鼓励保留那些不同模态都共享的语义信息。
为什么这么说?因为捕捉共同的部分是容易的,这些基础信息是可以在不同的样本中重复出现的;在网络早期就被融合的特征,在下游任务的深层网络训练中,权重矩阵倾向保留清晰的贡献高的“关键”部分;样本在不同模态下的“信息容量”差距大,融合时大容量特征会被舍弃;……(一些直观推测)
这样的话,不利于我们从不同模态上获得互补的语义。(融合后的表示向量,既要是底层不变的,又要补充各模态中的特别之处)
其中策略是,增加正则约束。
例如,将在多模态自编码(Multimodual autoecoders)方法中的重建损失(recontributed loss)作为正则项加入到目标函数上,以此保护模态表示独特的部分。
还可以,在隐藏层的权重
w
w
w中加入矩阵迹范数(trace norm)作为正则项,用于保留多模态特征的隐藏的相关性和多样性。
怎么起作用的?原来鼓励不同模态用相似的分布产生特征,现在最小化迹范数要求发现不同模态的关系,调节权重矩阵,即不同模态的特征对融合后的特征贡献是不一样的,以此使得融合后的特征保留了模态间不同的互补信息。