简单理解 R1 模型的训练过程(外行视角)
-
自己当软件文档读的,追求:越简单越好,尽力小学生也能懂的
---分割---
流程描述:冷启动(微调)--> 强化学习1 --> 监督学习1 --> 监督学习2
---分割---
故事是很连续的,不连续在于 术语的解释和方法的选择
简单说
(传说 在很久以前...)deepseek 官方训练出了基础模型 V3,然后用 「纯强化学习」方式,直接探索出了 R1-Zero 的推理模型,,这个模型已经吊打了 o1 模型,本来事情到这里就完了,拿出来用就可以了(收工回家)
但是
R1-Zero 虽然很强,而且训练省心思,,但有一个难以解释的缺点--- 它的结果 可读性很差(美女啥都好,就是有腋臭...)。
说详细点,就是 语言混合,且格式乱入。
---分割---
为了 解决R1-zero 的缺点,deepseek 只好去想个策略,去克服(当然本身也有 审核的需求)
他的方法就是
先通过【冷启动】的方式,放入一个基础,让其有个语言规范的“体质基础”,,好比 运动员在比赛前,先锻炼肺活量,肌肉(就没必要 胡乱探索 会非常曲折,也不美观)。
这个基础就是加入(几千条初始的 数据集)
- few-shot prompting with a long- CoT as an example
- directly prompting model to generate detailed answer with reflection and verification
- 收集 R1-Zero 模型的输出 可读性高的
- 通过人类标注员,对R1-zero 的输出 可读性修复
在这个阶段,官方定义出 生成的格式 special_token|<reasoning_process>|special_token|<summary>
-
冷启动后,进行主要的 【强化学习1】
主要是 coding, mathematics, science, and logic reasonin ,,(这类似 训练运动员 主要技能模块的训练)
因为这时 语言混合现象还是出现,因此官方 将模型提高的方向 部分对齐到 语言不混合(就是 按照输出中 目标语言的比例)
(#对齐语言,削弱了点 大模型的性能,但人类可读性增加)
-
之后是 【监督学习1】(SFT supervised fune-tune)
这是为了 大模型能应对 理科之外的问题,比如 写作,角色扮演,其他
官方分为 reasoning 和 non-reasoning ,数据量分别是600K 和 200K
其中reasoing 就是一眼看出是推理任务,,而non-reasoning 官方会尝试生成 CoT,,至于 更简单的 Hello 是不思考的(无CoT)
(reasoning 扩展了之前数据集,加上了有 ground-truth 的,但是没有过程的任务,用V3 做裁判出分数)
-
#这也解释了,思考模型有些任务会出 CoT 更顺,,有些任务则很呆,只能靠反思 和 验证,甚至自我循环,,还有一些任务 如自我介绍 和一般模型没区别。
(强的模型 泛化思维链更强 如R1,,而zhipu 的模型,问个单词就会变一般反思 和验证)
-
最后是【监督学习2】(SFT)
这一步 和模型能力无关,,主要是 让它向人类对齐,一个是helpful 另一个是harmless
前者保证 summary 部分--> 对齐到用户 (不考虑思考的部分)
后者保证 去除risk 和 biases 部分,(同时考虑 summary 和 resoning 的部分)
(#个人看法 zhipu的模型,就是这一步做的很糟糕。)
-
最后
该模型非常不错,但还是有很多问题,如 软件工程的任务 比起基础模型没提升(因为 没有好的数据集),虽然训练时候有few-shot ,但实际使用推荐 zero-shot。