论文浅尝 | 基于生成模型的多模态实体链接

77fccaedbcb6dabe336ff552a51b2c77.png

笔记整理:郭凌冰,浙江大学博士,研究方向为知识图谱

链接:https://arxiv.org/abs/2306.12725

1. 动机

多模态实体链接(Multimodal Entity Linking,MEL)旨在将带有多模态上下文的提及映射到知识库(如维基百科)中的参考实体。现有的MEL方法主要侧重于设计复杂的多模态交互机制,并需要对所有模型参数进行微调,这在大型语言模型(LLM)时代可能成本过高且难以扩展。在本文中,作者提出了一种简单而有效的基于LLM的生成式多模态实体链接框架(Generative Multimodal

Entity Linking framework based on LLMs),称为GEMEL,该框架直接生成目标实体名称。GEMEL将视觉和语言模型固定,仅训练一个特征映射器以实现跨模态交互。该方法与任何现成的语言模型兼容,为在MEL任务中利用LLM的高效和通用解决方案铺平了道路。

2. 贡献

本文的主要贡献有:

(1)作者提出了GEMEL,一个简单而有效的多模态实体链接框架,其利用生成式LLM来解决MEL任务。这是首个在MEL任务中引入基于LLM的生成方法的工作。

(2)大量实验证明,仅微调约0.3%的模型参数,GEMEL在两个成熟的MEL数据集上取得了最先进的结果(在WikiDiverse上提高了7.7%的准确率,在WikiMEL上提高了8.8%的准确率),展现了高参数效率和强大的可扩展性。

(3)论文进一步的研究揭示了LLM预测中的流行度偏差,而GEMEL框架可以有效缓解这种偏差,从而提高MEL任务的整体性能。

3. 方法

总体框架如图1所示,给定多模态提及上下文,GEMEL可以利用LLM的能力直接生成目标实体名称(例如,“轮椅击剑”),并使用n个检索到的多模态实例作为上下文示例。图中的<image>表示视觉前缀,文本中的提及被下划线标记。GEMEL将LLM和视觉编码器的参数固定,只训练一个特征映射器将图像特征映射到文本空间中。

802760c23150cdd07aa2ef62e288eeab.png

图1 总体框架图

GEMEL由两个模块组成:即特征对齐和语言模型生成:

对于特征对齐,作者首先从冻结的视觉编码器中提取图像特征。然后,通过特征映射器将这些图像特征投影到文本嵌入空间中,并将其作为视觉前缀输入到LLM中。

其中视觉编码器是为了从与提及(Mention)对应的输入图像中提取视觉特征,GEMEL利用一个预训练的视觉骨干模型,该模型生成维度为  ,其权重被保持冻结状态。

特征映射器:为了促进跨模态对齐和融合,作者使用一个特征映射器将视觉特征投影到一个软提示中,即LLM的视觉前缀输入。具体来讲,通过训练一个特征映射器W对视觉嵌入投影,然后将结果重塑为一个视觉前缀,即一个包含k个嵌入向量  的序列,其中每个嵌入向量与LLM输入标记生成的文本嵌入具有相同的隐藏维度  。

对于语言模型生成,为了让LLM更好地理解MEL任务,作者利用其上下文学习(in-context learning,ICL)能力,并从训练集中构建一个提示模板,其中包含n个示例演示。以图1中的蓝色框为例,其包括提及m的图像、文本上下文、一个人工写的问题(如,“m指的是什么?”)、以及实体名称作为答案。对于演示示例的选择,作者考虑了多种稀疏和密集检索方法:

随机选择:在训练集中,对于每个提及,随机选择将从训练集中随机选择一个上下文示例。

BM25:BM25是最先进的稀疏检索方法之一。作者将训练集中的所有提及作为语料库,并基于提及来检索示例。

SimCSE3:SimCSE3是一种用于语义匹配的密集检索方法。对于一对提及,作者将提及嵌入的余弦相似度作为相关性分数。

对于n个示例和查询q,作者按顺序连接视觉前缀v和文本嵌入t,以获得LLM的输入x:

18281c0c6b2da75bfc9cf20a97ef9869.png

接着,作者使用自回归的 LLM,该语言模型最初是在仅使用文本数据的情况下通过最大似然目标进行训练,并且保持其参数 θ 不变。利用输入嵌入 x 和表示实体名称的 N 个标记作为目标输出  ,可以将教师强制训练目标(teacher forcing training objective)表示如下:

91d5003a96aa71247c0b26ec985abbef.png

在推理阶段,遵循 GENRE方法,作者采用约束束搜索(constrained beam search)来确保生成的实体名称在知识库中始终保持一致且有效。

4. 实验

作者首先说明了实验设置:在数据集的选择上,为了评估GEMEL在MEL任务上的能力,作者在两个标准MEL数据集上进行实验,分别是WikiDiverse和WikiMEL。WikiDiverse是一个人工标注的MEL数据集,包含来自Wikinews的多样化上下文主题和实体类型。WikiMEL是一个大型的经过人工验证的MEL数据集,从Wikidata和Wikipedia中提取而来。Wikidiverse和WikiMEL数据集都已经划分为训练集、验证集和测试集,比例分别为8:1:1和7:1:2,并且作者的实验设置遵循这个划分,其统计信息如表1所示:

e9f2aa17ae8f3e08e3c1efbfb34fc659.png

表1 数据集统计

在基线模型的选择上,作者将GEMEL与最近的最先进方法进行比较。这些方法可以分为以下两类:(1)仅使用文本特征的纯文本方法,和(2)利用文本和视觉特征的文本+视觉方法。其中包括:BERT、BLINK、GENRE、GPT-3.5-Turbo-0613等。

在评估指标上,作者遵循先前的研究采用Top-1准确率作为评估指标。

主实验结果如表2所示:

5293a61874b75243c74c750ef6bd4cb0.png

表2 主实验结果

从实验结果中可以看出:首先,GEMEL在两个MEL数据集上超过了所有其他方法,并取得了最先进的性能,WikiDiverse的改进为7.7%(从78.6%提高到86.3%),WikiMEL的改进为8.8%(从73.8%提高到82.6%),显示了其框架的有效性。这表明通过微调特征映射器(约占模型参数的0.3%),GEMEL能够使冻结的LLM有效而高效地理解视觉信息,并利用它来增强MEL性能。其次,基于LLM的方法(即GPT-3.5和GEMEL)在文本模态和多模态下表现出强大的性能。在文本模态中,GPT-3.5可以达到甚至超过先前多模态方法的性能。这主要有两个原因:1)文本模态在MEL任务中仍然起着主导作用,而视觉模态主要作为补充信息;2)在大规模预训练数据集上预训练的LLM可以捕捉广泛的语言模式、上下文和知识,从而在常见实体预测中表现出色。

fe34d0d6820963a362e422f6b84b06b9.png

表3 消融实验结果

表3展示了消融研究的结果。首先,移除视觉信息显著损害了GEMEL的性能,这表明当文本信息较短且不足时,视觉信息的重要性(详见第5.4节中的案例)。其次,消除提示中的示例导致WikiDiverse和WikiMEL的性能分别下降了6.1%和7.4%。这表明在上下文中提供一些示例有助于LLM识别和理解MEL任务。

5. 总结

作者提出了GEMEL,一种基于LLMs的简单而有效的生成式多模态实体链接框架,利用LLMs的能力直接生成目标实体名称。实验结果表明,GEMEL在两个MEL数据集上优于最先进的方法,并具有高参数效率和强大的可扩展性。进一步的研究揭示了LLMs对尾部实体预测存在偏见,而GEMEL能够有效地缓解这种偏见,从而提高MEL任务的整体性能。此外,GEMEL是模型无关的,可以将其应用于将来更大或更强大的LLMs。进一步的研究可以探索如何缓解LLMs对尾部实体预测的偏见,并将GEMEL扩展到更多的模态(如视频、语音等)。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

708e5c3782c72a4b938a9323667d97e4.png

点击阅读原文,进入 OpenKG 网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/32486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[SAP ABAP] 运算符

1.算数运算符 算术运算符描述加法-减法*乘法/除法MOD取余 示例1 输出结果: 输出结果: 2.比较运算符 比较运算符描述示例 等于 A B A EQ B <> 不等于 A <> B A NE B >大于 A > B A GT B <小于 A < B A LT B >大于或等于 A > B A GE B <小…

keep-alive实现页面缓存

<!--router-view 实现页面缓存--> <router-view v-slot"{Component}"><keep-alive :max"8"><component :is"Component"></component></keep-alive> </router-view>

Ansible调优之 Pipelining(任务流水线)详解

目录 Ansible 中的 Pipelining&#xff08;任务流水线&#xff09;详解Pipelining 的工作原理如何启用 PipeliningPipelining 的影响使用场景 什么是 requiretty&#xff1f;启用 requiretty 的影响禁用 requiretty 的方法 Ansible 中的 Pipelining&#xff08;任务流水线&…

2024年6月23日 十二生肖 今日运势

小运播报&#xff1a;2024年6月23日&#xff0c;星期日&#xff0c;农历五月十八 &#xff08;甲辰年庚午月戊午日&#xff09;&#xff0c;法定节假日。今天国际奥林匹克日&#xff0c;坚不可摧的意志&#xff0c;披荆斩棘的豪情&#xff0c;永远值得拥有&#xff01; 红榜生…

算法金 | 统计学的回归和机器学习中的回归有什么差别?

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 统计学中的回归 目标&#xff1a; 主要用于解释和推断自变量&#xff08;independent variables&#xff09;和因变量&#xff08;de…

array_key_exists() expects parameter 2 to be array, null given

公众号获取微信服务器IP地址 错误代码如下 public function getwxIP(){//获取微信服务器IP地址$accessToken $this->getwxoaiAccessToken();$userToken new UserToken();$result $userToken->curl_get("https: //api.weixin.qq.com/cgi-bin/get_api_domain_ip…

Chromium 调试指南2024 - 远程开发(上)

1. 引言 在现代软件开发过程中&#xff0c;远程开发已成为一种流行的工作方式。随着云计算和网络技术的迅猛发展&#xff0c;开发者不再局限于本地环境进行编码、测试和调试&#xff0c;而是可以借助远程服务器强大的计算资源和灵活的配置进行开发工作。远程开发不仅提升了开发…

PyTorch nn.CrossEntropyLoss() 交叉熵损失函数详解和要点提醒

文章目录 前置知识nn.CrossEntropyLoss() 交叉熵损失参数数学公式带权重的公式&#xff08;weight&#xff09;标签平滑&#xff08;label_smoothing&#xff09; 要点 附录参考链接 前置知识 深度学习&#xff1a;关于损失函数的一些前置知识&#xff08;PyTorch Loss&#x…

如何在Java中实现高效的文件读写

如何在Java中实现高效的文件读写 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java开发中&#xff0c;文件读写是一项常见且必不可少的操作。然而&#x…

vue判断是不是最新的请求接口返回的数据

有时候一个页面&#xff0c;我们可能会重复请求同一个接口&#xff0c;但是请求参数不同&#xff0c;如果第一个参数请求接口了&#xff0c;我们又使用第二个参数请求同一个接口了&#xff0c;但是第二个参数请求先返回数据&#xff0c;然后第一个参数才返回数据&#xff0c;这…

Day58 代码随想录打卡|二叉树篇---将有序数组转换为二叉搜索树

题目&#xff08;leecode T108&#xff09;&#xff1a; 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 方法&#xff1a;用有序数组构造平衡二叉搜索树&#xff0c;和我们之前有一题的思路差不多&#xff0c…

win11中截屏的快捷方式

在 Windows 11 中&#xff0c;有多种方式可以进行截屏&#xff08;屏幕截图&#xff09;&#xff0c;这里是一些常用的快捷方式&#xff1a; 全屏截图保存至剪贴板&#xff1a; 按 PrtScn &#xff08;打印屏幕键&#xff09;。这会把整个屏幕的截图保存到剪贴板&#xff0c;你…

遗传算法求解时间窗车辆路径规划问题(附python代码)

摘要 本研究提出了一种基于遗传算法的车辆路径规划&#xff08;VRP&#xff09;问题求解框架&#xff0c;它能够有效地处理一系列复杂约束&#xff0c;包括软时间窗、硬时间窗、行驶距离限制、车辆最大载重量、多个配送中心的协调、特定的配送顺序&#xff0c;以及多种车型的选…

【总结】攻击 AI 模型的方法

数据投毒 污染训练数据 后门攻击 通过设计隐蔽的触发器&#xff0c;使得模型在正常测试时无异常&#xff0c;而面对触发器样本时被操纵输出。后门攻击可以看作是特殊的数据投毒&#xff0c;但是也可以通过修改模型参数来实现 对抗样本 只对输入做微小的改动&#xff0c;使模型…

Python学习打卡:day13

day13 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day1397、初识对象98、类的成员方法类的定义和使用成员变量和成员方法成员方法的定义语法 99、类和对象在程序中通过类来描述基于类创建对象 100、…

Javaweb登录校验

登录校验 JWT令牌的相关操作需要添加相关依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency>一、摘要 场景&#xff1a;当我们想要访问一个网站时&am…

cherry 笔记三(启动)

cherry启动很简单 app创建完 直接startup()就好了 func main() {app : cherry.Configure("./examples/config/profile-chat.json","chat-master",false,cherry.Cluster,)app.SetSerializer(cserializer.NewJSON())app.Startup() } Configure()--->N…

c++使用std::function/std::bind

1&#xff09;C入门级小知识&#xff0c;分享给将要学习或者正在学习C开发的同学。 2&#xff09;内容属于原创&#xff0c;若转载&#xff0c;请说明出处。 3&#xff09;提供相关问题有偿答疑和支持。 std::function对象是对C中现有的可调用实体的一种类型安全的包裹&…

什么是Azure OpenAI?

Azure OpenAI 是微软与 OpenAI 合作推出的人工智能服务&#xff0c;旨在通过 Azure 云平台提供 OpenAI 的先进模型和技术。这个服务允许开发者和企业使用 OpenAI 的强大语言模型&#xff08;如 GPT-3、Codex 和 DALL-E 等&#xff09;来创建智能应用和解决方案。以下是一些主要…

多路h265监控录放开发-(9)通过拖拽到窗口完成渲染

xcamera_widget.h class XCameraWidget :public QWidget {Q_OBJECTpublic:XCameraWidget(QWidget* p nullptr);//渲染视频void Draw();//123//清理资源,再一个窗口被覆盖后 清理之前窗口生成的资源1~XCameraWidget();//123 private:XDecodeTask* decode_ nullptr;//123XDemu…