俯视LLM的灵魂:一文搞懂稀疏自动编码器

news2024/10/7 14:22:03

实时了解业内动态,论文是最好的桥梁,专栏精选论文重点解读热点论文,围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。

稀疏自动编码器 (SAE) 最近因机器学习模型的可解释性而变得流行(尽管SAE自 1997 年以来一直存在)。机器学习模型正在使LLMs变得越来越强大和有用,但它们仍然是黑匣子,如何看穿LLM的灵魂,且若能理解它们是如何工作的,那对于大模型的进化有足够的帮助和启示意义。


使用SAE,可以开始将模型的计算分解为可理解的组件。本文将简介的介绍下SAE的工作原理,然后读者可以回头去温习“大模型的灵魂解读:Anthropic AI的Claude3 Sonnet可解释性研究”,应该更加深有感触。

自动编码器

神经网络最自然的组成部分是单个神经元。单个神经元并不对应于单个概念。语言模型中的任何概念,例如学术引用、英语对话、HTTP 求和韩语文本都是神经单元的叠加,或者换句话说是神经元的组合表示。

产生这种现象的原因可能是因为世界上存在的很多变量是稀疏的。例如,一个名人的出生地可能不到十亿分之一的训练Tokens,LLMs在训练的过程中掌握了这点,加上训练的Token远远大于神经元的数量,因此自然而然就会进行叠加表示。

稀疏自动编码器最近作为一种将神经网络分解为可理解组件的技术而广受欢迎。SAE 的灵感来自神经科学中的稀疏编码假说。有趣的是,SAE是解释人工神经网络的最有前途的工具之一。SAE 类似于标准自动编码器。

常规自动编码器是一种神经网络,旨在压缩然后重建其输入数据。例如,它可以接收一个 1000 维向量(1000个数字的列表)作为输入,通过编码器层馈送该输入以将输入压缩为512维向量,然后通过解码器馈送压缩编码表示以产生1000维输出向量。重建通常是不完美的,因为压缩过程会有信息损失。

稀疏自动编码器将输入向量转换为中间向量,该中间向量的维度可以高于、等于或低于输入。当应用于LLM时,中间向量的维度通常大于输入的维度。在这种情况下,如果没有额外的约束,任务就很简单。

SAE可以使用单位矩阵完美地重建输入,作为额外的约束,在训练过程中的损失函数中添加了稀疏性惩罚,这会引导SAE创建稀疏中间向量。例如,可以将1000维输入扩展为200维编码表示向量,并且可以训练SAE使其在编码表示中仅包含约20个非零元素。

上图中黑色的方块代表着稀疏的激活值

将SAE应用于神经网络中的中间激活,神经网络可以由许多层组成。在前向传递期间,每层内部和之间都有中间激活。例如,GPT-3有96 层。在前向传递期间,输入中的每个标记都有一个12,288 维向量(包含 12,288 个数字的列表),该标记从一层传递到另一层。此向量累积了模型在每一层处理下一个Token时用于预测下一个Token的所有信息,但它是不透明的,很难理解其中包含哪些信息。

若使用SAE来理解这种中间激活的方法如下:SAE基本上是一个矩阵 -> ReLU 激活 -> 矩阵。例如,如果GPT-3 SAE的扩展因子为4,则输入激活为12,288维,SAE的编码表示为49,512 维 (12,288 x 4)。

第一个矩阵是形状的编码器矩阵(12,288,49,512),第二个矩阵是形状的解码器矩阵(49,512,12,288)。通过将GPT的激活与编码器相乘并应用 ReLU,我们生成了一个 49,512 维的SAE编码表示,该表示是稀疏的,因为 SAE 的损失函数激励了稀疏性。

通常的目标是在SAE的表示中少于 100个数字为非零。通过将SAE的表示与解码器相乘,我们产生了一个12,288 维重建的模型激活。这种重建并不完全匹配原始的 GPT 激活,毕竟这么一折腾,信息会有所丢失。

现在只在模型中的一个位置训练单个SAE。例如,可以在第25层和第26层之间的中间激活上训练单个 SAE。为了分析 GPT-3 中所有96层的输出中包含的信息,可以训练 96 个单独的SAE——每层一个。

上图说明了这个过程,是拿激活值出来训练。原激活值通过与编码矩阵相乘,之后通过激活函数,然后得到稀疏表示,最后通过解码矩阵还原。

如果还想分析每层中的各种中间激活,这将需要数百个SAE。对这些SAE 的训练数据来自通过 GPT 模型提供各种文本并收集每个选定位置的中间激活(样本)。

功能

SAE表示的每个活动数字都对应于可以理解的组件。假设12,288 维向量对 GPT-3 [1.5, 0.2, -1.2, ...] 来说意味着“桥”。SAE 解码器是形状矩阵 (49,512, 12,288),但我们也可以将其视为49,512个向量的集合,每个向量都是形状(1, 12,288)。如果SAE解码器向量519学习了与GPT-3相同的“桥”概念,则解码器向量将近似等 [1.5, 0.2, -1.2, ...] 。每当 SAE 激活的元素 519不为零时,就相当于对应“桥”的向量。上面描述了SAE的工作原理,用专业的术语来讲就是“解码器对应于残差流空间中特征的线性表示”。

特征519代表什么?目前的做法是只看那些能最大限度地激活功能的输入,并对其可解释性做出直觉反应。每个功能激活的输入通常是可解释的。例如,Anthropic在Claude Sonnet上训练了SAE,并发现了单独的 SAE功能,这些功能可以在与金门大桥、神经科学和热门旅游景点相关的文本和图像上激活。其他功能在不太明显的概念上激活。

这里值得一提的是,在大量的激活值上面进行训练,通过稀疏矩阵的确可以明显看到一些特征,因为这个向量大部分的数值都为0了。通过研究Decoder矩阵就可以研究大模型在学习某个知识的时候,到底是如何融会贯通的。

如果存在基于特定主题激活的神经元,那么激活某些神经元是否会强制生成这些主题?回想一下AutoEncoder结构,虽然同时拥有编码器和解码器,但在训练后,只有编码器用于将激活向量转换为字典向量。是否可以使用解码器从所选特征重建激活向量?换句话说,能操纵神经元吗?答案可以用 Anthropic 的一句话来概括:“稀疏的自编码器功能可用于干预和控制变压器的生成。” 下图单独操纵神经元以实现不同的结果。

由于 SAE 解码器向量与LLMs中间激活的形状匹配,因此可以通过简单地将解码器向量添加到模型激活中来执行因果干预。这里通过将解码器向量乘以比例因子来缩放干预的强度。当人类学研究人员将金门大桥SAE解码器向量添加到大模型的激活中时,大模型不得不每次回复中都提到金门大桥。

如何评估SAE,目前存在L0和Loss Recovered两个指标 。L0是SAE编码中非零元素的平均数。Loss Recovered是用重建的激活替换GPT或者其他大模型的原始激活并测量不完美重建的额外损失。这两个指标之间通常存在跷跷板效应,需要进行权衡,。毕竟SAE会选择降低重建精度以增加稀疏性。

许多新的SAE方法,例如Deepmind的门控SAE和OpenAI的TopK SAE,都修改了稀疏性惩罚以改善这种权衡。

下图来自 Google Deepmind的Gated SAE 论文,它引入了门控稀疏自动编码器 (Gated SAE),它比使用流行方法的训练实现了帕累托改进。在 SAE 中,用于鼓励稀疏性的 L1 惩罚引入了许多不良偏差,例如收缩 - 系统性地低估特征激活。门控 SAE 分离 “确定使用哪些方向”和“估计这些方向大小的功能”。这使得在典型的超参数范围内解决了收缩问题,具有类似的可解释性,并且只需要一半的触发特征即可实现相当的重建保真度。

门控SAE的红线更靠近图表的左上角,这意味着在这种权衡中表现更好。

应用

上图展示一种研究方法,a) 对语言模型的内部激活进行采样,无论是残差流、MLP 子层还是注意头子层;b) 使用这些激活来训练神经网络,稀疏自动编码器,其权重形成特征字典<注意是Decoder Matrix!!>;c) 使用诸如 OpenAI 的自动解释性分数之类的技术来解释生成的特征

上图以“括号”为例显示每个特征之间的关系,同时每个特征上面都有人工解释。边缘厚度表示连续残差流层中字典特征之间的因果关系强度,以消融为衡量标准。许多跨层的字典特征具有相似的解释,并且通常指向激活空间中的相似方向,以余弦相似度为衡量标准。

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

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

相关文章

【python】OpenCV—Color Map

文章目录 cv2.applyColorMapcv2.putText小试牛刀自定义颜色 参考学习来自 OpenCV基础&#xff08;21&#xff09;使用 OpenCV 中的applyColorMap实现伪着色 cv2.applyColorMap cv2.applyColorMap() 是 OpenCV 中的一个函数&#xff0c;用于将灰度图像或单通道图像应用一个颜色…

【秋招刷题打卡】Day03-二分系列之-二分答案

Day03-二分系列之-二分答案 给大家推荐一下咱们的 陪伴打卡小屋 知识星球啦&#xff0c;详细介绍 >笔试刷题陪伴小屋-打卡赢价值丰厚奖励 < ⏰小屋将在每日上午发放打卡题目&#xff0c;包括&#xff1a; 一道该算法的模版题 (主要以力扣&#xff0c;牛客&#xff0c;…

HexPlane代码复现(十几分钟就复现成功的一篇论文代码!!!!!)

https://caoang327.github.io/HexPlane/ 一、 python setup.py develop命令用不了了 running develop /home/uriky/anaconda3/envs/hexplane/lib/python3.8/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is d…

仓库管理系统14--仓库设置

1、添加窗体 <UserControl x:Class"West.StoreMgr.View.StoreView"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc"http://schemas.openxmlformats.…

算法金 | 没有思考过 Embedding,不足以谈 AI

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 抱个拳&#xff0c;送个礼 在当今的人工智能&#xff08;AI&#xff09;领域&#xff0c;Embedding 是一个不可或缺的概念。如果你没有…

背靠广汽、小马智行,如祺出行打得过滴滴和百度吗?

©自象限原创 作者丨艾AA 编辑丨薛黎 北京时间6月14日凌晨&#xff0c;在特斯拉股东大会上&#xff0c;马斯克阐述了对Robotaxi&#xff08;自动驾驶出租车&#xff09;商业模式的构想——特斯拉不仅会运营自己的无人驾驶出租车车队&#xff0c;还可以让特斯拉车主们的爱…

面试突击:Java 集合知识体系梳理

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。在 Java 开发中&#xff0c;集合类对象绝对是被使用最频繁的对象之一。因此&#xff0c;深入了解集合类对象的底层数…

Python操作MySQL数据库--使用pymysql模块

Python操作MySQL数据库--使用pymysql模块 一、新建数据库和数据表1.1 新建book数据库1.2 新建bookprice数据表二、连接数据库2.1 建立数据库连接三、新增数据3.1 新增单条数据3.2 新增多条数据3.3 批量新增四、修改数据4.1 修改单条数据4.2 修改多条数据五、删除数据5.1 删除单…

Linux系统相关函数总结

在应用程序当中&#xff0c;有时往往需要去获取到一些系统相关的信息&#xff0c;譬如时间、日期、以及其它一些系统相关信息&#xff0c;本章将向大家介绍如何通过 Linux 系统调用或 C 库函数获取这些系统信息。除此之外&#xff0c;还会向大家介绍 Linux 系统下的/proc 虚拟文…

springboot 缓存框架Cache整合redis组成二级缓存

springboot 缓存框架Cache整合redis组成二级缓存 项目性能优化的解决方案除开硬件外的方案无非就是优化sql&#xff0c;减少sql 的执行时间&#xff0c;合理运用缓存让同样的请求和数据库之间的连接尽量减少&#xff0c;内存的处理速度肯定比直接查询数据库来的要快一些。今天就…

代码随想录——跳跃游戏Ⅱ(Leetcode 45)

题目链接 贪心 class Solution {public int jump(int[] nums) {if(nums.length 1){return 0;}int count 0;// 当前覆盖最远距离下标int curDistance 0;// 下一步覆盖距离最远下标int nextDistance 0;for(int i 0; i < nums.length; i){nextDistance Math.max(nums[…

搭建 MySQL MHA

搭建 MySQL MHA 搭建 MySQL MHA实验拓扑图实验环境实验思路MHA架构故障模拟 实验部署数据库安装主从复制部署时间同步主服务器配置从服务器配置创建链接 MHA搭建安装依赖的环境安装 node 组件安装 manager 组件配置无密码认证在 manager 节点上配置 MHA管理 mysql 节点服务器创…

【Git】远程仓库

一、常用的托管服务[远程仓库] 二、注册码云 三、创建远程仓库 四、配置SSH公钥 五、操作远程仓库 5.1、添加远程仓库 5.2、查看远程仓库 5.3、推送到远程仓库 5.4、 本地分支与远程分支的关联关系 5.5、从远程仓库克隆 5.6、从远程仓库中抓取和拉取 5.7、解决合并冲突 一、常…

Python 算法交易实验73 QTV200第二步: 数据清洗并写入ClickHouse

说明 先检查一下昨天启动的worker是否正常工作&#xff0c;然后做一些简单的清洗&#xff0c;存入clickhouse。 内容 1 检查数据 from Basefuncs import * # 将一般字符串转为UCS 名称 def dt_str2ucs_blockname(some_dt_str):some_dt_str1 some_dt_str.replace(-,.).re…

简单粗暴-安装detectron2

文章目录 一、下载detectron2二、修改文件三、安装detectron2参考文献&#xff1a; 其他配置版本&#xff1a; torch1.12.1CUDA&#xff1a;11.6python&#xff1a;3.9 建议以上配置&#xff0c;其他配置未测试&#xff0c;如果CUDA版本不匹配的话&#xff0c;可以多配置不同版…

达梦数据库的系统视图v$locked_object

达梦数据库的系统视图v$locked_object 在达梦数据库&#xff08;Dameng Database&#xff09;中&#xff0c;V$LOCKED_OBJECT 视图提供了与数据库中被锁定对象相关的信息。这通常用于监控和诊断数据库中的锁定问题&#xff0c;帮助管理员了解哪些对象被锁定了&#xff0c;以及…

PyCharm2024 for mac Python编辑开发

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff08;适合自己的M芯片版或Intel芯片版&#xff09;&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功3、打开访达&#xff0c;点击【文…

自动建立用户练习

一丶编辑文本存放用户名 vim userlist 二丶编辑文本存放需要创建用户的密码 vim passlist 三丶编辑脚本 vim create_user.sh #!bin/bash [ "$#" -lt "2" ] && { #echo error please input userlist anpassli…

postgre事务id用完后,如何解决这个问题

在PG中事务年龄不能超过2^31 &#xff08;2的31次方2,147,483,648&#xff09;&#xff0c;如果超过了&#xff0c;这条数据就会丢失。 PG中不允许这种情况出现&#xff0c;当事务的年龄离2^31还有1千万的时候&#xff0c;数据库的日志中就会 有如下告警&#xff1a; warning:…

【第一周】认识小程序

目录 认识小程序发展历史发展前景发展优势个人企业/创业 账号申请开发工具下载流程使用说明 协作项目交流收益渠道 认识小程序 发展历史 微信小程序自2016年首次提出以来&#xff0c;经历了快速的发展和完善过程&#xff0c;以下是其主要发展历史节点&#xff1a; 2016年1月…