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

大语言模型的“可解释性”探究——李宏毅大模型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.dtcms.com/a/358272.html

相关文章:

  • Java类加载与JVM详解:从基础到双亲委托机制
  • idea 普通项目转换成spring boot项目
  • Python实现半角数字转全角数字的完整教程
  • 《中国棒垒球》垒球世界纪录多少米·垒球8号位
  • Visual Studio(vs)免费版下载安装C/C++运行环境配置
  • LeetCode 287.寻找重复数
  • Java试题-选择题(23)
  • 【LeetCode 热题 100】62. 不同路径——(解法四)组合数学
  • 聊一聊 .NET 的 AssemblyLoadContext 可插拔程序集
  • rhel-server-7.9-x86_64-dvd.iso
  • 机器学习中KNN算法介绍
  • 笔记共享平台|基于Java+vue的读书笔记共享平台系统(源码+数据库+文档)
  • 数据库原理及应用_数据库基础_第3章数据库编程_常用系统函数
  • 骑行商城怎么开发
  • 【金仓数据库产品体验官】KingbaseES-ORACLE兼容版快速体验
  • 国家统计局数据分析01——机器学习
  • GD32VW553-IOT 基于 vscode 的 bootloader 移植(基于Cmake)
  • 【DreamCamera2】相机应用修改成横屏后常见问题解决方案
  • 阿里云营业执照OCR接口的PHP实现与技术解析:从签名机制到企业级应用
  • LZ4 解压工具(WPF / .NET 8)说明书
  • Java Stream API并行流性能优化实践指南
  • 基于Kubernetes自定义调度器的资源隔离与性能优化实践指南
  • 从 0 到 1 构建零丢失 RabbitMQ 数据同步堡垒:第三方接口数据零丢失的终极方案
  • 人工智能学习:Python相关面试题
  • 人工智能学习:Linux相关面试题
  • 98、23种设计模式之代理模式(7/23)
  • spark.sparkContext.broadcast() 与 org.apache.spark.sql.functions.broadcast 的区别
  • 开源PPT生成智能体(Agent)全景透视:技术路线、代表项目与未来趋势
  • 鸿蒙ArkTS 核心篇-15-条件渲染(组件)
  • 三重积分的性质