论文解读 | NeurIPS'24 IRCAN:通过识别和重新加权上下文感知神经元来减轻大语言模型生成中的知识冲突...

点击蓝字

82401254ef12330ec2cd14d203cb3d74.jpeg

关注我们

AI TIME欢迎每一位AI爱好者的加入!

1a962832f0394ed2dc475e0ecde2616e.png

点击 阅读原文 观看作者讲解回放!

作者简介

史丹,天津大学博士生

内容简介

大语言模型(LLM)经过海量数据训练后编码了丰富的世界知识。最近的研究表明,当LLM面临其编码的参数知识和上下文中提供的知识之间存在矛盾(被称为知识冲突)时,可能会过度依赖其内在的参数知识,而不能充分重视上下文中引入的新知识。为了减轻该问题,本文提出了一个新颖的框架IRCAN,通过识别和重新加权上下文感知神经元,引导LLM根据上下文中提供的新知识生成对上下文更敏感的输出。具体而言,IRCAN首先利用基于积分梯度的上下文感知归因评分,识别出显著贡献于处理上下文的神经元。随后,通过重新加权来增强所识别的上下文感知神经元。在来自多个系列的模型和多种任务上进行的广泛实验表明,IRCAN不仅显著提升了LLM在知识冲突问题上的性能,还可以与现有方法无缝集成,取得了最先进的结果。

论文地址:https://arxiv.org/abs/2312.12853

代码链接:https://github.com/danshi777/IRCAN

Motivation

众所周知,大语言模型经过大量数据的训练,蕴含了丰富的知识。然而,由于信息/知识的快速发展以及训练数据中存在的噪音,LLM可能拥有不正确或过时的知识。在现实应用中,通常使用检索增强生成(RAG)等方法,将最新的知识或来自外部数据库的知识集成到输入的提示上下文中来缓解这个问题。这导致LLM在生成过程中依赖两种知识来源:一种是参数知识,即模型在预训练阶段获得并编码在其参数中的知识;另一种是上下文知识,即我们提供给模型的输入上下文中的信息。当这两种知识存在不一致或矛盾时,就会出现所谓的知识冲突问题。

4be5ab80654dd9a872a7a8927545b476.png

以往的研究表明,当LLM面临参数知识与上下文知识之间的冲突时,它们可能会过度坚持现有的参数知识,而不能充分关注在上下文中引入的新知识。

例如,即便将“截至2023年,印度成为世界上人口最多的国家”这一信息作为上下文输入给Llama-2-7B,当被问及“世界上人口最多的国家是哪个”时,它仍然回答为“中国”。

fe6fc3f8453bef46d6ef5b92990b8416.png

作者猜想,是否类似于之前的知识神经元,在LLM中也存在专注于处理上下文的神经元呢?基于此假设,作者提出一个识别和重新加权上下文感知神经元的框架IRCAN,首先通过计算每个神经元的归因分数来衡量来识别负责处理上下文的神经元,称之为知识感知神经元,然后通过增加这些知识感知神经元的权重,使模型在生成过程中更加关注上下文,从而生成更忠诚于上下文的响应。

8e610c4c71c72512c4904a78279391a7.png

Methodology

具体而言,本方法首先通过一种基于梯度积分的上下文感知归因方法,计算每个神经元在感知上下文以预测答案方面的贡献分数。这些分数可用于评估哪些神经元在处理上下文中发挥着关键作用。与许多先前的研究相同,本文也关注第2个FFN层中的神经元。

作者将每个神经元要计算的归因分数记作66c01490876ddd766a0d80675f5ad679.png,其中表示在模型的第层的位于第i个位置的神经元。首先,仅将问题作为输入,记录下此时模型中每个神经元的激活值,记作a83bd7a77c75bf8dd96dacd9b55e9d38.png。接着,将上下文和问题一起输入给语言模型并记录此时新的神经元激活值,记作1f53d3943d074d754cebfd0133e6b3ea.png。然后,当输入为上下文和问题时,逐渐将神经元的激活值从d57ba882107d2aa7abcebf4cc1540e68.png改变为d7510c980f210b3cc8d9f1e1c347a074.png,观察输出正确答案的概率梯度的变化,计算归因分数为式(1)。直观上,通过对 α 从 0 变化到 1 时的梯度进行积分,7d24aa5e20e55c2cf95621435197dc94.png累积了由上下文不存在到存在的激活值变化引起的输出概率变化。如果神经元对上下文有很强的感知和处理能力,那么梯度就会很大,从而产生很大的积分值。因此,归因分数可以衡量神经元在处理上下文方面的贡献程度。

在实际的实验中,作者采用黎曼逼近法来近似计算归因分数,如式(2)所示。具体做法是将ece761e192eeea568176b325f075feff.png减这个值分成m份,每次改变其中的m分之一,然后将这些变化累加起来。在实验中,m默认为20。

3009b5cbb5eab48071dbcced0586ab42.png

第二步,根据计算出的神经元归因分数,首先保留分数高于阈值t的神经元。然后,对于每个数据实例,选择具有最高归因分数的前z个神经元作为候选集。在实验中,t和z分别默认设置为 10% 和 20。最终,计算所有候选集中神经元的共现次数,并选择共现次数最多的前h个神经元作为上下文感知神经元。这些识别出的上下文感知神经元在所有数据实例之间共享。

15542722c243cf7d57dce31abb34fac5.png

最后,本文采用了一种简单而有效的办法来放大识别到的知识感知神经元的作用,即直接将这些神经元的权重扩大到原始权重的β倍。在实验中,选取的知识神经元的数量h以及增强的倍数β都是超参数。

bdcc05c7318c437512f891b6b4bebd47.png

Experiments

作者在两种不同类型的知识冲突任务上进行了实验:一是补全任务,涉及“MemoTrap”数据集,该任务要求模型在英文谚语的上下文中使用不同于其传统结尾词的其他词语来补全谚语;另一种则是多项选择任务,在 COSE_KRE 和 ECARE_KRE 数据集上进行了实验,在该任务中,预先指定一个错误答案为正确答案,然后让ChatGPT生成一个支持这个错误答案的解释,并将这个解释作为上下文,期望模型在被提问后,能根据这个解释回答指定的答案,而非它原本的答案。

作者采用accuracy作为主要指标来评估模型的性能。此外,还设计了一个作为参考的指标——称为“固执率”。该指标旨在评估模型是否倾向于固守其内在参数知识。较低的固执率意味着模型利用内部参数知识回答问题的比例越低,从而在一定程度上反映了模型对上下文知识的专注。

fc160ada17c9ae2b149d303e310e3248.png

首先,在补全任务中,对比的baselines包括不做任何操作的原始模型,基于Probe的方法,以及一个强大的baseline CAD,它直接调整了输出概率,放大了使用上下文和不使用上下文时的概率差异,以此来使模型更加关注于上下文知识。实验结果表明,本文方法的性能达到了SOTA,尤其对于LLaMa-2-7B和LLaMa-3-8B,分别实现了129%和136%的显著ACC提升,SSR指标也明显下降。这证明了通过增加上下文感知神经元的权重,模型可以从依赖预先存储的参数知识转向利用上下文知识。此外,IRCAN和CAD技术能够产生叠加效应,结合CAD后性能进一步提升。

22e483160d1863d6e091dfc35c902ead.png

在多项选择任务中,除了前面提到的baseline,实验还增加了基于Prompt Engeering的baselines,包括三种明确指示模型在回答问题时更加关注上下文的方法和一种使用基于opinion的prompt的方法。结果显示,基于Prompt Engeering的方法并未带来一致的性能提升,甚至在某些模型上还导致了性能下降,但IRCAN在所有模型上都实现了稳定的性能提升,并且在结合CAD后,性能也进一步得到提高。

43909d75195c7447e6d1a6b6b4cc963f.png

为了进一步验证IRCAN识别的神经元是否在处理上下文中发挥关键作用,作者进一步进行了消融实验,包括:擦除(将权重置为0)检测到的上下文感知神经元;随机增强或删除与 IRCAN 中实现的相同数量的神经元。结果显示,与 IRCAN 的结果相比,当上下文感知神经元被擦除时,准确率大幅下降。然而,无论是擦除还是增强随机神经元,性能都与原始模型相似。这表明本文检测到的上下文感知神经元在解决知识冲突方面发挥着关键作用,从而验证了它们在模型功能中的重要性。

7b0d63d9ad79f43468c08e0ce2d0b24f.png

本文还探究了增强倍数和增强神经元的数量这两个超参数对模型性能的影响。左图显示了在固定神经元数量的情况下,随着上下文感知神经元增强倍数的增加,模型性能在初期逐渐提升,凸显了IRCAN识别的神经元的关键作用。然后,与我们的直觉一致,超过一定的增强强度后性能开始下降。这种下降可能是由于神经元的过度增强导致模型直接崩溃,其输出完全不可用。右图也展示出了类似的结果,随着增强神经元数量的增加,模型性能也呈现出先上升后下降的趋势。

7c55f26b64d67ad5aad19f257f0b3a1c.png

本文还对计算得到的归因分数较高的神经元进行了可视化,观察它们在模型层内部的分布情况。结果显示,大部分神经元集中在高层,也有部分位于中间层。这与以往的研究发现相吻合,即语言模型主要在高层编码高级语义知识。

33ec1272922ee5c3b7ba5484cf1b4c39.png

由于IRCAN增强了某些神经元的权重,这可能会引发一个担忧,即这是否会损害模型的一般能力?为了探究这一点,作者在六个常用的基准上进行了测试,结果显示,与原始模型的性能相比,IRCAN只会导致轻微的性能振荡。这表明IRCAN 可以可靠地提高大语言模型解决知识冲突任务的能力,同时保持其出色的综合能力。

本期文章由陈研整理

往期精彩文章推荐

b0f853ce9705586a035bf086d4af5fb9.jpeg

AAAI 2025预讲会28位讲者相聚|28篇论文工作+2个团队专场,一起期待2025年的首场预讲会

 关于AI TIME 

AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索,加强思想碰撞,链接全球AI学者、行业专家和爱好者,希望以辩论的形式,探讨人工智能和人类未来之间的矛盾,探索人工智能领域的未来。

迄今为止,AI TIME已经邀请了2000多位海内外讲者,举办了逾700场活动,超800万人次观看。

 7c3b076ae54cf020c5ce153b505f6593.png

我知道你 

在看

提出观点,表达想法,欢迎 

留言

b38b467c24ce7ccbc0c62edc38d31422.gif

点击 阅读原文 观看作者讲解回放!

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

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

相关文章

在DJI无人机上运行VINS-FUISON(PSDK 转 ROS)

安装ceres出现以下报错,将2版本的ceres换成1版本的ceres CMake did not find one.Could not find a package configuration file provided by "absl" with any ofthe following names:abslConfig.cmakeabsl-config.cmakeAdd the installation prefix of …

A*算法与人工势场法结合的路径规划(附MATLAB源码)

A*算法与人工势场法(APF)结合实现路径规划 路径规划是机器人、无人机及自动驾驶等领域中的一个重要问题。本文结合了经典的 A* 算法与 人工势场法(Artificial Potential Field, APF),实现了一种改进的路径规划方法。下…

SASS 简化代码开发的基本方法

概要 本文以一个按钮开发的实例,介绍如何使用SASS来简化CSS代码开发的。 代码和实现 我们希望通过CSS开发下面的代码样式,从样式来看,每个按钮的基本样式相同,就是颜色不同。 如果按照传统的方式开发,需要开发btn &…

Spring为什么要用三级缓存解决循环依赖?

1.什么是循环依赖 本文为了方便说明,先设置两个业务层对象,命名为AService和BService。其中Spring是如何把一个Bean对象创建出来的,其生命周期如下: 构造方法–> 不同对象 --> 注入依赖 -->初始化前 --> 初始化后–&…

R shiny app | 网页应用 空格分隔的文本文件在线转csv

shiny 能快速把R程序以web app的形式提供出来,方便使用,降低技术使用门槛。 本文提供的示例:把空格分隔的txt文件转为逗号分隔的csv文件。 前置依赖:需要有R环境(v4.2.0),安装shiny包(v1.9.1)。括号内是我使用的版本…

LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 教程 (4)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144881432 大模型的 HTTP 服务,通过网络接口,提供 AI 模型功能的服务,允许通过发送 HTTP 请求,交互大模型,通常基于云计算架构,无需在本地部署复杂的模型和硬件,…

【《python爬虫入门教程11--重剑无峰168》】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 【《python爬虫入门教程11--selenium的安装与使用》】 前言selenium就是一个可以实现python自动化的模块 一、Chrome的版本查找?-- 如果用edge也是类似的1.chrome…

自定义Bitmap

使用场景 Bitmap 是一种使用 位数组(bit array) 来表示数据的结构,每一位(bit)表示一个值的状态。由于每个位只占用 1 bit,因此Bitmap 的存储效率非常高,特别适用于大数据去重、标记布尔值状态…

公司资产网站

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…

第431场周赛:最长乘积等价子数组、计算字符串的镜像分数、收集连续 K 个袋子可以获得的最多硬币数量、不重叠区间的最大得分

Q1、最长乘积等价子数组 1、题目描述 给你一个由 正整数 组成的数组 nums。 如果一个数组 arr 满足 prod(arr) lcm(arr) * gcd(arr),则称其为 乘积等价数组 ,其中: prod(arr) 表示 arr 中所有元素的乘积。gcd(arr) 表示 arr 中所有元素的…

掌握RabbitMQ:全面知识点汇总与实践指南

前言 RabbitMQ 是基于 AMQP 高级消息队列协议的消息队列技术。 特点:它通过发布/订阅模型,实现了服务间的高度解耦。因为消费者不需要确保提供者的存在。 作用:服务间异步通信;顺序消费;定时任务;请求削…

国内Ubuntu环境Docker部署Stable Diffusion入坑记录

国内Ubuntu环境Docker部署Stable Diffusion入坑记录 本文旨在记录使用dockerpython进行部署 stable-diffusion-webui 项目时遇到的一些问题,以及解决方案,原项目地址: https://github.com/AUTOMATIC1111/stable-diffusion-webui 问题一览: …

SpringBoot3-深入理解自动配置类的原理(尚硅谷SpringBoot3-雷神)

文章目录 目录了解自动配置 一、导入对应场景的Mean依赖:1、引入依赖**找到自动配置类的所有配置都存放在哪里** 二、编写主程序:SpringBootApplication观察源码时所需要知道的几个核心注解:1、观察SpringBootApplication源码都做了什么 三、…

【沉默的羔羊心理学】汉尼拔的“移情”游戏:操纵与理解的艺术,精神分析学视角下的角色互动

终极解读《沉默的羔羊》:弗洛伊德精神分析学视角下的深层剖析 关键词 沉默的羔羊弗洛伊德精神分析学角色心理意识与潜意识性别与身份 弗洛伊德精神分析学简介 弗洛伊德的精神分析学是心理学的一个重要分支,主要关注人类行为背后的无意识动机和冲突。…

字玩FontPlayer开发笔记3 性能优化 大量canvas渲染卡顿问题

字玩FontPlayer开发笔记3 性能优化 大量canvas渲染卡顿问题 字玩FontPlayer是笔者开源的一款字体设计工具,使用Vue3 ElementUI开发,源代码: github: https://github.com/HiToysMaker/fontplayer gitee: https://gitee.com/toysmaker/fontpl…

javaEE-网络编程-3 UDP

目录 Socaket套接字 UDP数据报套字节编程 1.DatagrameSocket类 DatagramSocaket构造方法: DatagramSocaket常用方法: 2.DatagramPacket类 DatagramPacket构造方法: UDP回显服务器实现 UDP服务端实现: 创建一个Socket类对象&#xf…

Linux:操作系统不朽的传说

操作系统是计算机的灵魂,它掌控着计算机的硬件和软件资源,为用户和应用程序提供了一个稳定、高效、安全的运行环境。 在众多操作系统中,Linux 的地位举足轻重。它被广泛应用于服务器、云计算、物联网、嵌入式设备等领域。Linux 的成功离不开…

模拟出一个三维表面生成表面点,计算体积,并处理边界点

python代码 生成表面点,计算体积,并处理边界点,最终模拟出一个三维表面。 步骤: 初始参数设置: initial_fixed_point:一个初始固定点的坐标。 slop_thre:坡度阈值。 v_thre:体积阈值。 slope_rad:将坡度从度转换为弧度。 step_size:步长。 lam_x, lam_y:泊松分布的…

STM32拓展 低功耗案例1:睡眠模式 (register)

需求描述 让MCU进入睡眠模式,然后通过串口发送消息来唤醒MCU退出睡眠模式。观察LED在进入休眠模式后是否仍然开启。 思考 首先睡眠模式,唤醒的条件是中断,外部内部都可以,这里的串口接收中断时内部中断。 拓展:中断…

vue 基础参数增加多语言配置

js 对数组的增删改查 字段在数据库存储为nvarchar ,varchar存储波斯语会乱码 数组格式: {"en": [{"type": "10","value": "Confirm","color": ""},{"type": "…