引言
我相信多模态问题大家应该不会陌生。多模态学习旨在通过机器学习的方法实现处理和理解多源模态信息的能力。目前比较热门的研究方向是图像、视频、音频、语义之间的多模态学习。主要包括两大研究方向:联合表示(Joint Representations)和协同表示(Coordinated Representations)。
联合表示将多个模态的信息一起映射到一个统一的多模态向量空间;协同表示负责将多模态中的每个模态分别映射到各自的表示空间,但映射后的向量之间满足一定的相关性约束。
这里简单说一下一个比较有趣的应用:协同学习到的特征向量之间满足加减算数运算这一特性,可以搜索出与给定图片满足“指定的转换语义”的图片。
例如:狗的图片特征向量 - 狗的文本特征向量 + 猫的文本特征向量 = 猫的图片特征向量 -> 在特征向量空间,根据最近邻距离,检索得到猫的图片
可见多模态学习还是有很多有趣的应用的。那么对于多种模态的信息我们应该怎么融合;再进一步讲怎么在大规模的场景上如何高效的进行融合多模态信息,在精度和速度上进行一个权衡。下面讲解的这篇AAAI2018论文就是解决了上述问题,通过这篇论文的学习我们可以多对模态学习有一个简单的了解。
Efficient Large-Scale Multi-Modal Classification(AAAI2018)
摘要
早期的互联网主要是基于文本的,但现代数字世界正变得越来越多模式。这里,我们研究多模态分类,其中一个模态是离散的,例如文本;而另一个是连续的,例如从卷积神经网络传输的视觉表示。我们关注的场景是,我们必须能够快速地对大量数据进行分类。研究了实现多模态融合的各种方法,并分析了它们在分类精度和计算效率方面的优缺点。我们的研究结果表明,即使使用简单的融合方法,在一系列多模态分类任务中,包含连续信息比文本更能提高性能。此外,为了进一步加速和简化融合过程,我们尝试将连续特征离散化。我们的结果表明,与离散化特征融合的性能优于纯文本分类,其计算成本仅为全多模融合的一小部分,同时还具有更好的可解释性。
动机
- 尽管最初的网络基本上是基于文本的,但近十年来,多模式内容激增:每天都有数以十亿计的图片和视频在网上发布和分享。文本要么被取代为主导形式,比如Instagram的帖子或YouTube视频,要么像今天的大多数网页一样,用非文本内容进行扩充。这使得多模态分类成为一个重要的问题。
- 网络将越来越多模式化,使得多模式分类问题变得更加相关。同时,随着Web的不断发展,我们必须能够高效地处理越来越多的数据,这就使得关注可以应用于大规模场景的机器学习方法变得非常重要。
本研究旨在将这两个问题结合起来进行研究:
将不同模式的数据合并(即融合)的最佳方式是什么?
以及如何以最高效的方式进行合并?
贡献
- 首先,我们比较了各种多模态融合方法,分析了它们的优缺点,并且证明了往往简单的模型是可取的。
- 其次,为了进一步加速和简化融合过程,我们对连续特征进行了离散化实验。
- 第三,我们研究离散化特征的学习表征,并表明它们产生了有益的副作用可解释性。
这项工作是第一次尝试检验在多模态分类中精度/速度的权衡。
本文工作为其他方法提供了一个坚实且可扩展的Baseline;我们对离散化特征的研究表明,多模态分类不需要很大的性能损失,并且在大规模场景中是可行的。
方法论
首先,作者采用了高效快速的文本分类方法FastText。具体地说,我们使用2048维连续特征,这些特征是通过迁移(转移)152层ResNet的预训练softmax层获得的。其中ResNet是经过ImageNet分类任务的预训练;对于大规模的FlickrTag数据集,我们使用ResNet-34的512维特征。
目标函数定义如下,给定一组NNN个文档,目标是最小化这些类的负对数可能性:

其中ooo是网络的输出,xnx_nxn?是多模式输入,yny_nyn?是标签。
基线
Text 第一个基线由FastText、word representation learning和sentence classification组成。也就是说,我们完全忽略了视觉信号,只使用文本信息。公式化如下:

其中WWW和UUU是权重矩阵,xtx^txt是文本特征的规范表示。
Continuous 第二个基线包括仅在传输的ResNet特征上训练分类器。也就是说,我们忽略文本信息,只使用视觉输入,即:

其中WWW和VVV是权重矩阵,xvx^vxv是ResNet特征的组成部分。
连续多模态多模型
Additive 我们使用分量加法将两种模式的信息结合起来,即:

Max-pooling 我们使用分量最大值合并两种模式的信息,即:

Gated 我们允许用一种模态通过sigmoid非激活函数去激活另一种模态。


我们可以把这种方法看作是从一种模态到另一种模态的注意力。它在概念上类似于多模门控单元的简化。
Bilinear 最后,为了完全捕获两种不同模式之间的关联,我们研究了一个双线性模型。

可以被认为是更复杂的多模双线性池化的一个简单版本。我们还实验了一种在双线性模型中引入门控非线性的方法,我们称之为双线性门控。
离散化多模态模型
连续模型的一个缺点是它们需要昂贵的矩阵向量乘法,而存储浮点数的大矩阵则需要很大的空间。我们尝试将连续特征离散化,将连续特征转换为离散的token序列,可以将其视为特殊token,我们将其单独规范化,并在标准的FastText设置中使用。
此外,我们研究了乘积量化(PQ),其中我们将连续向量分成大小相等的子向量,然后对每个子向量执行k均值聚类。对于每个图像,我们随后确定每个子字的最近质心,并将其与子向量索引相结合以获得离散化向量。举个例子:
一个100维度的连续向量xivx_i^vxiv?可以被分成10个10维的子向量sis_isi?。设N(si)N(s_i)N(si?)表示sis_isi?的最近质心的指数。那么vvv的离散化表示如下:

我们在文本中包含这些标记,并将它们视为特殊标记。

其中xdx_dxd?是就离散化的视觉特征,ααα是重加权超参数。这里我们可以把离散化特征当作一种文本的”单词“。
乘积量化PQ存在一定的缺陷。它给子向量施加了硬边界,这意味着子向量之间共享的重叠语义内容可能会丢失。本文中引入了一种新的量化方法,称为随机样本量化(RSPQ)。在RSPQ中,过程与PQ相同,唯一的改动是我们在xivx^v_ixiv?的随机排列上重复rrr次执行PQ。
模型复杂度分析
在这些模型之间存在各种权衡。Adaptive、Max-pooling和Gated模型是最简单的,并且会产生与普通FastText相同大小的隐藏层。因此,线性分类器的计算复杂度为O(HK)O(HK)O(HK),其中KKK是类的数目,HHH是UxtUx_tUxt?的大小。最大池和选通模型比加法模型稍微复杂一些,需要额外的操作。对于双线性模型,复杂度为O(H2K)O(H2K)O(H2K)。因此,双线性模型是迄今为止计算成本最高的模型。加法模型的优点是它不要求在任何时候都有连续的输入。
实验
数据集
首先介绍进行性能评估是所使用的多模态数据集,一共采用了三个数据集。各数据集的定量特性如下表所示,FlickrTag-1是原始数据的十分之一:
实验结果
- 我们注意到在Food101的例子中,我们的方法比以前报告的结果要好得多。对于MM-IMDB,连续多模态模型的性能非常接近GMU模型,并优于AVG-Probs方法,同时更简单,计算效率更高。
- 我们观察到,不管特定类型的融合,多模态模型总是优于标准的FastText和仅连续方法。这表明包含多模态信息(至少在这些类型的分类任务中)总是有帮助的。
- FastText在所有数据集上的表现都优于仅连续方法,这表明文本在这些任务中扮演着重要的角色,并且它比视觉信息更重要。
- 我们研究连续多模态模型,我们会发现双线性选通模型是明显的赢家:它在所有三个任务上都优于所有其他方法。然而,它也是最复杂的模型,因此效率较低。
- 简单得多的模型的性能与最佳成绩相差不远。要传达的信息似乎是:如果您更关心准确性,请使用带选通的双线性方法;如果您更关注速度,请使用additive或max Pooling,它们还有一个潜在的好处:如果没有可用的连续信息,则不一定需要连续信息的存在。
如果速度是必要的(如果必要的话,以牺牲一定的精度为代价),那么离散化模型显然是进一步简化和加快模型的选择。尽管它们的性能远远超过标准的FastText,如表2所示,但是它们对性能的影响很小。双线性模型训练大约需要一个小时。离散化方法,类似于FastText,只需要花费大约1分钟。
如果我们扩展到完整的FlickrTag数据集,表4显示离散化模型的性能大大优于标准的FastText。从FastText到RSPQ,准确度提高了2.7%,这意味着使用该模型对16778个测试集文档进行了正确分类,这是一个不可忽略的数量。
离散化多模态方法的一个有趣的作用是,它们允许我们检查量子化特征的最近邻。例如,如果一个特定特征对应于看起来像donuts的东西,那么它的嵌入应该接近于与donuts相关的单词。,如表5所示,我们可以找到明显可识别的集群,例如 donuts, crème br?ulée and 某些日本食品。
自己的想法
互联网的日益多模态化,使得多模态分类的任务越来越艰巨为了能够处理大量的数据,我们需要有效的大规模多模态模型分类。这项工作是第一次尝试检验在多模态分类中精度/速度的权衡。
道理很简单,一般来说,越复杂的模型一般来说精度越高,但是牺牲的是速度。我们经常看到看很多顶会都加了很复杂的模块,然后精度提升了一点点,有人在ACL2019中发论文痛批这种不定点提升。现在我们看到很多论文我们可以简化模型来保证精度的同时,来提高速度,包括现在进行比较火热的工作,模型蒸馏、神经网络剪枝等等。
本文提出来的是通过一种乘积量化的形式来融合多模态问题。也给了我们一些思考,我们真正在做项目的时候,更多的是需要关注那些足够简单和有效的模型来处理大规模的数据集,同时在数据集上获得更好的性能,这样产品才会更好的落地。
文章中提到了乘积量化PQ,但是说的不清楚,这里我在稍微解释下PQ在图像检索是如何使用的:
假设我们的图片检索库有100万张图片,每张图片提取多个128维的特征向量,把这128维向量分成8个短向量,每个短向量是16维,也就是说检索库总共包含100万*8这么多向量(我们暂且称为8堆短向量,每一堆有100万个短向量),我们把每一堆短向量都用k-means 聚类为 256类。对于检索库里面的每一张图片都由多个128维的向量表示,把每个128维的向量分为8个16维的短向量,对于每一个短向量我们都找到他属于一堆短向量的256类中的哪一类,依此类对,8个短向量分别在8个堆中查找属于256类中的哪一类,这样一张图片8个短向量的每一个短向量都有256种选择,即一张图片总共有256的8次方种选择。