当前位置: 首页 > news >正文

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

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) 的技术来进一步优化模型的性能。这种归一化方法可以根据输入样本的特征动态地调整参数,从而更好地适应不同样本之间的差异。

相关文章:

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

Integrating Knowledge in Language Models P.s.这篇文章大部分内容来自Stanford CS224N这门课Integrating Knowledge in Language Models这一节😁 为什么需要给语言模型添加额外的知识 1.语言模型会输出看似make sense但实际上不符合事实的内容 语言模型在生成…...

C语言assert断言

断言是对某种假设条件进行检查。 C语言中&#xff0c;断言被定义成宏的形式&#xff0c;原型在<assert.h>中。 #include <assert.h> void assert( int expression );assert将通过检查表达式expression的值来决定是否需要终止执行程序。 如果expression的值为假&am…...

开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对这篇博客也感兴趣o (ˉ▽ˉ&#xff1b;) 震惊&#xff01;测试人员对BUG的全方位解析&#xff0c;测试的执行和BUG管理&#xff01; 原来测试人员遇到BUG是这样返回给开发的&#xff01;什么是BUG&am…...

[蓝桥杯复盘] 第 3 场双周赛20231111

[蓝桥杯复盘] 第 3 场双周赛20231111 总结深秋的苹果1. 题目描述2. 思路分析3. 代码实现 鲜花之海1. 题目描述2. 思路分析3. 代码实现 斐波拉契跳跃2. 思路分析3. 代码实现 星石传送阵2. 思路分析3. 代码实现 六、参考链接 总结 做了后4题。https://www.lanqiao.cn/oj-contes…...

浅析移动端车牌识别技术的工作原理及其过程

随着社会经济的发展与汽车的日益普及带来巨大的城市交通压力,在此背景下,智能交通系统成为解决这一问题的关键。而在提出发展无线智能交通系统后,作为智能交通的核心,车牌识别系统需要开始面对车牌识别移动化的现实需求。基于实现车牌识别移动化这一目标,一种基于Android移动终…...

计算机网络期末复习-Part4

1、UDP和TCP的比较 TCP提供可靠传输&#xff1b;UDP提供不可靠传输。TCP有连接&#xff1b;UDP无连接&#xff08;减小时延&#xff09;。TCP提供流量控制&#xff1b;UDP不提供流量控制。TCP提供拥塞控制&#xff1b;UDP不提供拥塞控制&#xff08;传输快&#xff09;。TCP提…...

解决EnableKeyword(“_Emission“)运行状态不起作用

我使用的是Standard Shader&#xff0c;一开始“_Emission”没有开启 当我运行下面的代码&#xff0c;可以看到Inspector窗口已经生效&#xff0c;然而物体本身并没有重新开始渲染&#xff0c;反射没有开启 public GameObject go; // Start is called before the first frame…...

管理能力测评,如何提升管理能力?

管理能力是综合能力的体现&#xff0c;通常也解读为组织管理能力&#xff0c;如果要再细分的话&#xff0c;可能还包括有沟通能力&#xff0c;协调能力&#xff0c;组织能力&#xff0c;执行力和专业能力等等。不过没有办法说的太细节&#xff0c;因为每个部分铺开了都是一个独…...

基于工业智能网关的汽车充电桩安全监测方案

近年来&#xff0c;我国新能源汽车产业得到快速发展&#xff0c;电动车产量和销量都在持续增长&#xff0c;不仅国内市场竞争激烈&#xff0c;而且也远销海外&#xff0c;成为新的经济增长点。但与此同时&#xff0c;充电设施的运营却面临着安全和效率的双重挑战。 当前的充电桩…...

基于JavaWeb+SpringBoot+微信小程序的酒店商品配送平台系统的设计和实现

基于JavaWebSpringBoot微信小程序的酒店商品配送平台系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 本章内容概括了基于微信小程序的酒店商品配送平台的可行性分析、系统功…...

Android修行手册-POI操作Excel实现超链接并且变为蓝色

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

Halcon WPF 开发学习笔记(2):Halcon导出c#脚本

文章目录 前言HalconC#教学简单说明如何二开机器视觉 前言 我目前搜了一下我了解的机器视觉软件&#xff0c;有如下特点 优点缺点兼容性教学视频(B站前三播放量)OpenCV开源&#xff0c;免费&#xff0c;因为有源码所以适合二次开发学习成本极高&#xff0c;卡学历。研究生博士…...

Scrum敏捷开发全流程,3款必备的项目管理工具!

​Scrum是一种敏捷方法&#xff0c;致力于帮助团队高效地协作和完成复杂的项目。它强调迭代和快速迭代、自组织、快速响应变化等原则&#xff0c;使得项目开发变得更加灵活和高效。 在Scrum敏捷开发过程中&#xff0c;项目管理工具是必不可少的。下面介绍3款常用的敏捷开发工具…...

基于Quartz实现动态定时任务

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之…...

hdlbits系列verilog解答(计算向量中1出现次数)-41

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 “频次计数”电路对输入向量中的“1”数进行计数。为 255 位输入向量构建频次计数电路。 Module Declaration module top_module( input [254:0] in, output [7:0] out ); 二、verilog源码 module top_module…...

2023年最新的前端面试收集(1)

2023年最新的前端面试收集 一、你在项目中做的性能优化的事情有哪些网络优化页面渲染优化JS优化图片优化webpack打包优化vue优化react优化 二、webworker中为什么能提升js执行的性能三、微前端 一、你在项目中做的性能优化的事情有哪些 网络优化 DNS预解析 link标签的rel属性设…...

flutter实现上拉加载下拉刷新

效果如下&#xff1a; flutter实现上拉加载下拉刷新 使用到的库是easy_refresh 安装请查看官网 接口用的是提供的接口https://reqres.in/ 请求接口用到的库是dio 下面主要是介绍如何使用easy_refresh实现上拉加载数据&#xff0c;详细学习其它例子请查看easy_refresh main…...

tomcat+idea--如何在idea上发布项目

对应于idea2022以后的版本 &#xff08;一&#xff09;如何配置idea上的tomcat&#xff1f; 1、新建一个项目&#xff0c;左上角File&#xff0c;new&#xff0c;project&#xff0c;新建后就和普通的java项目一样。 2、然后点击项目名&#xff0c;右键选择“Add framework s…...

考研数据结构单链表的增删改查看这一篇就够了

目录 一. 单链表的特点 1.1 解引用拓展 &#x1f916; 二. 单链表的操作 2.1不带头节点的操作 2.1.1 打印 2.1.1.1 创建结点 2.1.2 尾插&#xff08;需要二级指针&#xff09; 注意形参的值不改变实参&#xff1a;&#xff08;精髓部分&#xff09; 2.1.3 头插 2.1.4…...

Windows查看端口占用情况

Windows如何查看端口占用情况 方法1. cmd命令行执行netstat命令&#xff0c;查看端口占用情况 netstat -ano 以上命令输出太多信息&#xff0c;不方便查看&#xff0c;通过如下命令搜索具体端口占用情况&#xff0c;例如&#xff1a;8080端口 netstat -ano | findstr "…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...