论文笔记:IMF: Interactive Multimodal Fusion Model for Link Prediction

论文来源:WWW 2023

论文地址:https://dl.acm.org/doi/pdf/10.1145/3543507.3583554

论文代码: GitHub - HestiaSky/IMF-Pytorch


Abstract

最近一些研究将多模态信息引入到链接预测中,但是这些方法是分别利用多模态信息的,忽略了不同模态之间的复杂交互。 为了更好地建模模态间的信息,引入一种交互式多模态融合模型,整合不同模态间的知识。通过两阶段式多模态融合框架来保存特定模态的知识,并利用不同模态之间的交互。多模态融合模块没有将不同模态投影到一个统一的向量空间,而是限制了不同模态的独立表示,同时利用双线性池化进行融合,并将对比学习作为额外的约束。此外,决策融合模块在所有模态预测的上提供学习到的加权平均,以更好地整合不同模态的互补性。

Introduction

之前的研究局限于将多模态数据投射到一个统一的向量空间中,以捕获各模态之间的共性,导致可能无法保存每个模态中的特定信息,因此不能有效地模拟模态间复杂的相互作用,以捕获共性。

为了解决上述问题,本文倾向于全面的学习知识,而非单独学习。然而,由于从不同模态学习到的知识是多样且复杂的,因此有效整合多模态信息具有很大的挑战。本文提出一种新的交互式多模态融合(IMF)模块,用于多模态知识图谱链接预测。

IMF模块可以在各模态中分别学习知识,并通过两阶段融合来联合建模不用模态之间复杂的相互作用。在多模态融合阶段,利用一个双线性融合机制,通过对比学习来捕获多模态特征之间的复杂相互作用,对于基础的链接预测模型,利用关系信息作为上下文对三元组进行排序,作为每个模态中的预测。在最终的决策融合阶段,整合来自不同模态的预测,并利用互补信息来进行最终的预测。

Methodology

如Figure 2所示,IMF包括4个关键部分:特定模态编码器、多模态融合模块、上下文关系模型、和决策融合模块。

Modality-Specific Encoders

——提取结构、视觉和文本特征,作为多模态融合阶段的输入

 用于不同模态的预训练编码器,在训练过程中没有进行微调,且IMF是一个通用框架,可以直接用其他最新的编码器替代,或添加新模态的编码器。

结构编码器使用的是具有TransE损失的图注意力网络;

视觉编码器使用的是在ImageNet上预训练的VGG16;

文本编码器为BERT。

Multimodal Fusion

 ——多模态融合阶段旨在有效获取多模态表示,以充分捕获不同模态之间的复杂相互作用。

本文采用具有强大的实现全参数交互能力的双线性模型,作为实现多模态信息融合的重要组成部分。具体来说,将张量分解扩展到4个模态因子,即张量分解为核张量通过矩阵变换得到的结果:

在这种情况下,实体嵌入首先被投影到一个低维空间,然后与核心张量\mathcal{P}_c融合。之后,将通过逐元素相乘来分解核张量\mathcal{P}_c,以将所有模态表示合并到一个统一的空间,从而进一步降低计算复杂度。

 由于多模态双线性融合没有边界限制,最终预测结果产生的梯度智能隐式指导参数学习。为了解决这一问题,本文通过增加约束条件来限制同一实体不同模态表示之间的相关性,使相关性更强。进一步利用不同实体和模态之间的对比学习作为正则化的额外学习目标。

在对比学习设置中,将同一实体的不同模态表示对作为正样本,不同实体的表示对作为负样本,如Figure 3所示,对比学习的目标是限制负样本的距离大于正样本的距离,以增强多模态融合,即:

 损失函数如下:

Contextual Relational Model 

 ——上下文关系模型将三元组中的关系作为上下文信息进行打分,该模型可以被任何打分函数替代,如TransE。

由于KG的多样性和复杂性,本文认为提高参数的相互作用程度对更好地建模关系三元组是至关重要的。参数的相互作用程度是指每个参数与其他参数的计算比率。基于此,本文提出计算实体和关系嵌入之间的双线性外积来讲上下文信息合并到实体表示中。上下文关系模型利用关系在实体嵌入的转换矩阵中提供上下文,然后利用上下文转换矩阵对实体嵌入进行投影,得到上下文嵌入,用于计算与所有候选实体之间的相似度。

Decision Fusion 

 通过联合学习和结合不同模态的预测来进一步利用互补性来缓解之前将不同模态表示映射到一个统一空间中的方法无法保留特定模态的知识的缺陷。

在多模态设置下,为每个模态分配不同的上下文关系模型,并利用他们的结果进行不同视角的训练,损失函数如下:

预测阶段,联合考虑每个模态和多模态的预测,总体预测如下:

<< 从错误信息来看,程序抛出了 `AssertionError` 异常,表明路径 `D:/PycharmProjects/multimodal_fusion/scr/song.mp3` 无效(即文件不存在)。这可能是由于以下原因之一导致的: 1. **音频文件实际不存在**:检查指定目录下是否有名为 `song.mp3` 的文件。 2. **路径拼接不正确**:可能存在路径分隔符或大小写的问题。 3. **运行环境问题**:脚本可能在不同的工作目录中执行。 ### 解决方案 我们可以逐步排查并修复此问题。首先确认文件是否存在,并确保路径使用了正确的格式和分隔符。 以下是改进后的代码片段以及详细说明: ```python import os # 定义项目根目录与相对音频路径 project_root = r"D:\PycharmProjects\multimodal_fusion" # 使用原始字符串避免转义字符问题 relative_audio_path = r"scr\song.mp3" # 拼接绝对路径 absolute_audio_path = os.path.join(project_root, relative_audio_path) # 验证路径是否有效 if not os.path.isfile(absolute_audio_path): print(f"[警告] 文件 {absolute_audio_path} 不存在!") else: print(f"[成功] 文件存在: {absolute_audio_path}") # 如果文件确实不存在,则提示用户进行下一步操作 assert os.path.isfile(absolute_audio_path), f"{absolute_audio_path} 是无效路径,请检查您的输入!" ``` --- ### 给出解释 #### 错误分析 1. **`os.path.isfile()` 函数的作用** - 此函数用于验证给定路径是否指向一个有效的普通文件。 - 在当前情况下,如果返回值为 False,则表示该路径对应的文件不存在。 2. **潜在问题点** - **路径有效性**:Windows 平台下的路径通常使用反斜杠 (`\`) 分割,但 Python 字符串中的 `\` 可能会被解析为转义字符。因此建议使用原始字符串 (prefix with `r`) 或者将反斜杠替换为正斜杠 (`/`) 来定义路径。 ```python project_root = r"D:\PycharmProjects\multimodal_fusion" # 原始字符串形式 ``` - **跨平台兼容性**:推荐使用 `os.path.join()` 方法动态生成完整路径以提高代码可移植性和健壮性。 3. **调试步骤** - 打印中间结果:例如打印变量 `absolute_audio_path` 的内容,确保其符合预期。 - 直接打开系统资源管理器查看目标路径及文件名是否一致。 --- ### 排查清单 为了进一步定位问题,请依次完成以下几个任务: 1. 核实 `D:\PycharmProjects\multimodal_fusion\scr` 是否包含 `song.mp3` 文件; 2. 尝试手动访问路径并在终端中测试命令行工具如 `dir D:\PycharmProjects\multimodal_fusion\scr`; 3. 修改代码加入更多日志输出便于诊断具体环节出现问题; 最终确保所引用多媒体素材存放位置准确无误且权限设置合理合法即可正常运作。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值