北大发现了一种特殊类型的注意力头!

检索头的发现或许将有力地帮助大模型领域在提高长上下文推理能力减少幻觉压缩KV缓存方面的研究。

从 Claude100K 到 Gemini10M,我们正处于长上下文语言模型的时代。如何在长上下文中利用任何输入位置的信息?北大联合另外四所高校发现了一种特殊类型的、负责从长上下文中进行检索的注意力头

GPT-3.5研究测试:
https://hujiaoai.cn

GPT-4研究测试:
https://higpt4.cn

Claude-3研究测试(全面吊打GPT-4):
https://hiclaude3.com

研究人员对4个模型族、6个模型尺度和3种微调类型的系统调查表明,存在一种特殊类型的注意力头(称之为检索头),它主要负责从长上下文中检索相关信息。

研究人员发现了检索头具有一些重要和有趣的性质:

  1. 通用性:所有具有长上下文能力的探索模型都有一组检索头;

  2. 稀疏性:只有一小部分(小于5%)的注意头是检索头;

  3. 内在性:检索头在短上下文预训练的模型中已经存在。当将上下文长度扩展到32-128K时,仍然是同一组注意力头执行信息检索;

  4. 动态激活:以 Llama-27B 为例,无论上下文如何变化,12个检索头始终关注所需信息。其余的检索头在不同的环境中被激活;

  5. 因果关系:完全修剪检索头导致检索相关信息失败,产生幻觉,而修剪随机的非检索头不影响模型的检索能力。

由于检索头用于从长上下文中检索信息,因此不难推测,检索头强烈影响思维链(CoT)推理,因为模型需要经常引用问题和先前生成的上下文。

相反,模型使用其固有知识直接生成答案的任务受屏蔽检索头的影响较小。这些观察结果共同解释了模型的哪个内部成分会在输入 token 中寻找信息。

通用且稀疏的检索头

研究人员表示,在研究的所有语言模型中,无论是Base还是Chat版本,上下文长度如何,小模型还是大模型,密集或是MoE——只要它们在大海捞针基准中通过,它们就有一小组检索头。

图1.检索头在模型族和尺度上是通用的和稀疏的。当需要检索时,只有不到5%的注意头在超过50%的时间内被激活(检索分数高于0.5)。

▲图1.检索头在模型族和尺度上是通用的和稀疏的。当需要检索时,只有不到5%的注意头在超过50%的时间内被激活(检索分数高于0.5)。

上下文长度的拓展不影响检索头的位置

研究人员提出,检索头是一种已经位于基础模型中的、固有的特性,是预训练的结果,并且最关键的是,如将上下文从 4K 扩展到 100K,或将其微调为聊天,或升级到 MoE 专家模型,它仍然是激活的同一组检索头。

图2.检索头是固有的并且已经在基本模型内。无论是通过继续预训练(LLaMA 2 7B 80K)或指令微调(Qwen 1.5 14B Chat)或升级稀疏模型(Mixtral 8×7B),都使用同一组检索头作为基础模型,如热图模式之间的高度相似性。

▲图2.检索头是固有的并且已经在基本模型内。无论是通过继续预训练(LLaMA 2 7B 80K)或指令微调(Qwen 1.5 14B Chat)或升级稀疏模型(Mixtral 8×7B),都使用同一组检索头作为基础模型,如热图模式之间的高度相似性。

这个性质在同一个模型家族中也能体现出来,同一族模型的检索头是强相关的,即聊天模型和基础模型通常使用同一组检索头,而不同家族模型的检索头明显不同!

图3.

▲图3.

如何用检索头来解释模型幻觉?

研究人员使用检索头的理论解释了模型产生幻觉的原因,即当模型错过了部分信息时,检索头不会被激活;当模型找不到针并完全产生幻觉时,检索头会处理虚拟的token。

通过逐渐掩盖检索/随机头的数量,可以观察模型的行为如何变化。如图 4 所示,屏蔽检索头会严重损害模型的大海捞针性能,而屏蔽随机头对性能的影响要小得多。

图4.屏蔽前 K 个检索头与 K 个随机头。对于考虑的所有模型,移除检索头明显降低了大海捞针的性能,而移除非检索头的影响则要弱得多。

▲图4.屏蔽前 K 个检索头与 K 个随机头。对于考虑的所有模型,移除检索头明显降低了大海捞针的性能,而移除非检索头的影响则要弱得多。

值得注意的是,当将屏蔽头的数量 K 增加到 50(约占全部头数的 5%)时,所有模型的针测试性能均降至 50 以下,这表明顶部检索头负责大部分针检索行为。

图5.当模型无法完整地检索到全部“针”时,通常会出现两种典型错误:(1) 不完整的检索,即检索头错过了信息的一部分“吃一个三明治”;(2) 幻觉,即检索头关注最初的标记。

▲图5.当模型无法完整地检索到全部“针”时,通常会出现两种典型错误:(1) 不完整的检索,即检索头错过了信息的一部分“吃一个三明治”;(2) 幻觉,即检索头关注最初的标记。

随着屏蔽头的数量增加,最初会屏蔽一小部分最强大的检索头,不完整检索开始出现。在没有最强检索头的情况下,余下较弱的头只能检索到目标信息的一部分。

形象地说,每个检索头持有“针”的一小部分,但这些碎片无法形成完整的“针”,导致最终输出不完整。这种现象通常在屏蔽得分大于0.4的检索头时开始出现。随着屏蔽头的数量进一步增加,幻觉变得更加普遍,标志着检索能力的完全失败。

除了大海捞针类的实验,研究人员还使用 Extract QA 作为测试方法,为了确保所询问的知识不存在于模型的内部知识中,研究人员通过选择一组最新的新闻文章、从中提取一个段落并要求 GPT-4 产生答案对,类似于 Anthropic 中进行的评估。

如图 6 所示,随机屏蔽非检索头对性能没有显着影响。屏蔽检索头导致 F1 分数大幅下降,分别下降了 9.2% 和 23.1%。这些观察结果表明,现实世界的文档 QA 任务在很大程度上依赖于检索头的功能。

图6.屏蔽检索头会严重损害 ExtractQA 性能。而屏蔽其他的注意力头则对性能的影响很小。

▲图6.屏蔽检索头会严重损害 ExtractQA 性能。而屏蔽其他的注意力头则对性能的影响很小。

对CoT的性能有显著影响!

研究人员测试了Mistrial-7B-Instruct-v0.2在MMLU、MuSiQue和GSM8K上的表现,结果显示,在仅使用答案提示(不包括CoT)的情况下,屏蔽检索头或随机头并不会真正影响性能,这可能是因为模型的生成主要基于存储在FFN层中的内部知识。对于链式思维推理,屏蔽检索头则会显著影响模型的性能。

图7.检索头显着影响需要链式推理的任务。这是因为通常在推理链中,下一步推理需要模型参考先前的信息。

▲图7.检索头显着影响需要链式推理的任务。这是因为通常在推理链中,下一步推理需要模型参考先前的信息。

通过检查典型的错误案例,研究人员发现当掩盖了检索头,模型会变得对先前的重要信息“视而不见”,并产生虚假的 CoT 幻觉。

图8.CoT的示例。

▲图8.CoT的示例。

检索头与模型语言能力无关

神奇的是,作者提到检索头只会影响事实性,而不影响语言能力。当检索头被掩蔽时,模型说出“在多洛雷斯公园”的开头后可能产生“do other things”的幻觉,但这仍然是一个流利的句子,只是并不是“吃三明治”事实。

图9.检索头是将信息从输入重定向到输出的头。左:掩盖了 LLaMA 2 7B 80K 的顶级检索头,其大海捞针性能下降显着,并且模型在解码过程中产生幻觉。右图:屏蔽随机不可检索头部不会影响模型的大海捞针行为。

▲图9.检索头是将信息从输入重定向到输出的头。左:掩盖了 LLaMA 2 7B 80K 的顶级检索头,其大海捞针性能下降显着,并且模型在解码过程中产生幻觉。右图:屏蔽随机不可检索头部不会影响模型的大海捞针行为。

有网友也注意到作者提到“如果模型通过了“大海捞针”测试,那么模式总是可以观察到的”,这是否意味着,不能通过测试的模型就没有检索头!? 而作者也出了回复:

我倾向于相信(到目前为止)状态空间模型/线性和局部注意力模型不能做捞针实验的原因是因为它们没有检索头。

这倒是有些费解,不过这项工作才刚开始,期待后面会有新的发现吧!

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

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

相关文章

(四)后台-对文章的增删改查操作

(四)后台-对文章的增删改查操作 文章目录 (四)后台-对文章的增删改查操作一、RESTFUL API二、路由处理1、/home 后台首页页面2、/upload 文件上传功能 三、文章模块1、/list 获取文章列表 GetList2、/ 新增|编辑文章 SaveOrUpdate…

AI 提示词生成器

https://prompt-generator.ilovecoke.cc/参考 AI 提示词生成器

docker部署前端项目(三)简易迅速版本

前两个docker 部署都出现了 意外,通过dockerfile 文件操作的时候, 不是 npm 无法下载,就是 npm build 无法打包 总是困难重重,原因甚多,不是网络导致,就是版本不对, 原因可能是 node 版本和 npm…

运维 kubernetes(k8s)基础学习

一、容器相关 1、发展历程:主机–虚拟机–容器 主机类似别墅的概念,一个地基上盖的房子只属于一个人家,很多房子会空出来,资源比较空闲浪费。 虚拟机类似楼房,一个地基上盖的楼房住着很多人家,相对主机模式…

微信小程序的开发

1.了解项目的基本组成结构 pages 用来存放所有小程序的页面 utils 用来存放工具性质的模块(例如:格式化时间的自定义模块) app.js 小程序项目的入口文件 app.json 小程序项目的全局配置文件 app.wxss 小程序项目的全局样式文件 project.config.json 项目的配置文件 sitem…

Docker基础学习(5.Docker镜像命令)

⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容:个人博客系统 ⭐我的文档网站:http://xyhwh-nav.cn/ ⭐微信公众号:码上言 文章目录 Docker run流程镜像是什么&a…

通用视觉多模态大模型 一统理解/生成/分割/编辑

这是一款通用视觉多模态大模型,支持从视觉理解到视觉生成、从低层次到高层次的一系列视觉任务,解决了困扰大语言模型产业已久的图像/视频模型割裂问题,提供了一个全面统一静态图像与动态视频内容的理解、生成、分割、编辑等任务的像素级通用视…

C++必修:类与对象(一)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C学习 贝蒂的主页:Betty’s blog 1. 面向过程与面向对象 1.1. 面向过程 我们之前学习的C语言就是一种面向过程的语…

【网络通信】初探网络层次结构(OSI七层网络模型)

随着信息技术的飞速发展,网络通信已经成为现代社会不可或缺的一部分。网络通信的实现离不开网络协议栈的支持,而网络协议栈则是由多个层次组成的。这些层次各自承担着不同的任务,共同构成了网络通信的基石。本文将对网络通信中的各类层进行详…

00.Jenkins 基本介绍与安装

Jenkins Jenkins 是一个开源的持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)工具,用于自动化软件开发过程中的构建、测试和部署。它提供了丰富的插件生态系统,可以支持几乎所有主流的开发、构建和部署工具,使得软件开发团队能够更加高效地…

【信息系统项目管理师知识点速记】整合管理:结束项目或阶段

8.9 结束项目或阶段 1. 定义: 终结项目、阶段或合同的所有活动,存档项目或阶段信息,完成计划的工作,释放组织团队资源以展开新的工作。 2. 重要性: 确保项目目标的实现和项目工作的完结。归档项目信息以便未来参考。…

Swift - 函数

文章目录 Swift - 函数1. 函数的定义2. 隐式返回(Implicit Return)3. 返回元组:实现多返回值4. 函数的文档注释5. 参数标签(Argument Label)6. 默认参数值(Default Parameter Value)7. 可变参数(Variadic P…

LM2576D2TR4-5G 3.0安15伏降压开关稳压器 PDF中文资料_参数_引脚图

LM2576D2TR4-5G 规格信息: 制造商:ON Semiconductor 产品种类:开关稳压器 RoHS:是 装置风格:SMD/SMT 封装 / 箱体:TO-263-5 输出电压:5 V 输出电流:3 A 输出端数量:1 Output 最大输入电压:45 V 拓扑结构:Buck 最小输入电压:7 V 开关频率:52 kHz 最小工作…

seq2seq架构略解

用于序列翻译任务&#xff08;下图来自d2l&#xff09; 训练时输入输出格式&#xff1a; 若数据集为{ <(a1,a2,a3,a4,a5),(b1,b2,b3,b4,b5)> }&#xff08;AB语言对应的句子组&#xff09; 输入 A语言的单词序列结束符&#xff08;a1,a2,a3,a4,a5,<eos>&#xf…

RabbitMQ是如何保证消息不被重复消费,或者说是如何保证消息消费时的幂等性的

目录 面试官:RabbitMQ是如何保证消息不被重复消费?或者说是如何保证消息消费时的幂等性的1. 使用唯一业务标识2. 使用RabbitMQ的消息去重插件3. 使用业务逻辑实现幂等性4. 使用消息属性和死信队列5. 使用Spring Boot的重试机制该文章专注于面试,面试只要回答关键点即可,不需…

Unity类银河恶魔城学习记录14-5 p152 Lost currency save and enemy‘s currency drop

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili LostCurrencyController.cs using System.Collections; using System.Colle…

【STM32+HAL】三轴按键PS2摇杆

一、准备工作&#xff1a; 有关CUBEMX的初始化配置&#xff0c;参见我的另一篇blog&#xff1a;【STM32HAL】CUBEMX初始化配置 有关定时器触发ADC模式配置&#xff0c;详见【STM32HAL】ADC采集波形实现 二、所用工具&#xff1a; 1、芯片&#xff1a; STM32F407VET6 2、CUBE…

通义灵码-IDEA的使用教程

通义灵码-IDEA的使用教程 1、通义灵码是什么&#xff1f; 通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力&#…

【QT进阶】Qt线程与并发之线程和并发的简单介绍

往期回顾&#xff1a; 【QT进阶】Qt http编程之实现websocket server服务器端-CSDN博客 【QT进阶】Qt http编程之实现websocket client客户端-CSDN博客 【QT进阶】Qt线程与并发之创建线程的三种方法(超详细介绍)-CSDN博客 【QT进阶】Qt线程与并发之线程和并发的简单介绍 一、 …

MATLAB矩阵

MATLAB 矩阵 矩阵是数字的二维数组。 在MATLAB中&#xff0c;您可以通过在每行中以逗号或空格分隔的数字输入元素并使用分号标记每行的结尾来创建矩阵。 例如&#xff0c;让我们创建一个45矩阵一- 示例 a [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8] MATLAB将执行上述语…