本文是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中找出对应的逻辑结构,最终完成匹配。这种方法需要分两步走:

  1. 预定义template(或逻辑结构)比如我们定义好NLP的主谓宾、明确image中有几个object等等。
  2. 找到相应的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的一致性:

  1. 用一个Detection网络检测图中多个object,称为$o_i$,把这些object的表征放在一起,得到集合$o={o_i}$
  2. 用一个Encoder-Decoder解析Sentence得到word,称为$w_j$,把这些word表征放在一起,得到集合$w = {w_j}$
  3. 把异构的$o$和$w$直接union到一起,构成异构的集合$p_z$,其中$p_i = o_i; p_{i+j} = w_j; z= i+j$
  4. 处理完所有的$N$条样本,我们有了集合$P = {p_z^k};k\in [1,N]$
  5. 这里的$p^k_z$可以看做word embedding中的一条采样记录,$P$是我们的语料库,最终我们会学到$p^k_z$的表征,也就是$o_i;w_j$的表征
  6. 由于这个表征在空间维度上能保证相似关系,那么自然的,其内部的$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,都可以用多模态的方式来解。