goldenplums2003/model_brain_surgery
GitHub: https://github.com/goldenplums2003/model_brain_surgery
一句话总结
这个项目不是训练模型,而是给模型做脑手术——通过捕获特定行为对应的神经激活方向,然后直接修改权重矩阵来"切除"那个方向。无优化器、无梯度、无训练循环,纯推理级别的权重编辑。
核心机制:激活捕获 → 方向计算 → 权重消融
第一步:激活捕获
脚本分别在两类 prompts 上跑前向传播,收集指定 Transformer 层的最后 token hidden state:
harmful_prompts.py→ 目标行为(比如有害内容、越狱提示)harmless_prompts.py→ 对照组(无害内容)
默认层范围:8-18(中间层,正好是语义表征最丰富的区域)
第二步:计算差异向量
direction = mean( harmful_activations ) - mean( harmless_activations )
这个差值向量被视为需要"削弱"的方向。它代表:当模型遇到有害输入时,相对于无害输入,哪些神经维度被异常激活了。
第三步:权重消融(核心操作)
对于每个被选中的层,修改 mlp.down_proj.weight:
# 让该层更少地把那个方向写回 residual stream
# 这是直接权重编辑,不是训练
关键洞察:FFN 的 down_proj 是信息从 MLP 返回 residual stream 的通道。修改这个矩阵,相当于控制"哪些信息被允许回流到主信息流"。
技术定位:它属于哪条学术脉络?
这个项目是Activation Steering(激活引导) 和 Model Editing(模型编辑) 的本地简化实现,与以下学术工作共享核心思想:
| 技术方向 | 代表工作 | 与 brain_surgery 的关系 |
|---|---|---|
| Activation Addition | Turner et al. 2023, Panickssery et al. 2023 | 他们加向量,brain_surgery 做消融(减法) |
| Directional Ablation | Arditi et al. 2024, Marshall et al. 2024 | 最接近的学术 cousins,同样是移除特定方向的投影 |
| Representation Engineering | Zou et al. 2023 | 用 PCA 找方向,brain_surgery 直接用 mean diff |
| Model Surgery (论文) | lucywang720/model-surgery | 用线性分类器找关键参数,这里是直接消融方向 |
| Weight Editing | Meng et al. 2023 (ROME) | 用定位-编辑方法改特定知识,这里是批量消融 |
brain_surgery 的独特之处在于:它不做复杂的向量选择或优化,而是用最朴素的方法(均值差)做最直接的干预(权重矩阵修改)。这种"粗糙但有效"的风格,恰恰是本地实验工具最需要的。
为什么是 MLP down_proj 下投影?
学术界的共识(Geva et al. 2021, Meng et al. 2022 等):
FFN 的 up_proj上投影 → 激活 → down_proj下投影 结构,本质上是一个键-值存储系统。up_proj 把输入映射到高维语义空间,down_proj 把激活投影回模型维度。修改 down_proj下投影 相当于修改"哪些知识/行为被允许输出"。
brain_surgery 只改 down_proj,不改 attention、不改 up_proj——这是经过学术验证的 最小有效干预面。
默认参数的设计逻辑
层范围: 8-18
消融比例: 1.0
模型: Qwen3-1.7B
精度: float16
为什么选 8-18?
- Transformer 的前几层处理低层语法/词法
- 中间层(8-18)处理语义/概念/推理
- 后几层准备输出 token
- 目标行为(有害内容、越狱)的表征主要出现在中间层
消融比例 1.0 的含义
- 不是"删除 100% 的权重",而是把那个方向上的投影乘以一个系数(1.0 表示完全移除该方向的分量)
- 可以调节为 0.3、0.5 等,做"部分切除"
使用方式:先 smoke test,再正式手术
# 只做流程验证,不保存模型
python brain_surgery.py --layers 2,3 --ablation-scale 0.1 --skip-save
# 中层轻量手术
python brain_surgery.py --layers 8-12 --ablation-scale 0.3 --output ./surgery-l8-12-s03
# 默认层范围,全量消融
python brain_surgery.py
术后测试:
python chat_qwen.py # 默认加载 surgery-output/
风险提示(项目自带的警告)
- 过大的消融比例或过宽的层范围可能明显损伤模型通用能力
- 建议先用 --skip-save 做 smoke test
- GGUF / LM Studio 模型不适合这个工作流,需要 Transformers / safetensors 格式
- 模型输出和后续使用需符合安全、伦理和法律要求
应用场景想象
| 场景 | 操作 |
|---|---|
| 本地模型安全加固 | 用有害/无害 prompt 对,切除有害行为方向 |
| 风格微调 | 用目标风格/对照风格,强化或削弱特定文风 |
| 知识遗忘 | 用需遗忘知识/保留知识,做方向消融 |
| 偏见缓解 | 用偏见/公平对照,削弱偏见表征 |
| 越狱防御 | 用越狱提示/正常提示,切除越狱响应方向 |
为什么这个项目值得关注
-
极致轻量:不需要 GPU 集群,不需要训练框架,不需要数据集管道。一台 MacBook 就能跑。
-
概念清晰:三步流程(捕获→计算→消融)没有黑盒,每一步都透明可控。
-
学术接地:虽然代码简单,但干预位置(down_proj)和干预方式(方向消融)都有学术依据。
-
实验友好:层范围、消融比例、prompt 集合都是可编辑的 Python 文件,迭代成本低。
-
本地优先:所有操作在本地完成,模型权重不上传,适合处理敏感场景。
局限与改进方向
| 局限 | 可能的改进 |
|---|---|
| 均值差向量过于粗糙 | 引入 PCA 或 contrastive learning 找更精确的方向 |
| 只改 down_proj | 可尝试同时干预 up_proj 或 attention heads |
| 全局层编辑 | 可按 token 位置或输入内容做条件干预 |
| 单一方向 | 多概念叠加时可能需要多个正交方向的联合消融 |
| 没有自动验证 | 可加入自动化评估(有害/无害分类器)来验证手术效果 |
参考与延伸阅读
- Directional Ablation: Arditi et al., 2024 - "Refusal in Language Models: A Neural Circuit Analysis"
- Representation Engineering: Zou et al., 2023 - "Representation Engineering: A Top-Down Approach to AI Transparency"
- Activation Addition: Turner et al., 2023 - "Activation Addition: Steering LLM Outputs Without Fine-Tuning"
- Model Surgery (论文): lucywang720/model-surgery - "Model Surgery: Modulating LLM's Behavior Via Simple Parameter Editing"
- ROME: Meng et al., 2023 - "Locating and Editing Factual Associations in GPT"
#模型手术 #激活引导 #本地LLM #模型安全 #权重编辑 #机械可解释性 #Qwen #轻量级工具
讨论回复
1 条回复推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。