Py学习  »  机器学习算法

如何融合深度学习特征向量?

夕小瑶的卖萌屋 • 3 年前 • 378 次点击  

文 | 土豆@知乎

本文已获作者授权,禁止二次转载


前言

在深度学习中,经常会存在需要特征融合的地方[1],而最基本的融合方法无非是:(1) 按点逐位相加(point-wise addition) 和 (2) 进行向量拼接(concatenate)。这两种方式有着异同,也有着关联,接下来进行简单讨论。

Point-wise addition

逐个位相加,用数学表达为: 现有特征向量 , ,为了融合这两个特征向量,直接进行对应元素的相加,既是

进行这个操作的前提当然是这两个向量的维度是相同的,如果是不同维度,则可以通过线性变换 转换成同维向量,其中

Concatenate

向量拼接,则是一个更为通用的特征融合方法,数学表达为:现有特征向量, ,将其在同一个阶[2]的进行拼接,有融合特征向量。拼接完后,经常可以用线性映射,转换成,进行这一步的操作目的是能够和前者point-wise addition的进行同维度的比较。

两者关联与异同

前面介绍的两种操作,其实是有联系的,结论先抛出了,就是:point-wise addition 是 concatenate的特殊形式,前者可以用学习的方式,用后者表示出来,用另一种说法就是,point-wise addition 是 concatenate加了一定先验假设的结果。为什么这样说呢?我们先观察一种情况:

比较两种特征融合的方式,并且进行线性映射后的结果,有:

  • Addition:

    其中每一个可以表达成:

    ,用矩阵形式表达就是:

举个具体的例子,, 那么最后结果容易算出是

  • Concatenate:

    还是用矩阵的形式对其进行表达,不过这个时候我们的,可以发现这个情况下参数量比上者多得多。

这个时候我们可以发现,通过学习过程中的自动参数调整,在concatenate的情况下,总是有办法表达成Addition中的结果的,原因就是可以通过设置Concatenate情形下的的某些值相同,还是举原来的具体例子说明:

,此时只需要,就可以表达成和Addition完全一样的结果,读者可以自行验证。

就结论而言,因为Concatenate情况下参数量完全足以cover住Addition的,因此通过学习过程,完全是可以进行表达的,因此后者是前者的特殊形式,是添加了先验知识的特征融合方法。

那么,这个先验知识是什么呢?笔者认为因为Addition是在相同维度的特征空间中进行的,相加代表特征向量的平移,因此这个先验知识可能是假设这两类特征具有相似性,比如模态比较接近,性质比较相同的特征。当然这个只是笔者猜测,并无文献参考,欢迎各位斧正,谢谢。

有朋友问:

“point-wise addition 是 concatenate的特殊形式”的结果似乎只在均将融合后的特征线性映射成标量后才成立,但是这两种融合方法之后不一定要经过这种处理吧?而且,这种线性映射会减少大量信息,似乎不甚合理?

我觉得这个问题其实是不成立的,因为原文里面举的例子是映射成为标量只是为了举例方便而已,实际上,映射成其他高维矢量也是没问题的,比如说:在Pointwise addition的情况,那么假设其,我们有:

concatenate的情况中,我们有:

那么如果需要退化到addition的情况的话,我们的可以为:

因为我们有八个未知量,而只有两个方程,因此这是个病态问题,其实我们有多组解的,不管怎么样,我们总是可以用concatenate去退化到addition的情况的,不管是映射到标量还是矢量。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1] Li K, Zou C, Bu S, et al. Multi-modal feature fusion for geographic image annotation[J]. Pattern Recognition, 2018, 73: 1-14.

[2] https://blog.csdn.net/dcrmg/article/details/
79017146

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/106412
 
378 次点击