IMF: Interactive Multimodal Fusion Model for Link Prediction

交互式多模态融合模型用于知识图链接预测
为解决现有多模态连接预测方法的不足,作者提出交互式多模式融合模型(IMF)用于知识图上的多模式链接预测。该模型能单独学习各模态知识,通过两阶段融合对不同模态复杂交互联合建模,在四个数据集上实验证明了其有效性和通用性。

[2303.10816] IMF: Interactive Multimodal Fusion Model for Link Prediction (arxiv.org)

目录

1 背景

2 贡献

3 模型

3.1 Overall Architecture

3.2 Modality-Specific Encoders

3.3 Multimodal Fusion

3.4 Contextual Relational Model

3.5 Decision Fusion

3.6 Inference


1 背景

为了获得更好的结果,一些研究方法将多模态信息引入到连接预测。但是这些研究将所有模态投影到一个统一空间中,具有相同的关系来捕捉共性,可能无法保证每个模态中的特定信息;这些方法分别利用多模态信息,忽略不同模态之间的复杂交互,无法捕捉互补性。

2 贡献

作者提出了一种新的交互式多模式融合模型(IMF),用于知识图上的多模式链接预测。

IMF可以在每个模态中单独学习知识,并通过两阶段融合对不同模态之间的复杂交互进行联合建模,类似于人类自然识别过程。

在多模态融合阶段,采用双线性融合机制,通过对比学习充分捕捉多模态特征之间的复杂交互。

对于基本链路预测模型,作者利用关系信息作为上下文来对三元组进行排序,作为每个模态中的预测。

在最终决策融合阶段,作者整合来自不同模态的预测,并利用互补信息进行最终预测。

文章的贡献如下:

(1)提出了一种新的两阶段融合模型IMF,该模型能够有效地整合不同模式的互补信息,用于链路预测。

(2)设计了一个有效的多模态融合模块,通过对比学习来捕捉双线性交互,从而对共性和互补性进行联合建模。

(3)在四个广泛使用的多模态链路预测数据集上进行了大量实验,证明了IMF的有效性和通用性

3 模型

一个知识图谱被定义为\mathcal G = <\mathcal E,\mathcal R,\mathcal T>,每个实体由来自不同模态的多个特征表示

从给定引用中未直接获取到用于癌症生存预测的多模态专家混合模型(MoME)的相关信息。不过已知提出的Mixture-of-Modality-Experts(MoME)的Transformer,能依据输入数据的模态选择不同“expert”,采用“vision - text - multimodal”分阶段预训练方式,后一阶段预训练冻结前一部分编码器参数,最终在VQA等多模态任务微调后达SOTA [^1]。 推测在癌症生存预测中,MoME模型可整合多种模态数据,如基因组学数据、组织学图像数据等。不同模态数据对应不同“expert”,模型根据输入的具体数据类型选择合适“expert”处理。在预训练时,也可采用分阶段方式,先针对单一模态数据预训练,再进行多模态联合预训练,同时冻结部分编码器参数以稳定训练过程。最后在癌症生存预测任务上进行微调。 以下是一个简单示意代码,模拟MoME在处理多模态数据的流程: ```python import torch import torch.nn as nn # 假设的不同模态的专家网络 class Expert(nn.Module): def __init__(self, input_dim, output_dim): super(Expert, self).__init__() self.fc = nn.Linear(input_dim, output_dim) def forward(self, x): return self.fc(x) # MoME模型 class MoME(nn.Module): def __init__(self, num_experts, input_dim, output_dim): super(MoME, self).__init__() self.experts = nn.ModuleList([Expert(input_dim, output_dim) for _ in range(num_experts)]) self.gating_network = nn.Linear(input_dim, num_experts) def forward(self, x): # 计算门控权重 gating_weights = torch.softmax(self.gating_network(x), dim=1) expert_outputs = [expert(x) for expert in self.experts] expert_outputs = torch.stack(expert_outputs, dim=1) # 根据门控权重组合专家输出 output = torch.sum(gating_weights.unsqueeze(-1) * expert_outputs, dim=1) return output # 示例使用 input_dim = 10 output_dim = 1 num_experts = 3 model = MoME(num_experts, input_dim, output_dim) input_data = torch.randn(5, input_dim) output = model(input_data) print(output) ```
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值