波波算法笔记

Bob Peng

从专业角度聊聊deepseekR1为什么这么强大

2025-04-01
从专业角度聊聊deepseekR1为什么这么强大

今天认真再次看了一遍deepseek r1的论文,从技术角度聊一聊为什么deepseek-r1这么强,怎么超越Openai、Anthropic的?

https://arxiv.org/pdf/2501.12948

deepseek的能力

为什么deepseek r1可以思考?

看一张图就明白了

译文: 用户与助手之间的对话。用户提出一个问题,助手解决该问题。助手首先在脑中思考推理过程,然后将答案提供给用户。推理过程和答案分别用 <think> </think><answer> </answer> 标签括起来

这里deepseek团队,对模型训练的数据提示模板进行改造,要求模型的回答必须是 “先思考,后回答” 的范式,且思考过程必须在 <think> </think> 标签之间,答案在 <answer> </answer> 之间(此处 r1 模型还使用了标签<
summary >,用于总结推理结果)

所以实际deepseek-r1的回答是

<think> 推理过程</think>  
<answer>答案</answer>  

前端的UI会根据标签拆分开思考与答案,那么就可以解释 deepseek的问答界面了

为什么cot(思维链)可以提高能力

在我仔细观察cot的内容后,发现实际上他的推理就是 对用户输入的深度解析
,对隐藏需求的挖掘。当这些隐藏需求被作为上下文输入后,由于模型的Attention注意力(MLA)机制,会使得模型在推理时,注意到各个方面的限制条件。使得回答更加精确。

这里我个人理解,它意味着提示词工程中,基础指令的隐形化,创意提示的爆发.

怎么训练的

我归类为以下几点训练路径:

1.先收集了一部分高质量冷启动数据(约几千条),使用该数据fine-tune DeepSeek-V3-Base模型,记为模型A

2.使用A模型用GRPO训练,使其涌现推理能力,收敛的模型记为B

3.使用B模型产生高质量SFT数据,并混合DeepSeek-V3产生的其他领域的高质量数据,形成一个高质量数据集

4.使用该数据集训练原始DeepSeek-V3-Base模型,记为模型C

5.使用C模型重新进行步骤2,但是数据集变为所有领域,收敛后的模型记为D,这个模型就是DeepSeek-R1

6.训练C模型的数据对小模型做蒸馏,效果也非常好

几个可圈点的优化

  • 少量高质量数据冷启动,加速收敛,保证基本推理能力
  • 在步骤三中使用sft微调使用 拒绝采样 ,过滤低质量数据
  • 在RL过程中考虑多个方向奖励,一是正负采样,而是格式奖励(cot标签格式)

蒸馏 vs RL

从实验结果来看,蒸馏是又便宜又实用。用小的模型哼哧哼哧一顿SFT+RL操作,最后的效果还远不如直接蒸馏更好性能模型的输出直接SFT。

个人认为说明两点:

数据集本身的好坏对模型训练起决定性作用 .

人给不了模型需要的数据,模型才给得了模型需要的数据 。这一点我觉得很重要,人类语言往往会干扰模型能力。

很看好田渊栋团队的一个模型 隐藏推理 :不再通过语言模型头(language model head)和嵌入层将隐藏状态与语言 token
进行映射,而是直接将最后的隐藏状态(即连续思维)作为下一个 token 的输入嵌入,直到输出完再解码。它就是这个原理

总结来说,可以预见未来小模型的训练,都会使用优质模型蒸馏数据