Multimodal Machine Learning: A Survey and Taxonomy
本文是CMU Multicomp实验室Tadas Baltrusaitis写的一篇Survey,正好最近在看Multimodal,看到这篇文章觉得不错,做个笔记。
模态(modality):指的是事情发生或物体表现的形式(The way in which sth happens or experienced),那多模态自然就是多种形式的混合。AI中最常被研究的对象是:NLP,CV,Vocal。Multimodal ML目标是构建一个可以处理、关联多模态信息的模型。
Topics of Multimodal
目前业内研究多模态主要有5大Topics:
- Representation:找到合适的表征,实现模态间信息互补&去除冗余。
- Translation:把一个模态的数据映射到另一个模态
- Alignment:不同模态间信息的对齐
- Fusion:融合各个模态的信息来完成推理
- Co-learning:将多模态信息用于目标的共同学习
Representation
算法中,我们通常用向量来表征一个数据,多模态也不例外。多模态表征重点关注异质的数据源的关联关系。本质是解决下面的问题:
$$ \mathbb{x_m} = f(\mathbb{x_1},\mathbb{x_2}…,\mathbb{x_n}) $$
或
$$ f(\mathbb{x_i}) \sim g(\mathbb{x_j});i \not= j $$
那么那么如何衡量数据整合的好不好,什么叫Good Representation,以及什么叫Good Multimodal Representation?
Bengio大神之前定义过一组属性,Good Representation应该具备以下特点:
- smoothness 平滑
- temporal and spatial coherence 时空一致性
- sparsity and natural clustering amongst others 类别之间的稀疏和聚集性
此外,Good Multimodal Representation应该还具备:
- 表征空间内的similarity应该反映concept的similarity
- 某些模态的缺失不影响最终的表征
- 观察到某个模态后,可以补全其他模态
Joint Representation
把多模态一起映射到一个空间里。
基于神经网络
对于监督任务,通常用DNN,模态数据作为多输入,预测label,取最后产出的某层embedding作为表征。

在label比较少的情况下,无监督任务,通常可以用encoder + decoder的方式,从一个模态生成表征,再从表征生成另一个模态。

基于概率图
使用Latent random variables表示多模态。典型的比如DBM(Deep Boltzmann Machine),实现形式和DNN相同,只是Deep/Encoder网络变成了DBM。
序列化整合
基本也是基于神经网络的一种特例吧,可以用RNN或者Attention
Coordinated Representation
各个模态在表征时,兼顾其他模态信息,和Joint表征区别是, Coord方法下各个模态产出各自的表征,只是产出过程会兼顾其他模态。
相似度模型
最小化隐层的表征距离

Translation
多模态还关注从一个模态映射到另一个模态,最典型例子如image caption、voice generate等。由于方法比较多,而且处理的方法也和模态相关,我们通常把translation分为两类:
- example based:基于字典的一一映射
- generative:基于模型的映射
Example Based
基于近邻检索
目标是能够构建一一映射关系,比如近邻检索、哈希编码、PQ等,本质是将相似数据的不同模态,映射到相同检索编码位所在的空间,保证类内距离最小,类间距离最大。
检索、编码、PQ等方法,参考向量化检索领域文章,这里不赘述
组合方法,k-近邻
把相似的k个近邻聚合,进行检索,需要大量的hand craft。
Generative
基于逻辑关系
Survey原文叫(Grammar-based models)但翻译成中文可能叫逻辑关系更加贴切。本质上是基于预定义模板,从instance中找出对应的逻辑结构,最终完成匹配。这种方法需要分两步走:
- 预定义template(或逻辑结构)比如我们定义好NLP的主谓宾、明确image中有几个object等等。
- 找到相应的concept,比如translation中的命名实体识别,image中的detection等。
Encoder - Decoder结构
端到端的学习,结构类似上文joint representation,通过模态直接生成另一个模态,属于比较常见的思路,不展开了。
序列持续生成
序列化可以看做Encoder - Decoder结构的一种滑动特例,和正常的翻译系统、序列生成模型无异,不赘述。
Alignment
多模态对齐指:找到instance的不同模态里,关联、对应或相似的组件。
比如给定image和caption,找到图中的object和句子中的entity;比如给定视频和语音,把帧和声音对齐等等。
显式对齐
直接进行不同模态的组件之间的一一对应,称为显式对齐。
无监督
在没有对齐标注的情况下, 如何学到对齐特性呢?现有很多工作和idea的本质是发现sub-components之间的协同关系coordinator relation。
目前的工作通常是基于DTW(Dynamic Time Warping)/Graph/HMM(Hidden Markov Model)使用的是图的概率关系。但剖析更本质的思路,其实和下文隐式对齐中的神经网络,以及word embedding中做word similarity的思路很像。 但底层使用的是概率图模型,并进行了二值化的对齐操作。
有监督
有监督是在有标注的情况下做的,没啥特别的,搞个表征学习label就行。
隐式对齐
借助隐式步骤,通过中间值进行底层对象的对齐。
图模型
需要预先定义隐式的图节点,近几年不太常见。
神经网络
通过模型来学习各个weight的权重,和word embedding很像,word emb通过词在window中的协同关系,找到相似词;类似的,用同样的思路我们也可以找到对齐的特性。
我们以image caption为例,举一个最简单的例子,说明它和word embedding的一致性:
- 用一个Detection网络检测图中多个object,称为$o_i$,把这些object的表征放在一起,得到集合$o={o_i}$
- 用一个Encoder-Decoder解析Sentence得到word,称为$w_j$,把这些word表征放在一起,得到集合$w = {w_j}$
- 把异构的$o$和$w$直接union到一起,构成异构的集合$p_z$,其中$p_i = o_i; p_{i+j} = w_j; z= i+j$
- 处理完所有的$N$条样本,我们有了集合$P = {p_z^k};k\in [1,N]$
- 这里的$p^k_z$可以看做word embedding中的一条采样记录,$P$是我们的语料库,最终我们会学到$p^k_z$的表征,也就是$o_i;w_j$的表征
- 由于这个表征在空间维度上能保证相似关系,那么自然的,其内部的$o_i$和$w_j$的inter和intra关联关系都能够保证
Fusion
Survey中称,fusion是多模态领域所独有的(我觉得只是把大杂烩起了个新名字)。目标是解决多模态中的信息整合问题(integrating information from multiple modalities)。
优势有几个:
- robust predictions:比单模态更鲁棒(某个模态的异常点不会影响大局)
- capture complementary information:信息补齐(feature更多)
- one of the modalities is missing:(某个模态偶然缺失也没关系)
模型无关的
- eary fusion:比如特征拼接、pooling
- late fusion:最终prediction求和
- hybrid:early和late都做
基于模型的
- Multiple Kernel Learning:SVM的,工业界用不上,暂时不看了…
- Graphical Model:用联合概率的一些模型往上套,上层套一个HMM或者条件随机场,算是一种思路吧
- Neural Networks:通过修改模型,用模型把多种模态的信息融合成一个统一的output
Co-learning
是一种训练方法的划分方式,没有太多技术可以介绍。
并行数据
指每个instance都具备我们需要的所有模态
- Co-Train:同时训练多种模态的模型
- Transfer:一种模态信息丰富的时候,可以用来迁移
非并行数据
不一定每个instance都具备所有模态,模态甚至可以只在concept上共享。
- Transfer
- Conceptual Grounding:(概念落地?概念深挖?)目前还没找到好的翻译,表示找到某个概念背后更深层的东西。比如我们通过word组合学习语言,那学到的就是word层面的conceptual,但是如果我们有了speech、voice或者视频的面部表情,我们就可以学到语言这个conceptual更深层的东西,比如断句就是更依赖于speech,而在word组合中学的不那么好的。
- Zero Shot Learning:ZSL依赖样本的attribute标签进行样本判别,而多模态可以天然的作为样本的一种attribute视角。
Hybrid
基于第三种C模态或数据集,把两种模态A,B关联起来学习。
Conclusion
多模态是多个领域的交战之地,涉及到很多领域。在研究对象上,有NLP、CV、Vocal…,在研究领域上,有表征学习、近邻检索、迁移学习、概率图…,到具体实现上也是五花八门,CNN、RNN、Attention、Encoder、Generative Model、DBM、HMM、Co-Train等等。但万变不离其宗,所有的方法最终还是为了解决上述的5个Topic。
或者说,所有和上述5个topic相关的problem,都可以用多模态的方式来解。