关键点是:神经网络的“心算”不是以人类思维链(CoT)的形式存在,而是隐藏在参数和中间激活里面。
1. 大模型并不是只有输入和输出
从外面看:
输入:
“解释一下量子力学”
↓
模型
↓
输出:
“一段解释”
像一个黑盒。
但是内部其实是:
Token输入
↓
Embedding
↓
几十/几百层 Transformer
↓
Attention + MLP
↓
隐藏状态变化
↓
预测下一个token
例如 GPT-类模型:
x
↓
Layer1
↓
Layer2
↓
...
↓
Layer96
↓
概率分布
↓
token
每一层都在进行大量非线性计算。
只是这些计算不是:
“我先分析第一步,然后第二步”
这种人类语言形式。
而是:
“数十亿参数组成的高维向量变换”。
2. 蒸馏为什么有效?
因为老师模型已经把复杂能力压缩到了输出分布里。
例如:
老师:
输入:
2+3×4=?
输出概率:
11: 0.98
14: 0.01
10: 0.01
学生只看到:
输入 → 老师输出
然后学习:
我的输出分布 ≈ 老师输出分布
久而久之:
学生参数里面形成类似的决策边界。
更复杂一点:
老师模型:
问题
↓
内部1000亿参数计算
↓
答案
学生:
问题
↓
100亿参数
↓
答案
虽然学生没有复制老师全部计算过程,但是它学习了:
哪些输入区域应该映射到哪些输出区域。
类似函数拟合:
老师:
[
y=f(x)
]
学生:
[
y=g(x)
]
目标:
[
g(x)\approx f(x)
]
不需要知道:
[
f(x)
]
内部怎么实现。
3. 那为什么没有“思维链”也能蒸馏?
因为思维链不是唯一的信息来源。
传统蒸馏:
Teacher:
输入
↓
答案概率
Student:
输入
↓
模仿答案概率
叫:
logit distillation
例如:
老师认为:
正确答案 A:
90%
B:
8%
C:
2%
学生学习这个分布。
后来发现:
如果让老师输出:
题目
↓
分析过程
↓
答案
效果更好。
叫:
CoT distillation
例如:
老师:
苹果3个
又买2个
3+2=5
答案5
学生学习:
过程+答案
于是学生内部更容易形成推理路径。
4. 但是隐藏推理真的不存在吗?
存在。
只是不可见。
比如:
AlphaZero 下棋:
输入:
棋盘状态
输出:
下一步
它没有说:
“我考虑了对方20步反击”
但是网络内部:
卷积层
+
价值网络
+
策略网络
已经编码了棋局规律。
人脑也是类似:
你看到红绿灯踩刹车:
不是:
看到红色
↓
调用交通规则
↓
判断车辆速度
↓
计算距离
↓
决定踩刹车
很多时候是直接反应。
5. 为什么现在喜欢蒸馏?
因为训练一个大模型太贵。
比如:
老师:
700B参数
训练成本:
几千万美元
学生:
7B参数
通过蒸馏:
700B能力
↓
压缩
↓
7B模型
得到:
- 更小
- 更快
- 更便宜
- 可以本地运行
例如手机上的模型,大量就是:
大模型训练
↓
蒸馏
↓
小模型部署
6. 一个更深的理解
你觉得:
“没有心算过程,怎么学?”
其实是因为把“思考”等同于人类语言了。
AI里的思考更像:
高维空间中的轨迹变化
不是:
一句一句自言自语
蒸馏不是复制老师的“脑内独白”,而是复制:
老师模型在输入空间里的行为规律。
所以一个没有显式推理链的小模型,也可能表现出推理能力。
这也是为什么现在很多研究在争论:
CoT 到底是在展示模型真正的思考,还是只是模型生成的一种解释文本。
很多情况下,它更像是“可读的中间表示”,而不是模型真正内部发生的全部计算。
写的不错,我有两个问题:
刷到这种帖子了,说明我在进步了。
隐藏思维链的怎么蒸馏?
模型蒸馏在很多年前就有了,不过是个广义的概念,不同场景下的差异很大
简单来说现在LLM的RL部分很重要,其中最重要的是RL的训练数据,现在常说的“蒸馏”的一种方式就是用更好的模型的输出(包括思维链)作为训练数据
考虑到额外的数据增强和清洗等处理、pretrain模型的不同,“蒸馏”出比原模型更强的模型是完全有可能的
不明觉厉
@nullptr-t #4 不过那样也不能把模型能力更强全归功于蒸馏了,仅凭蒸馏是完全不够的,毕竟也有人蒸馏那么多还是个废物,点名MiniMax M3