拓展认知边界:如何给大语言模型添加额外的知识

Integrating Knowledge in Language Models

P.s.这篇文章大部分内容来自Stanford CS224N这门课Integrating Knowledge in Language Models这一节😁

为什么需要给语言模型添加额外的知识

1.语言模型会输出看似make sense但实际上不符合事实的内容

语言模型在生成预测时通常会产生有意义的结果,例如正确的类型或语义,但并不都是事实上的正确答案。说明语言模型能够从其训练数据中学习到一些常见的知识和模式,但实际上并不能保证所有生成的答案都是在事实上准确的。
在这里插入图片描述

那么为什么可能出现这种情况呢,这是一些可能的原因:

  • 未见过的事实:一些事实可能根本没有出现在训练语料库中,因此语言模型无法学习到这些特定的知识。

  • 稀有事实:语言模型在训练过程中可能没有看到足够的示例来记忆这些罕见的事实。

  • 模型敏感性:语言模型可能在训练过程中看到了某个事实,但对于问题的表述方式非常敏感。这意味着在不同的提问方式下,语言模型可能会给出不同的答案,导致在某些情况下无法正确回答问题。

  • 对于“x是在y中制造的”模板问题能够正确回答,但对于“x是在y中创造的”问题则不能正确回答。

2.具备知识感知的语言模型(Knowledge-Aware Language Models)的重要性和难点

预训练语言模型的表示可以为利用知识的下游任务带来好处。比如说在提取句子中两个实体之间的关系时,如果语言模型具备对这些实体的一些知识,那么这个任务会更容易完成。

但是要训练一个这样具备知识库属性的语言模型存在这样两个难点:

  • 语言模型产生答案的原因往往难以解释。由于语言模型是通过大量无监督训练学习得到的,其内部运作方式并非直接可见。因此,当语言模型提供一个答案时,很难确定模型是如何得出这个答案的,缺乏解释性可能会限制其在一些关键领域的应用。

  • 在语言模型中删除或更新知识并不容易。传统的知识库可以通过增加、删除或更新实体和关系来进行维护。然而,对于语言模型而言,要修改其内部的知识表示是比较困难的。这意味着语言模型在知识更新方面可能难以跟上实时的知识变化。

如何为语言模型添加额外的知识

大体上可以分为三类方法:增加预训练的实体嵌入,使用外部知识存储器以及直接修改训练的数据
在这里插入图片描述
以下是每一类的解释和一些例子

1)增加预训练的实体嵌入:

方法

为了提升大型语言模型的知识表示能力,一种方法是通过添加预训练实体嵌入来处理实体相关的信息。在自然语言处理中,实体通常指代具体的人、地点、组织或物体,例如,“华盛顿是美国的第一任总统”,而这些实体之间的关系对于理解和生成自然语言文本至关重要。

传统的预训练词嵌入模型,如Word2Vec和GloVe,通常没有明确的实体概念。它们仅对单个词进行建模,而无法捕捉到实体之间的语义关联。

为了解决这个问题,一种解决方案是为每个实体分配一个独立的嵌入。通过为每个实体分配特定的嵌入向量,语言模型可以更好地表示和理解不同实体之间的关系。例如,对于指代同一个实体的词语,如“U.S.A.”、“United States of America”和“America”,可以使用相同的实体嵌入,这样可以确保一致性和准确性。
在这里插入图片描述
然而,要使实体嵌入的添加对语言模型产生积极影响,需要进行准确且可靠的实体链接。就是将文本中的实体与预定义的实体进行匹配。一旦实体链接完成,语言模型就可以利用实体嵌入来更好地理解和处理实体相关的信息。

相关工作:ERNIE和 “Jointly learn to link entities with KnowBERT”

1.ERNIE
ERNIE旨在通过引入实体知识来增强语言表示能力,并改进模型对实体相关信息的理解。它使用了两个关键技术:实体识别和实体链接。
在这里插入图片描述

  • 在实体识别阶段,ERNIE使用实体识别技术来标注文本中的实体提及。实体识别是指识别文本中表示具体人、地点、组织或物体的实体名词短语。例如,在句子"华盛顿是美国的第一任总统"中,"华盛顿"就是一个人物实体。通过实体识别,ERNIE能够确定哪些词语是实体提及,并对它们进行标注。

  • 在实体链接阶段,ERNIE使用实体链接技术将标注的实体提及链接到预定义的实体库中的相应实体。实体链接是将文本中的实体提及与实体库中的相关实体进行匹配的过程。例如,将"华盛顿"链接到"George Washington"的实体。

ERNIE模型在预训练阶段同时学习实体嵌入和上下文嵌入,以更好地捕捉实体之间的关系和语义信息。实体嵌入是指为每个实体分配的向量表示,它能够捕捉实体的语义特征。上下文嵌入是指模型从文本上下文中学习的词语表示。通过同时学习这两种嵌入,ERNIE能够将实体的语义信息与上下文信息结合起来,提高对实体相关信息的表示能力。

2. KnowBERT+实体链接
相对的,"Jointly learn to link entities with KnowBERT"提出了一种联合学习的框架,将实体链接任务与预训练模型的训练相结合。这项工作使用了一个名为KnowBERT的模型。
在这里插入图片描述
在训练过程中,KnowBERT通过联合学习实体链接任务和语言模型任务来提升实体链接的性能。具体而言,它在预训练过程中通过多任务学习将实体链接任务与语言模型任务相结合。语言模型任务是通过上下文预测缺失词语,以提高模型对上下文信息的理解能力。同时,实体链接任务要求模型预测实体提及的链接实体。通过联合训练,KnowBERT能够在预训练阶段学习到更强的实体链接能力。

2) 加上外部知识库

方法

先前的方法依赖于预训练的实体嵌入来为语言模型编码知识库中的事实知识。这些实体嵌入是通过对大规模文本语料进行训练得到的,但在某些情况下,预训练的实体嵌入可能还是无法捕捉到特定领域或特定上下文的细节。因此,我们需要更直接的方式来向模型提供事实知识。

一种解决方法是通过为模型提供对外部内存的访问,这个外部内存可以是一个键值存储系统,其中存储了知识图谱的三元组或其他上下文信息。模型可以通过查询这个外部内存来获取特定的事实知识,并将其应用于生成文本或回答问题的过程中。
在这里插入图片描述

使用外部内存具有以下这些优势:

  1. 更好地支持注入和更新事实知识:通过访问外部内存,模型可以直接获取和更新知识库中的事实信息。例如,如果有新的知识需要添加到知识库中,可以通过向外部内存添加新的键值对来实现。这种方式使得模型能够灵活地获取和更新知识,而无需重新训练整个模型。

  2. 具备更好的可解释性:通过访问外部内存,模型的知识获取和使用过程更加透明和可解释。模型可以直接查询外部内存中的键值对,从而使研究者能够更好地理解模型的推理和决策过程。

相关工作: KGLM和kNN-LM

1.KGLM
KGLM采用了一种创新性的的方法将知识图谱集成到语言模型中:

  • 知识图谱表示:KGLM使用预先存在的知识图谱,其中包含实体、关系和属性之间的关联信息。知识图谱通常以三元组的形式表示,如(subject, relation, object)。对于每个实体和关系,KGLM利用嵌入技术将其表示为高维向量。
    在这里插入图片描述

  • 输入扩展:在生成过程中,KGLM将输入序列与知识图谱进行对齐。它使用实体链接技术将输入文本中的单词或短语与知识图谱中的相应实体进行匹配。如图,如果输入文本中提到"Super Mario Land",它可以链接到知识图谱中的"Nintendo"实体。
    在这里插入图片描述

  • 知识图谱嵌入:通过将知识图谱中的实体和关系嵌入到输入序列中,KGLM扩展了输入的表示。这样,模型可以同时利用输入文本和知识图谱的信息来生成回复。嵌入的表示可以是通过简单的拼接或更复杂的方式融合到输入序列中。
    在这里插入图片描述

2.kNN-LM
kNN-LM旨在通过利用大规模文本数据集中的最近邻来改进语言模型。
在这里插入图片描述

  • 文本表示索引:kNN-LM使用大规模文本数据集构建一个索引,用于存储短语或句子的表示。

  • 最近邻检索:在生成回复时,kNN-LM从给定的上下文中检索最近邻的k个短语或句子。这些最近邻被视为候选回复。检索过程使用索引来计算输入上下文与索引中存储的短语或句子之间的相似度。

  • 回复选择和调整:从最近邻的候选回复中,kNN-LM选择最相似、句法兼容性较高且多样性较大的回复。然后模型可以根据需要对选定的回复进行调整,以更好地适应给定上下文。

3)调整训练的数据:

方法

第三种方法是通过修改训练数据来将知识融入到模型中。传统方法通常通过预训练的嵌入或外部存储器显式地引入知识。那是否可以通过非结构化文本隐式地融入知识呢?实际上,我们可以通过对数据进行掩盖或损坏的方式,引入需要事实知识的额外训练任务。

这种方法的优势:

  • 不需要额外的内存或计算资源,也不需要对模型的架构进行修改。通过简单地改变训练数据,可以引入额外的任务,要求模型具备对事实知识的理解和处理能力。例如,可以通过掩盖文本中的某些单词或短语,要求模型根据上下文填充缺失的信息。这样,模型在训练过程中会学习到识别和推理事实的能力。

  • 可以隐式地利用知识,而无需显式的知识表示或查询。在训练数据中引入需要事实知识的任务,模型会自动学习到与之相关的特征和表示。

相关工作:WKLM和ERNIE

1.WKLM:Weakly Supervised Knowledge Pretrained Language Model

这个模型的关键思想是训练模型区分真实的知识和错误的知识。为了实现这个目标,模型在文本中替换提及的实体,将其替换为同一类型的不同实体,从而创建负面的知识陈述。模型需要预测实体是否被替换了。这种替换操作是为了引入错误的知识,用于训练模型识别和区分正确和错误的知识。
在这里插入图片描述

具体来说,对于一个真实的知识陈述,比如"J.K.罗琳是《哈利·波特》的作者",将其中的实体替换为同类型的不同实体,比如"J.R.R.托尔金是《哈利·波特》的作者",就得到了一个负面的知识陈述。模型需要学会判断哪些实体是被替换了,从而区分真实和错误的知识。

2.ERNIE: Enhanced Representation through Knowledge Integration

ERNIE的核心思想是将外部知识与模型的表示空间进行融合。模型首先在大规模的文本语料上进行预训练,学习到一种通用的语言表示。然后,为了引入外部知识,模型使用了一个预训练的百科全书。这个百科全书中包含了丰富的知识,如实体关系、常识知识等。模型通过联合训练预训练语言模型和百科全书,使得模型的表示能力更好地涵盖了外部知识。
在这里插入图片描述

在训练过程中,ERNIE1采用了一种特殊的任务设计,即知识遮蔽 (Knowledge Masking)。这个任务要求模型在遮蔽了部分文本中的知识信息后,能够根据上下文来预测被遮蔽的知识。通过这个任务,模型被迫学习从文本中抽取并利用知识,从而提高了模型对知识的理解和应用能力。

此外,ERNIE1还使用了一种自适应层归一化 (Adaptive Layer Normalization) 的技术来进一步优化模型的性能。这种归一化方法可以根据输入样本的特征动态地调整参数,从而更好地适应不同样本之间的差异。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Springboot集成redis和mybatis-plus及websocket异常框架代码封装

在软件开发过程中,一款封装完善简洁大气的全家桶框架,能大大提升开发人员的工作效率,同时还能降低代码的复杂程序,也便于后期方便维护。本文所涉及源代码在文章最后,有下载链接。 本文章所涉及封装的框架,…

Android修行手册-实现利用POI将图片插入到Excel中(文末送书)

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

C# 查询腾讯云直播流是否存在的API实现

应用场景 在云考试中,为防止作弊行为的发生,会在考生端部署音视频监控系统,当然还有考官方监控墙系统。在实际应用中,考生一方至少包括两路直播流: (1)前置摄像头:答题的设备要求使…

Spring Boot + EasyUI Datebox和Datetimebox样例

使用EasyUI的Datebox和Datetimebox组件,并对其进行适当的改造,比如更改日期格式、设置默认值或者将当前时间设置为默认值。 一、运行结果 二、实现代码 1.代码框架 2.实现代码 SpringBootMainApplication.java: package com.xj.main;import org.spri…

奇安信360天擎getsimilarlist存在SQL注入漏洞

奇安信360天擎getsimilarlist存在SQL注入漏洞 一、产品描述二、漏洞描述三、漏洞复现1.手动复现2.自动化复现①nulei扫描yaml ②小龙POC检测工具下载地址 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的…

oled显示器程序(IIC)从stm32f103移植到stm32f429出现bug不显示-解决移植失败问题

出现问题处: 刚开始更换了这两行代码,然后更换位置后,oled正常显示,如下为正确顺序 I2C_Configuration();//配置CPU的硬件I2COLED_Init();//OLED初始化 在这段代码中,I2C_Configuration() 函数用于配置CPU的硬件 I2C…

什么变量能够影响苦艾酒的味道?

没有一个答案可以描述每种苦艾酒的味道,因为每个生产商生产的苦艾酒都不一样。甜苦艾酒的味道与干苦艾酒不同,即使在这些类别中,甜的和干的苦艾酒的味道也会彼此不同,这取决于制造商、他们使用的草药和植物药的类型、他们用这些植…

如何估算业务需要多少代理IP量?

在互联网相关的行业中,很多业务都需要用到代理IP工具,比如数据采集、市场调查、SEO优化、品牌保护、跨境运营等,可以说代理IP已成为许多业务中不可或缺的一部分。代理IP可以帮助用户隐蔽真实IP地址,提高网络活动的范围和安全性&am…

会打字就能编程,自动写代码的ai助手 | 通义灵码

通义灵码介绍 通义灵码是一款由阿里云出品的智能编码辅助工具。 它基于通义大模型,可以提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力。 它支持Java、Python、Go、C/C、JavaScript、Type…

机器人阻抗与导纳控制的区别

机器人自身的非线性动力学(由柔软性引起的)导致控制精度下降,因此难以描述准确的动力学。 导纳控制和阻抗控制都是基于位置与力关系的模式,被认为具有鲁棒性和安全性。然而,当机器人与刚体接触时,导纳控制常…

【Qt之QVariant】使用

介绍 QVariant类类似于最常见的Qt数据类型的联合。由于C禁止联合类型包括具有非默认构造函数或析构函数的类型,大多数有趣的Qt类不能在联合中使用。如果没有QVariant,则QObject::property()和数据库操作等将会受到影响。 QVariant对象同时持有一个单一…

基于单片机的多层电梯控制仿真系统

**单片机设计介绍, 基于单片机的多层电梯控制仿真系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的多层电梯控制仿真系统是一个复杂的系统,它需要结合单片机技术、控制理论、电子技术以及人…

使用swagger-typescript-api

引言 前后端分离大致是这样的 后端:控制层 / 业务层 / 数据操作层前端:控制层 / 视图层 前后端的控制层,实际上就是前后端接口的对接 前后端分离,实现了更好地解耦合,但也引入了接口对接的过程,这个过程…

C++ STL - map 与 multimap用法和区别

目录 一、概述 二、用法 2.1、插入 2.2、拷贝与赋值 2.3、查找 2.4、删除 2.5、完整代码 三、其他成员类型 一、概述 map 与 multimap是存储key-value(键-值 对)类型的容器。不同之处在于:map只允许key与 value一一对应;…

asp.net core mvc之路由

一、默认路由 (Startup.cs文件) routes.MapRoute(name: "default",template: "{controllerHome}/{actionIndex}/{id?}" ); 默认访问可以匹配到 https://localhost:44302/home/index/1 https://localhost:44302/home/index https:…

PTL货位指引标签为仓储管理打开新思路

PTL货位指引标签是一种新型的仓储管理技术,它通过LED灯光指引和数字显示,为仓库管理带来了全新的管理思路和效率提升,成为现代物流仓库管理中的重要工具。 首先,PTL货位指引标签为仓储管理业务带来了管理新思路。传统的仓库管理中…

OFDM深入学习及MATLAB仿真

文章目录 前言一、OFDM 基本原理及概念1、OFDM 简介2、子载波3、符号4、子载波间隔与符号长度之间的关系 二、涉及的技术1、保护间隔2、交织3、信道编码4、扩频5、导频6、RF(射频)调制7、信道估计 三、变量间的关系四、IEEE 802.11a WLAN PHY 层标准五、…

matlab中的mapminmax函数初步理解和应用

matlab中的mapminmax函数初步认识 一、mapminmax 顾名思义:映射最大最小 二、语法及举例 2.1 语法1 [Y,PS] mapminmax(X) 将矩阵X映射形成矩阵Y, Y中每行中的最小值对应-1,最大值对应1。PS是一个包含映射信息的结构体。 举例: clc cle…

Jupyter Notebook 闪退

造成这个的原因非常非常多! 比如什么环境变量没有配置,或者说jupyter和python版本不兼容,库不兼容等等。 但是我呢,以上都不是。 我是因为手残,删掉了不该删的文件: 这个操作就是打开"Anaconda Prom…

在react中组件间过渡动画如何实现?

一、是什么 在日常开发中,页面切换时的转场动画是比较基础的一个场景 当一个组件在显示与消失过程中存在过渡动画,可以很好的增加用户的体验 在react中实现过渡动画效果会有很多种选择,如react-transition-group,react-motion&…