【免费下载链接】jacobian-lens
Companion code for the global workspace interpretability paper
jacobian-lens(Jacobian lens,雅可比透镜)是"语言模型全局工作区"可解释性论文的开源参考实现,它能把模型任意层、任意位置的内部激活"翻译"成一串词表排名,从而窥见模型内部正在浮现的内容。本文带你快速读懂仓库中三组最像认知科学的实验数据:ignition 点燃阈值、capacity 工作区容量与dual-task 双任务干扰——它们共同回答一个诱人问题:语言模型内部是否真的存在一个容量有限、需要"点燃"才能进入意识的"全局工作区"?🧠
项目自带的切片可视化页面:模型读取一张 ASCII 人脸图,虽然词面从未出现"nose",Jacobian lens 却在中间层稳定读出 "nose"——这正是全局工作区实验的底层读法。
一、先花5分钟对齐术语
在解读数据前,先通读 data/experiments/README.md,它定义了所有实验共享的四条约定:
| 术语 | 含义 |
|---|---|
| Lens readout | 在每一对(层,token 位置)上,Jacobian lens 返回一份词表 token 的排名列表 |
| Workspace band(工作区带) | 网络中段一段连续的层范围;实验在这条带上汇总,而不是单看某一层 |
| Hit(命中) | 目标 token 在带内任意位置达到lens 排名第 1即记一次命中 |
| Swap(交换) | 在带内每一层,用另一个 token 的方向替换某个 token 的表示,再采样后续生成 |
💡 记住这个套路即可:所有实验都是"往模型里放一个刺激 → 用 lens 读中段层 → 统计目标词的排名/命中率"。
二、ignition:如何测量概念的"点燃阈值"
🔥 认知科学里的"ignition"指刺激从微弱感知突然"跳升"到可报告意识状态的过程。本实验用雅可比透镜给这个过程定了一个可测量的数。
1. 数据长什么样
打开 ignition.json,可以看到四类素材:
countries_12:12 个国家(France、Germany、Japan…),两两组合出66 个无序词对,作为主刺激;- 载体句模板:40 条
ctx_templates(如"The cheese they served reminded him of {W}")+ 20 条noun_ctx_templates(如"The riddle's answer was {W}"),{W}是被替换的槽位; alt_words:16 个词分别与 France 配对(含 blue、table、music、dog 等非国家词),用于检验跨领域词对是否也能点燃;idiom_pairs与scrambled_pairs:12 个共现词对(bread-butter、thunder-lightning…)作为"自然强关联"对照,12 个乱序配对(bread-chips、cat-fork…)作为打乱对照。
2. 核心机制:α 混合 + 0.5 判据
实验并不修改提示词,而是直接混合嵌入:把{W}槽位的嵌入替换为
α·emb(A) + (1−α)·emb(B)并把 α 从 0 平滑扫到 1(相当于把概念 A 的"音量"从 0 拧到满格)。每一层的读出用A 的倒数排名份额衡量:
share(A) = 1/rank(A) ÷ (1/rank(A) + 1/rank(B))由此得到三个关键数字:
- 点燃阈值:share 越过0.5(A 与 B"势均力敌")时的 α 值;
- 过渡宽度:每个层上 share 从 10% 涨到 90% 所需的 α 跨度——越窄说明"跳变"越陡峭,越接近开关式点燃;
- 层 × (α − 阈值) 热图:把不同词对的 α 各自平移对齐后叠在一起,看点燃是否在某个中间层"集体爆发"。
✨ 这正是"全局工作区"假说的签名:内容不在浅层缓慢浮现,而是在中段层突然点燃。
三、capacity:工作区里能同时装多少东西?
📊 capacity.json 回答另一个经典问题:工作区是"全有全无"的,还是能并行保持多个内容?
1. 刺激构造:80 词的"四家族"清单
每个试次生成一条80 词清单,由4 个连续的 20 词块拼成,每个块来自一个"家族"(block_families):
names(名字)、surnames(姓氏)、countries(国家)、cities(城市)
块与块之间的顺序在每个试次里随机打乱,避免位置效应。每个家族从过大的词池(candidate_pools)中取前 100 个在目标模型下恰好编码为单 token的词——所以精确清单是模型相关的(targets_per_family定义每家族取词数,proto给出该家族的候选类别标签词)。
2. 度量:逗号处的"累计可读数"
模型读清单时,在每一个逗号位置统计:到目前为止出现过的词里,有多少个在当前 lens 带内最低排名 ≤ k。
- 如果工作区容量无限制,曲线应持续爬升到 80;
- 如果容量有限,曲线会提前饱和——说明旧词被挤出工作区,只剩最近的若干词保持可读。
这条"累计可读数随清单推进"的曲线,就是工作区容量上限最直接的测量。
四、dual-task:两个秘密任务会互相干扰吗?
⚔️ 这是三组实验里设计最精巧的一组,对应论文的附录"竞争"部分(§app-competition)。核心问题:模型能否同时"暗中保持"两个任务,还是会像人一样发生干扰?
1. 场景:一边心算/想概念,一边抄写
- 载体句(dual-task.json 第 2 行):"The old painting hung crookedly on the wall.",由教师强制(teacher-forced)作为助手回合输出;
- 指令:"Concentrate on {concept} … while you write the sentence"——要求模型在抄写无关句子的同时,暗中保持某个概念(如 citrus fruits、planets)。
2. 20 组"概念 + 算式"配对
pairs里每个条目都带一个概念词表和一个配对算式base^exp − sub,例如:
| 概念 | 目标词(节选) | 配对算式 | 答案 |
|---|---|---|---|
| citrus fruits | orange、lemon、grapefruit… | 3² − 2 | 7 |
| ocean creatures | whale、shark、octopus… | 2⁴ − 7 | 9 |
| vegetables | carrot、potato、tomato… | 3² − 6 | 3 |
| kitchen utensils | spoon、whisk、ladle… | 2⁴ − 9 | 7 |
3. 实验条件与干扰度量
- 概念×数学臂:4 个条件(
concept_math_conditions)——只做概念、只做数学、两者兼做(概念在前 / 数学在前); - 概念×概念臂:从 10 组
concept_pairs(如 citrus×farm、planets×instruments)中各取 A 单独、B 单独、A 在前、B 在前共 4 个条件。
判定标准:在整个抄写响应区间的工作区带内,任一目标 token(概念词表成员,或算式答案的数字/数词形式)达到lens 排名 ≤ 5,即认为该任务"可达"。最终指标:
interference(干扰) = 单任务可达率 − 双任务可达率如果双任务下的可达率显著下降,就复现了人类"意识竞争"式的干扰现象——工作区确实只够一个人用。
五、三组数据速查表
| 实验 | 数据文件 | 核心操作 | 关键指标 |
|---|---|---|---|
| 点燃 | ignition.json | α 混合嵌入并逐层读出 | share 越 0.5 的 α 阈值、10→90% 过渡宽度 |
| 容量 | capacity.json | 80 词四家族清单 | 逗号处累计 band-min 排名 ≤ k 的词数 |
| 干扰 | dual-task.json | 边抄写边暗中保持 1~2 个任务 | 单任务 − 双任务可达率(排名 ≤ 5) |
完整约定见 data/experiments/README.md,透镜本体实现见 jlens/lens.py 与拟合估计器文档 jlens/fitting.py。
六、如何获取并亲手验证
git clone https://gitcode.com/gh_mirrors/ja/jacobian-lens cd jacobian-lens pip install -e .随后打开端到端教程 walkthrough.ipynb:加载模型 → 加载(或拟合)透镜 → 在几层上应用 → 渲染上文那样的切片页面。想复现本文三组实验时,只需把上表的 JSON 文件作为提示集喂给对应脚本即可。🚀
小结
- ignition证明:概念表示在中段层存在陡峭的"点燃阈值",且阈值位置对跨领域词对同样成立;
- capacity给出:工作区可读内容数量随清单推进饱和,暗示有限容量;
- dual-task揭示:同时保持两个秘密任务会产生可达率干扰,工作区存在"入场竞争"。
三组实验从"能不能进、能装多少、会不会打架"三个角度,为"语言模型内部存在全局工作区"这一主张提供了互相印证的证据链。配合上篇介绍的基础实验,你已经掌握了 data/experiments/ 全部 11 组数据的解读方法。
【免费下载链接】jacobian-lens
Companion code for the global workspace interpretability paper
相关推荐
轻松实现无干扰的验证码验证:No CAPTCHA reCAPTCHA
轻松实现无干扰的验证码验证:No CAPTCHA reCAPTCHA 在网络安全日益重要的今天,验证码作为防止恶意自动化操作的重要手段,其用户体验和安全性之间的
后端应用安全MifareClassicTool项目实战:燃油卡克隆中的NFC干扰问题解析
MifareClassicTool项目实战:燃油卡克隆中的NFC干扰问题解析 背景概述 在物联网和移动支付普及的今天,NFC技术广泛应用于门禁、支付和燃油卡等场
移动开发Zipkin 测试数据(testdata)完全指南:用真实 JSON 流量验证 Zipkin Lens 与 Zipkin Server
Zipkin 测试数据(testdata)完全指南:用真实 JSON 流量验证 Zipkin Lens 与 Zipkin Server 本篇指南围绕 Zipki
可观测性后端微服务
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考