栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

多模态特征融合机制(含代码):TFN(Tensor Fusion Network)和LMF(Low

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多模态特征融合机制(含代码):TFN(Tensor Fusion Network)和LMF(Low

[za​;1]⨂[zb​;1]⨂[zc​;1]) 即计算了两两模态间的特征、三模态间的特征 又保留了各特定模态中的特征 见上图的Tensor Fusion细节 。

n A.shape[0]
# 用 1 扩充维度
A torch.cat([A, torch.ones(n, 1)], dim 1)
B torch.cat([B, torch.ones(n, 1)], dim 1)
C torch.cat([C, torch.ones(n, 1)], dim 1)
# 计算笛卡尔积
A A.unsqueeze(2) # [n, A, 1]
B B.unsqueeze(1) # [n, 1, B]
fusion_AB torch.einsum( nxt, nty- nxy , A, B) # [n, A, B]
fusion_AB fusion_AB.flatten(start_dim 1).unsqueeze(1) # [n, AxB, 1]
C C.unsqueeze(1) # [n, 1, C]
fusion_ABC torch.einsum( ntx, nty- nxy , fusion_AB, C) # [n, AxB, C]
fusion_ABC fusion_ABC.flatten(start_dim 1) # [n, AxBxC]
# A, B, C分别代表原来的特征维度nA,nB,nC加上1

需要注意的是 实际编程实现时并未直接计算得到3-D的笛卡尔积 而是分别两两计算outer product。

LWF融合策略

上面提到的TFN对计算了两/三模态间的相关性 也保留了单模态的相关性 但同时也大大地增加了特征维度。增加特征维度从而会影响计算效率以及增加内存消耗 并且TFN所增加的时间/空间复杂度都与输入模态数呈指数增加。并且参数量一多 就容易增加过拟合的风险。

LMF是发表于ACL2017年的工作 针对TFN的上述问题 作者采用了low-rank weight进行多模态融合 降低参数量的同时还提升了计算速度。

TFN中的融合后的特征Z维度为d1xd2xd3x....dm 其中m表示模态数 i模态特征维度为di。后续要将其送入推理模块中 通常需要降到h维的特征F 此时需要一个维度为(d1xd2xd3x....dm)xh的(M 1阶)权重W进行全连接操作。

全连接操作中 W可以视为dh个M阶矩阵 每个矩阵与融合特征Z计算后的结果为F中的一维。

LMF要做的是就是将W分解成M组与各模态相关的low-rank因子。按照上述的视角 将W视为dh个矩阵 每个特征矩阵Wk如下所示 其中使得分解成立的最小R称为秩(Rank)。

在LMF中 人为设定固定的秩r 得到每个Wk矩阵了 对特征矩阵进行重新排列 使其变为与模态m相关的特征Wm。

为了更好地理解排列过程 我画了一张图 展示了3个模态时 秩为r 期望维度为h的情况

那么对特征变换(Z→d维特征)的过程可以拆分为如下过程

但Z本身也是由不同模态的外积得到的 那么组合起来可得到下式。

其中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/266752.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号