Multimocal_Fusion

主流融合方法

多模态融合指:让图像、文本,视频和音频等不同模态的信息在模型的某个层级发生交互,从而形成“联合表征”或“联合决策”。

通常包含三个关键问题:

  • 融合发生在哪里;输入/特征/决策/模型内部多层
  • 怎么让两种模态相互影响:拼接、门控、注意力、双线性、MoE等
  • 融合后的表示拿来干什么:分类、检索、问答、生成

分成三大类:基于简单操作的融合、基于注意力的融合、基于双线性池化的融合。

图像编码器得到:,文本编码器得到:,这里的v和t不是原始数据,而是各自模态经过编码后的高层语义表示。

融合块要做的就是:构造一个联合表示 ,使z同时包含两种模态的信息,供下游任务使用。

简单操作融合

很多时候编码器本身已经提取了高度抽象的语义,两个全局语义向量合起来已经能解决一大类任务。

拼接

其中 是 ReLU/GELU 等非线性。

这里拼接负责“信息并置”, MLP 负责怎么组合这些信息。

MLP 的每一层只做线性变换,还没实现复杂交互,真正的交互来自非线性激活和多层MLP。

信息保留完整,参数少,训练稳定,适合全局语义型任务(图文而分类,多模态情感分析,用户画像判断)而不是精细对齐。

加权和(整体)

先把维度投到同一维: 投影层的W有两个作用,一是统一维度,而是统一语义坐标系,让模态在同一潜在空间里变得可比较可相加,加法的本质上意味着“同一坐标轴上的值可以被混合”,如果没有这个步骤,相加在数学上可以做但在语义上却可能是乱的。

再做线性加权:

可以是常数超参,也可以学习得到。本质上在做两个模态之间的线性插值,也就是在图像语义和文本语义之间找一个平衡点。

真是多模态数据里可能两个模态的信息量并不总是一样的,可靠性也不一定一样,故加权和可以在更早阶段就做出一个整体判断。能提供一定自适应能力。

但是粒度不够细,因为所有维度都使用同一个比例,所有的语义子空间都按照同一规则融合。

门控融合(逐维)

让模型自己决定“更信谁”: W还是用来投影到同一空间, (g) 是逐维门控, 是逐元素乘法,是sigmoid,把每个维度压到0-1之间。 每一维都能选择来自图像还是文本的比例,比单个 更灵活,门控是一个条件性的、样本相关的、自适应的选择机制。

注意力融合

从“把向量合在一起”(简单融合)→ 到“让一个模态去选择另一个模态的关键信息”(注意力融合)。

核心公式: 这三件事在发生:

组件 含义
q(query) “我现在想找什么信息?”
k(key) “每个候选信息的标签”
v(value) “真正的信息内容”

图像注意力(Image Attention)

用文本语义去图像中找“最相关的区域”。

如果问题是“狗在做什么?”

模型应该关注“狗所在的区域”

机理是给定:

  • 图像区域特征:
  • 文本表示:

计算: 解决信息稀疏问题。

Up-Down Attention

先用检测器把图像拆成一组“语义区域候选”,再用语言去选择当前任务最相关的区域。

Bottom-up:从图像里提取出一组可能重要的对象/区域。 Top-down:根据问题或已生成的词,对这些候选区域分配注意力权重。

在该视觉注意力方法出现之前,一般是用CNN提取一张 featrue map,把feature map 上每个网格位置当成一个候选,文本去给这些位置分权重,但存在三个问题:一是候选单位不一定对应完整物体,语义不清晰,二是搜索空间太大,三是缺少对象层语义,很多视觉任务不是问哪个像素重要,而是问哪个物体重要。因此与其让注意力在低级网格上乱搜,不如先把图像分解成有语义的对象区域,再让语言去选,这是 Up-Down Attention 的出发点

通常做法是:

  • 用 Faster R-CNN 一类检测器
  • 在图像上得到若干个 region proposals
  • 每个 proposal 对应一个边界框和一个区域特征向量

设一张图像被检测器提取出 K 个区域:

K 是候选区域数,比如 36 个, 是第 i 个区域的特征,每个区域通常对应一个潜在对象或显著区域。

这些 不再是“规则网格点特征”,而是“对象级区域特征”。

Up-Down Attention 的逻辑链是:

第一步:Bottom-up

图像先给出候选对象集合

第二步:Top-down

语言状态 q 对候选对象打分

第三步:归一化得到注意力

第四步:聚合区域

第五步:和语言一起做预测

例如在 VQA:

再送去分类器输出答案。这里的表示MLP。

SAN(Stacked Attention Network)

也是文本找图像,不过一次attention不够,会多次refine。

第一步粗看找到相关区域,第二步在这些区域中筛选,第三步精细确认。

在典型 VQA 场景中:

  • 图像被表示为一组区域特征:

  • 问题(文本)编码为一个向量:

计算注意力 logits

对每个图像区域 ,计算:

这是在做:文本 和 图像区域 的匹配评分,:把图像映射到共享空间,:把问题映射到共享空间。

softmax 得到注意力权重

对应每个区域的重要性分布

加权得到图像表示

根据问题,选出“最相关的图像信息”

更新 Query(SAN的核心)

不是简单加法,而是在把“当前看到的图像信息”融入问题表示,可以理解为:

  • 初始 :原始问题
  • 更新后 :已经结合图像理解后的问题

DAN(Dual Attention Network)

双向注意力,引入memort vector进行迭代更新。

attention 计算:

图像 attention 文本 attention memory 更新

通常为问题编码(text embedding),m(0)=LSTM(Q)。

协同注意力(Co-Attention)

不只是文本看图像,图像也反过来看文本,两个模态互相决定彼此的“重要部分”。

协同注意力的统一数学框架

输入表示

设:

  • 图像区域特征:

  • 文本 token 特征:

构造相似度矩阵(核心)

表示:第 i 个图像区域 和 第 j 个文本词 的相关性。

这是协同注意力的核心,它显式建模:所有 图像区域 × 所有文本词 的两两关系。

双向注意力计算(Co-Attention)

文本引导图像(Text → Image)

对每个图像区域:

或:

得到图像注意力:

图像引导文本(Image → Text)

对每个文本 token:

得到文本注意力:

本质上,:图像中哪些区域重要,:文本中哪些词重要。

Transformer 融合

这是现代主流结构,双模态 Transformer 融合的本质,是把不同模态都表示成一串 token,然后用 self-attention / cross-attention 让它们在多层网络里不断交换信息,形成联合表征。

在单模态中:

在文本里每个词是一个 token,self-attention 让每个词看到其他词。

在图像里每个patch / regin 是一个 token,self-attention 让每个视觉 token 看其他视觉 token。

在多模态中:

Transformer 可以做模态间的交互 cross-modal modeling,也可以做模态内的交互 intra-modal modeling,还可以多层迭代融合,不只是交互一次,而是多层不断更新。

  1. 输入表示

设:

  • 图像 token 序列

  • 文本 token 序列

这里图像 token 可以来自:patch,检测框 region,CNN 网格特征。

文本 token 一般来自:WordPiece / BPE,LSTM 输出,embedding + positional encoding。

  1. Self-Attention

对于任意一组 token X,标准多头注意力先省略多头,写成单头: 它表示:当前序列内部,每个 token 对其他 token 进行加权聚合。

  1. Cross-Attention

如果文本去看图像: 这表示:

每个文本 token 从图像 token 中取信息。

反过来图像看文本:

ViLBERT

双流结构(vision stream + language stram),先个自己做自己的 self-attention,中间用 co-attention / cross-attention 交换信息。两条路中间搭桥。

图像和文本的结构差异很大,文本有强语法顺序,图像 token 更偏空间/对象分布,如果一开始就把两者混在一起,可能会破坏各自内部建模。

数学形式

设第 l 层时:

  • 图像表示为
  • 文本表示为

(1)先做模态内 self-attention

图像流:

文本流:

这一步表示:图像区域之间先互相交流,文本 token 之间先互相交流。

(2)再做 co-attention / cross-attention

文本从图像读信息:

图像从文本读信息:

(3)残差 + FFN 更新 最后得到的是跨模态增强的文本表示和视觉表示,一般再做concat融合。

OmniNet

使用gated multi-head attention,不仅要让模态之间交换信息,还要控制交换多少,哪些头更可信,哪些模态该被抑制。

普通 cross-attention 默认一个前提:只要算出来了 attention,得到的信息都应该被用上。

但现实里这不总对,例如:

  • 文本描述很模糊,图像信息反而误导
  • 图像有噪声,某些 attention 头学到伪相关
  • 某一模态当前不可靠,不该强行融合

标准多头注意力

单个 head: 多头拼接: 多头的好处是:不同 head 学不同关系,有的 head 学位置,有的学属性,有的学对象-词对齐,有的学全局上下文

加门控后的形式

一种典型 gated attention 写法可以理解为:

先算普通注意力输出: 再根据当前输入生成门控向量: 最后融合: 或者写成残差调制形式: 逐维度、逐位置地控制信息流。

DrFuse

不是直接融合模态,而是先拆分“共享信息 vs 模态特异信息”,再在“疾病级别”动态决定融合权重,从而同时解决模态缺失与模态冲突问题。

该论文的模型将每个模态拆分为两部分,共享 shared 和 特异 distinct,前者跨模态一致,后者模态独有。

对于两个模态: 其中,electronic health records (EHR) 表示电子健康记录,Chest X-ray (CXR) 表示胸部X光片。

在融合阶段, 其中::sigmoid,:logit()。

若 CXR 缺失:

这是在embedding空间做线性插值,先转成“概率语义”,再融合,再映射回特征空间。因为 shared 表示本质是“跨模态一致的预测倾向”,sigmoid 后更接近“概率解释”,在概率空间平均,比在特征空间平均更稳健。尤其在模态分布差异大(EHR vs 图像),数值尺度不一致的情况下更有效。

DrFuse 不直接融合两个模态,而是构造三类信息源:.

疾病感知注意力融合(Disease-aware Attention)

  1. 定义

对于每个疾病标签 ,单独学习一组融合权重:

  1. Attention 计算

query(患者表示): key(疾病特征): attention: Mask 机制(处理缺失模态)

若 CXR 缺失:

  1. 机制解释

与普通 attention 不同,这里有两个关键点:

  1. disease-specific

每个疾病一套权重:

  • 肺炎 → 更依赖 CXR
  • 代谢异常 → 更依赖 EHR
  1. patient-specific

同一疾病,不同患者权重也不同:

  • 有明显影像征象 → CXR 权重大
  • 无明显影像 → EHR 权重大
  1. 为什么这样有效

传统融合:固定权重 / 全局 attention

DrFuse: 权重 = f(患者, 疾病)

  1. Attention Ranking Loss(最关键的监督机制)

定义:让 attention 权重的排序,与各信息源的“预测能力”一致。

辅助预测:分别计算三个表示的预测损失: 排序约束:

如果:

则应满足:

损失形式(示意)

机制解释:

普通 attention:权重是“学出来的”,不一定可信

DrFuse: 用“谁预测得更好”来监督 attention

为什么这样有效:

解决了 attention 的核心问题:attention ≠ importance

通过 ranking loss: 让 attention ≈ 实际贡献,从“相关性权重” → “可靠性权重”

  1. 最终表示(针对疾病 ):

双线性池化融合

不是只把两个模态特征拼起来,而是显式建模“一个模态的每一维”和“另一个模态的每一维”之间的乘性交互。

相比于 concat、加权和、普通的 MLP 融合更强的地方在于:双向性池化融合直接做到 “视觉第 i 维和文本第 j 维同时出现,会产生什么联合语义”。

适合图文匹配、VQA,多模态分类,细粒度跨模态对齐。

若输出是一个标量: 其中:

  • ,通常为视频模态
  • ,通常为文本模态

把它展开:

这里的每一项都是: 这类方法交互很强,双线性做的是外积,每个视觉维度*每个文本维度,建模乘性交互,但参数大,工程上常用低秩分解(如 MFB/MLB/Tucker)来降维或近似。

MCB(Multimodal Compact Bilinear)

用随机映射近似外积,计算效率高。原始目标是近似: MCB 不直接算这个外积,而是先把 映射到压缩空间,再通过卷积乘法来近似外积组合。

常见形式可以概括成: 其中:

  • 是 Count Sketch 随机映射

    随机映射(Random Projection / Random Mapping)

    在 MCB 里,随机映射 是把原始向量映射到一个更低维的空间。这里常见的实现就是 Count Sketch

    1. 随机映射

    有两个向量: 如果直接做外积: , 结果会是一个 的矩阵。如果 都很大,这个矩阵就会非常大,计算和存储都很贵。于是就有一个想法:

    不直接在原空间里做这个超大的交互,而是先把原始向量压缩到一个较低维空间,再在低维空间里做近似计算。

    这个“先压缩”的过程,就是随机映射。

    1. 为什么叫“随机”

    因为它不是按“语义”或“人工规则”去压缩,而是用随机规则来决定:

    • 原向量的第 个分量被扔到低维向量的哪个位置
    • 它是加进去还是减进去

    这种随机性看起来很“粗暴”,但它有理论保证:

    JL 引理保证“结构不变”,Count Sketch 保证“统计不偏”,Tensor Sketch 保证“外积可近似” ,只要维度选得合适,整体统计性质(内积)能保留得不错,所以可以近似原本的双线性交互。

    1. Count Sketch 随机映射怎么做

    设原始向量: 我们想把它压到长度为 DDD 的向量里(通常 )。

    需要两个随机函数:

    (1)哈希函数 它决定原始维度 iii 被映射到压缩向量的哪一个“桶”里。

    (2)符号函数 它决定原始分量加进去还是减进去。

    (3)构造压缩向量

    定义压缩后的向量 ,它的第 个元素为: 意思是:所有被哈希到桶 的原始元素按照各自的正负号累加到

    1. 一个小例子

    假设原向量: 要压缩到长度

    设随机函数给出:

    那么:

    • 第1桶:来自

    • 第2桶:来自

    • 第3桶:来自

    所以: 这就是一次 Count Sketch 压缩。

    1. 为什么这种方法有用

    虽然多个原始维度会“撞到”同一个桶里,产生信息混叠,但:

    • 正负号随机化可以减少系统性偏差
    • 哈希散列能把信息比较均匀地分布
    • 在足够维度下,整体统计关系仍能保留

    所以它适合做“近似”,尤其适合 MCB 这种不追求精确恢复外积、而追求高效表示交互的任务。

    1. 在 MCB 里随机映射的作用

    它的核心作用是:

    把高维外积问题,转化为低维空间中的近似问题。

    也就是先把 各自压缩成: 接着利用卷积和 FFT 去近似原本的双线性交互。

  • 是逐元素乘法

  • FFT是快速傅立叶变换

    卷积乘法(Convolution)

    1. 卷积是什么

    对两个向量 ,离散卷积记作:a*b

    它的第 k 个元素定义为:

    1. 卷积的直觉

    卷积不是简单地“对应位置相乘”,而是:

    一个向量在另一个向量上滑动,每次对齐后做乘积求和。

    所以卷积体现的是一种“局部组合”“平移匹配”“聚合交互”。

    1. 和逐元素乘法的区别

    逐元素乘法 要求同位置相乘,结果还是同样长度的向量。

    卷积 是“很多位置之间的组合求和”。

    所以卷积比逐元素乘法更能表达“交互组合”。

    1. 一个简单例子

    设: 普通离散卷积结果为长度 3:

    • 第0项:

    • 第1项:

    • 第2项:

    所以:

    你可以看到,中间项是多种组合累加出来的,这正是卷积的特点。

    为什么卷积能和外积联系起来

    外积本质上保留了所有成对乘积: 而卷积则会把某些成对乘积,按照某种规则“折叠汇总”到一起。

    MCB 利用了 Count Sketch 的随机哈希机制,把原本的二维外积项随机地聚合到一维压缩表示中。 这个“聚合结果”可以用两个 sketch 向量的卷积来表示。

    也就是说:

    外积的压缩 sketch,大致等于两个输入 sketch 的卷积。

    这就是 MCB 的关键数学桥梁。

    更形式化一点地说,Tensor Sketch 有一个重要性质: 这里右边的卷积,就是 MCB 真正计算的东西。

    1. MCB 里为什么不是直接算卷积

    因为直接算长度 的卷积,复杂度通常是:,还是不够快。

    于是就引出第三个核心工具:快速傅里叶变换 FFT

    快速傅里叶变换(FFT)

    1. 傅里叶变换是什么

    傅里叶变换的核心思想是:

    任何复杂信号,都可以表示成很多不同频率的正弦波、余弦波的叠加。所以它是一种“换坐标系”的方法。

    原来的表示,我们通常在“时域”或“原始坐标”里看一个向量: 变换后的表示,傅里叶变换把它改写成“频域表示”: 这里每个 表示原信号在某个频率上的强度和相位。

    1. 离散傅里叶变换(DFT)

    对于长度为 的离散向量 ,DFT 定义为: 其中:

    • 是虚数单位
    • 表示复指数基函数
    • 表示不同频率分量
    1. 直觉理解 FFT/DFT

    可以把它理解成:

    用一组不同频率的“标准波形”去投影原向量,看原向量里包含多少这些频率成分。

    所以傅里叶变换本质上是:

    • 一种基底变换
    • 一种频率分解
    • 一种更适合做卷积的表示方式
    1. 为什么需要“快速”傅里叶变换

    直接按 DFT 定义计算,每个 都要累加 项,总共 ,复杂度是:

    FFT(Fast Fourier Transform)是一类高效算法,可以把这个复杂度降到:。这就是它“快”的地方。

    1. FFT 做了什么优化

    FFT 利用了复指数的对称性、周期性,把一个大规模 DFT 递归拆成若干个小规模 DFT 来算。

    最经典的是 Cooley-Tukey 算法,它把长度 的变换拆成:

    • 偶数位置部分
    • 奇数位置部分

    递归计算,从而显著减少重复运算。

    你可以先把它理解为:

    FFT 不是改变傅里叶变换本身,而是更聪明地计算它。

    四、为什么 FFT 能用来算卷积

    这是 MCB 里最关键的一步。

    1. 卷积定理

    傅里叶分析里有一个非常重要的结论: 也就是:

    时域里的卷积,等于频域里的逐元素乘法。

    反过来: 这就是MCB的公式来源。

    1. 为什么这很重要

    因为:

    • 直接算卷积:复杂度高
    • 先做 FFT,再逐元素相乘,再做逆 FFT:复杂度低

    即:

    1. a 做 FFT
    2. b 做 FFT
    3. 对应位置相乘
    4. 做逆 FFT 得到卷积结果

    复杂度大致变成:,比直接卷积快得多。

MCB paper

MLB(Multimodal low-rank Bilinear)

保留双线性融合“乘性交互”的优势,但不用完整的大矩阵去建模所有维度对之间的关系,而是先把两个模态映射到一个低维共享空间,再做逐元素乘法。

  1. 先从“完整双线性”说起

假设两个模态特征分别是:

  • 视觉特征:
  • 文本特征:

标准双线性形式

如果输出一个标量: 其中:

展开来看 这表示:

  • 视觉第
  • 文本第

会通过参数 发生交互。

如果输出是向量

若输出维度为 ,则通常写成: 或者等价写成三阶张量: 参数量就是: 这就是 full bilinear 最大的问题:太大。

  1. MLB 的基本思想:对双线性做低秩分解

核心想法是把原来的大矩阵/大张量,用低秩结构近似。先看最简单的标量输出情形。

若:

我们希望把 写成低秩形式:

其中:

这里的 就是低秩维度。

代入原式

那么: 利用结合律: 如果定义: 那么: 也就是: 这说明原来巨大的双线性交互,被变成了:两边先分别投影到低维空间,然后在低维空间里做“对应维度相乘并求和”,这就是 MLB 的最基本来源。

  1. MLB 的常见向量输出形式

在实际多模态模型里,我们通常不是只输出一个标量,而是输出一个融合向量。

于是 MLB 常写成: 其中:

  • 表示逐元素乘法

然后再接一个线性层: 或者更常见地写成: 其中:

MFB(Multi-modal Factorized Bilinear Pooling)

它仍然属于低秩双线性融合,但不像 MLB 那样每个输出维度只对应一组交互因子,而是为每个输出维度分配多个因子,再通过池化把这些因子聚合起来。

MLB 是“一个输出维度对应一个乘性因子”,MFB 是“一个输出维度对应 k 个乘性因子,然后再把这 k 个因子汇总”。

  1. 先说 MFB 想解决什么问题

MFB 是在 MLB 的基础上发展出来的,所以先要明白:MLB 虽然好,但仍然有一个表达瓶颈。

MLB 的核心公式通常写成: 如果把输出维度记成 ,也可以把它理解成:

  • 两个模态都被映射到一个 维共享空间
  • 然后逐元素乘法
  • 得到一个 维输出

也就是: MLB 的隐含限制

这样做的含义是:

  • 第 1 个输出维度,只由第 1 个潜在因子决定
  • 第 2 个输出维度,只由第 2 个潜在因子决定
  • ……

换句话说,每个输出维度只有“一次乘性交互机会”

这会带来一个问题:

如果某个输出语义本身很复杂,只靠一个乘性因子可能不够表达。

例如,一个输出维度如果对应的是某种复杂语义,它可能需要同时整合:属性因子、对象因子、位置因子、语境因子。

而 MLB 给它的只是“一对相乘”的通道,表达能力就偏弱。

  1. MFB 的基本思想:每个输出维度不只用 1 个因子,而是用 k 个因子

所以 MFB 的想法非常自然:

不要让每个输出维度只绑定一组交互,而是给它分配多个低秩因子,再把这些因子汇聚起来。

  1. MFB 的标准计算过程

设:

  • 模态 1 特征:
  • 模态 2 特征:

目标输出维度是 ,每个输出维度分配 个因子。

第一步:映射到 维空间

不是像 MLB 那样映射到 维,而是映射到 维: 这里:

第二步:逐元素乘法 这一步和 MLB 一样,仍然保留“乘性交互”的本质。

第三步:reshape 成矩阵

把长度为 的向量重排成矩阵: 也就是说:

  • 每一行对应一个最终输出维度
  • 每一行里有 个因子

第四步:sum pooling

对每一行做求和池化: 最后得到: 这就是 MFB 的核心公式链条。

把 MFB 写成更直观的形式

如果我们把第 个输出维度对应的那一组 个因子单独拿出来看,可以写成: 这里:

  • 是模态 在第 个输出维度、第 个因子上的投影向量
  • 是模态 在对应位置上的投影向量

机制解释

可以把 MFB 理解成:

对每个输出维度,使用 k 个双线性基来逼近原始双线性交互。

而那个 sum pooling,并不是随便设计的池化,而是在实现:

把同一输出维度下的多个低秩交互基进行聚合。

MFH(High-order)

MFB 只做一层 factorized bilinear 交互,本质仍偏二阶;MFH 通过级联多个 MFB 模块,让融合表示包含更高阶的跨模态组合关系。

MFB = 多因子双线性;MFH = 堆叠多个 MFB,形成高阶因子化池化。

  1. MFH 想解决什么问题

先从 MFB 的局限说起。MFB 已经比 MLB 更强

MFB 的形式是: reshape 后: 再做 sum pooling: 所以每个输出维度已经不是单一交互,而是 k 个低秩双线性交互的和。

但 MFB 仍然主要是“二阶”

虽然 MFB 比 MLB 更丰富,但它本质上仍然围绕:一个模态特征,另一个模态特征,二者之间的一次乘性交互。

也就是说,核心仍是:

即便做了多因子求和,本质还是“若干二阶项的组合”。

为什么还要更高阶

现实中的跨模态关系,往往不是简单的二阶配对就够了,而是更复杂的组合:

  • 文本里的属性词 × 图像里的对象 × 图像里的上下文
  • 问题语义 × 区域语义 × 全局场景
  • 多个属性和多个局部证据共同决定答案

所以研究者会进一步问:

能不能在保留 MFB 低秩高效的前提下,让融合表示拥有更高阶交互能力?

这就是 MFH 的出发点。

  1. MFH 的基本思想

MFH 的思想非常直观:

不要只做一个 MFB,而是做多个 MFB block,并让后面的 block 继续乘上前面的交互结果。

这样一来,交互不再只是:

  • 模态 A × 模态 B

而是会逐步变成:

  • (模态 A × 模态 B) × (模态 A × 模态 B) × …

于是得到更高阶的组合表达。

  1. 先回顾 MFB 的一个 block 形式

为了方便理解 MFH,先把 MFB 写成 block 形式。

设第一个 block 的投影结果为: MFB 的交互是: 然后 reshape + sum pooling 得到: 这里我把 叫做“展开表示”,因为它还没池化。

  1. MFH 的核心结构:级联多个 block

MFH 的关键不在于单个 block,而在于:

后一个 block 不再独立地产生交互,而是和前一个 block 的展开交互结果继续逐元素相乘。

两层 MFH 的典型形式

第一层: 第二层不是简单重新做一个 MFB,而是: 然后对每一层分别做 sum pooling: 最后把各层结果拼接: 更一般的 p 阶形式

如果有 个 block,则递推写成: 然后: 最终输出: 这就是 MFH 的标准骨架。

  1. 为什么这叫 High-order

这个名字不是随便起的,它对应的是交互项阶数的提升。

一层时:二阶交互

第一层: 本质上每一维都类似: 这是典型的二阶项。

两层时:更高阶交互

第二层: 展开一维来看,大致像: 这已经不是单纯二阶,而是多个投影项的乘积组合。

更高层时

如果堆更多层,就会形成更复杂的乘积链条。 因此 MFH 建模的不是简单“一个视觉因子 × 一个文本因子”,而是:多个视觉-文本子因子的联合乘积结构所以叫 High-order。

  1. MFH 的详细计算流程

下面按一步一步的网络实现来写。

假设输入为:

设:

  • 输出维度:
  • 每层 factor 数:
  • block 数:

第一步:第 1 层投影 逐元素乘: reshape 后 sum pooling: 第二步:第 2 层投影并级联 和前一层展开结果级联相乘: 再池化: 第 i 层 最终输出

把所有层拼接: 这就是 MFH 输出的融合表示。

无参数合集(待完善)

在多模态场景下,源对目标的信息可以被分解为 unique、redundant 和 synergistic 三类互斥成分。然而,这些成分在结构和统计性质上具有显著差异:unique information 是模态特有且分散的,redundant information 是跨模态共享的,而 synergistic information 则依赖于多模态联合才能显现。因此,如何在不引入额外可学习参数的前提下,对这三类结构异质的信息进行有效融合,是一个关键问题。

  1. 拼接

优点:三类信息结构保留完整

缺点:维度会变大

  1. 求和

  1. Mean或者Max

取平均数值更平滑(求和前也可以归一化)。

取max能保留最强响应的信息来源。

  1. 范数加权

利用向量本身进行范数加权

模态数为二时

权重由样本自身动态决定,不过范数大的不一定代表信息有用,只是表征响应更强。

  1. 基于差异性的softmax融合公式

首先利用余弦相似度度量不同信息成分之间的表征接近程度,并将每个成分相对于其他成分的总差异性定义为 其中 。随后,通过 softmax 对差异性分数进行归一化,得到各信息分量的融合权重: 最终融合表示写作: 该方法利用表征之间的相对差异自动分配权重,无需额外参数学习,从而在保持模型简洁性的同时增强对独特信息和互补信息的利用。