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

大语言模型的“可解释性”探究——李宏毅大模型2025第三讲笔记

本节课主要探究大语言模型的可解释性问题,主要脉络:

1)一个神经元在干什么

2)一群神经元在干什么

3)一层神经元在干什么

4)最后说一下“大语言模型到底在想什么”

一、一个神经元在干什么

1)怎么知道一个神经元在做什么?

假设一个语言模型每次在说脏话的时候,某个神经元都会“启动”。

问题1:相关性不等于因果性,是这个神经元导致的说脏话,还是这个神经元只是与脏话相关?验证方法:移除该神经元,看看语言模型是否还能再说脏话。

问题2:如何移除某个神经元,将该神经元的权重置0、或置一个平均值

问题3:假设神经元有不同启动程度(权重不同),神经元能说不同“等级”的脏话,那么就说明该神经元与说脏话相关

2)例子-川普神经元:提到川普时启动

3)解释单一神经元的功能不太容易
  • 一件事情可能有很多神经元共同管理
  • 一个神经元也可能管很多事

比如 2096层的第10个神经元,被移除后,these\those\both相关的复数词预测概率有发生显著的变化。1094层的第9个神经元被移除后,this\that\one这样的单数词预测概率,会有显著变化。

但是移除了单个神经元后(post-edit)。these这次词还是输出几率最高的词,说明不止一个神经元在控制these词,抹掉单一神经元对最终输出的影响较小。

一个神经元可能同时管很多事情

输入许多句子,观察某个神经元的启动程度,发现某个神经元在遇到标橙色高亮词汇的时候都会启动。

4)为什么不是一个神经元负责一个任务

一层神经元是有限的,比如llama 3 8B的模型,一层只有4096个神经元

一组任务会共用一个神经元:就算一个神经元只有启动、不启动(0和1)两种形态,组合后的神经元也会有2的4096次方种可能性

二、一层神经元在做什么?

假设一个功能向量,在第1、3、最后一个神经元被启动时,模型会拒绝用户的请求

查看一层神经元的输出(又叫representation)和功能向量的相似程度,那么可以得出这层神经元是否在做“拒绝请求”的事情

1)如何找出功能向量?

一层神经网络实际观察到的输出,其实等于拒绝向量 + 其他信息,那么怎么把其他信息剔除,只找到拒绝向量呢?

  • 找一批拒绝的情况,查看输出的向量,求平均
  • 再找没有拒绝的情况,将输出向量求平均
  • 两个结果相减,得出拒绝向量

2)怎么验证得出的向量,确实是拒绝的向量?

* 方向1:把得出的“拒绝向量”加到神经网络一层的输出中,如果“加之前”模型会正常输出,“加之后”模型拒绝输出,那么这个向量就是拒绝向量,图片是一篇论文,橙色柱子是加入拒绝向量前的拒绝概率,蓝色柱子是找出并加入拒绝向量之后,模型拒绝的概率,可以看到加入拒绝向量之后,模型拒绝输出的概率高了非常多。

方向2:在拒绝结果的模型输出中,减掉“拒绝向量”查看模型是否还会拒绝。文章表面,减掉拒绝向量后,模型更有可能回答危险的问题,而不是直接拒绝危险的问题。

没有斜线的柱子,指的是未处理前,模型的“拒绝分数”和“安全分数”,斜线柱子,是减掉“拒绝向量”后模型的“拒绝分数” 和“安全分数”。

3)各式各样的功能向量
  • 谄媚向量:不管用户说什么,语言模型都会说用户的做法是对的
  • 诚实向量:减去诚实向量,模型的幻觉会增多
4)所以,一层神经元在做什么?

一层神经元里面,有拒绝的向量,有谄媚的向量,有说真话的向量。
那么能否把这一层的所有功能向量都找出来?
假设这一层的向量是由所有功能向量(v1-vk)+其他向量(e1..)组成的
解向量的方法叫SAE(Sparse Auto-Encoder)

例子:

  • claude 3 Sonet中的功能向量:
  • 比如#1013764这个功能向量负责debug,加入这个向量后,正确的代码也会报bug(下图)。
  • claude团队去找到底有多少功能向量,找到了3400万个功能向量之多
  • #80091 认知向量,在这个向量存在时候,问Claude模型“你是谁”模型知道自己是AI,移除这个向量后,模型会回答“我是人”
  • 比如#31164353这个功能向量负责产生跟Golden Gate Bridge相关的信息(有多语言,多模态的向量)。

三、一群神经元在做什么

语言模型的“模型” 用一个简单的方式指代复杂的大语言模型

系统化构建语言模型的“模型” 方法

pruning——不停减掉一些神经元,直到只剩下框架

circuit——pruning后,同样的问题结果不变,剩下的模型结构就叫circuit

与network compression的差别:network compression在压缩后所有的答案还要接近原有的模型结果,pruning一般只关心特定问题的答案。

四、“大语言模型到底在想什么”

让语言模型直接说出想法:语言模型会说话,问就完事了

局限:不知道是哪一层开始知道答案的

1)Logit Lens: 从每一个中间层读结果

其实,语言言模型的思维是透明的,residual connection 输出的结果其实有输入的部分。所以在之前每一层都加上unembedding,就可以知道中间层在想什么,叫做Logit Lens

例子:用logit lens分析每一层的输出。给一个问题:波兰的首都在哪里?语言模型从第15层开始,知道在问波兰,从第19层开始知道答案。

2)PatchScopes

* 将想要得到的答案的中间层向量,提出一系列问题,将刚才的中间层向量替换到新问题中,查看输出的结果

* patchscopes如何改变人们对类神经网络的理解:对于需要多步骤推理的问题,模型是如何一步步推理出正确答案的

例子:

imagine 这张专辑演奏者的配偶是谁
- imagine 是什么,是一张专辑 e1
- imagine 这张专辑演奏者是约翰蓝侬 e2
- 约翰蓝侬的妻子是yoko e3

http://www.xdnf.cn/news/19425.html

相关文章:

  • Linux kernel 多核启动
  • Tomcat 企业级运维实战系列(六):综合项目实战:Java 前后端分离架构部署
  • 〔从零搭建〕数据中枢平台部署指南
  • 汽车加气站操作工证考试的复习重点是什么?
  • 如何取得专案/设计/设定/物件的属性
  • ETCD学习笔记
  • 手表--带屏幕音响-时间制切换12/24小时
  • 从零开始学习单片机18
  • 《云原生架构从崩溃失控到稳定自愈的实践方案》
  • 消费 $83,用Claude 实现临床护理系统记录单(所见即所得版)
  • C++三方服务异步拉起
  • MySQL函数 - String函数
  • Google Protobuf初体验
  • 深层语义在自然语言处理中的理论框架与技术融合研究
  • 使用电脑操作Android11手机,连接步骤
  • Python爬虫实战:研究统计学方法,构建电商平台数据分析系统
  • 面经分享--小米Java一面
  • 具有类人先验知识的 Affordance-觉察机器人灵巧抓取
  • STM32 之GP2Y1014AU0F的应用--基于RTOS的环境
  • 老题新解|不与最大数相同的数字之和
  • PCB 局部厚铜工艺:技术升级与新兴场景应用,猎板加工亮点
  • 同步/异步日志库
  • 响应式编程框架Reactor【4】
  • Web 聊天室消息加解密方案详解
  • open webui源码分析13-模型管理
  • 数据结构--栈(Stack) 队列(Queue)
  • Python API接口实战指南:从入门到精通
  • Linux查看有线网卡和无线网卡详解
  • 【Linux】基础I/O和文件系统
  • 初学者如何学习项目管理