关于产品经理应该怎么学AI,核心就两个点:坚持读论文和自己多动手
——张涛(Hidecloud),光年之外产品负责人
这是关于DeepSeek的第二篇文章,想和你分享我读DeepSeek-R1论后的一些心得,也给大家明天上班再增加点谈资。
DeepSeek之所以引爆春节,是因为它同时击穿了3个圈层的心智:
技术圈,被它的开源精神所折服;
AI圈,被它被超低的训练成本和极致的训练效率所折服;
普罗大众圈,被它深度思考的输出完备性所折服。
我不是技术圈的,上一篇文章《》也大致从AI圈角度分析了它在提升训练效率上体现出的创新思维。
那这篇文章,是想作为一名普罗大众,回答一个问题:
反思能力如此厉害的DeepSeek-R1,到底是怎么被训练出来的?
其实关于这个话题,有很多文章都写过了,但我看了一圈,这些所谓对R1的“深度拆解”、“详解”、“万字解读”,“一文读懂”、“全面解析”,都只是把论文拿过来,对原文做些许调整和扩充,重新写了一遍。里面的各种名词、术语,似乎是默认大家都知道一样,全堆上去,就算“解读完了”。给我的感觉就像是:“听君一席话,如听一席话”
于是凭着十几年做产品锻炼出的抽象能力和画图能力,本着“能用图说明白就不写字”的原则,我尝试把R1论文中所描述的训练过程,用流程图的方式为你复现出来。希望帮助没有技术背景的普通大众,也能学到DeepSeek团队在“深度思考”模式背后的“深度思考”。完整流程如下图:
想看R1论文的,回复“R1论文”即可。
需要额外说明的是,在从论文还原流程的过程中,由于原文在某些地方的描述过于简略和抽象,图中部分模块是我基于自己的理解完成的,如有错误,非常欢迎你帮忙指出,感谢支持!那下面我们就开始。
总览
原文中,DeepSeek训了2个R1模型(这里先不讨论蒸馏),分别是:DeepSeek-R1-Zero和DeepSeek-R1。
听名字可能会认为R1是R1-Zero基础上的升级版,一些自媒体也是这么说的,但实际上这2个模型是分开训的,二者没什么直接联系。不过训R1-Zero的方法,贯穿着R1的始终。
具体来讲,DeepSeek-R1-Zero的训练过程,本质上是为了证明2件事:
第一,基于奖励规则的纯强化学习,可以让大模型的推理能力显著提升;
第二,同样是强化学习,我DeepSeek(因为用了GRPO)可以做到又快又好又省钱。
但在这个过程中,他们其实碰了壁,这第一版的R1-Zero,没法直接交付,因为它的推理过程实在是没法看。作为一款主打推理强化的模型,如果用户看不到推理过程,这模型是拿不出手的。
其实站在产品角度看,这时DeepSeek完全可以把R1-Zero先推上线,只是不显示思考过程就可以了,因为它的推理结果就已经很强了。但正是因为他们秉持着严谨的研究精神,追求精益求精,我们才能在线上看到如此丰富的推理过程数据。我猜这也是为什么DeepSeek会默认把思考过程展开的,这背后OS肯定是:我们费了那么多劲,肯定是要秀一把的。
验证了强化学习能有效提升推理能力后,他们就开始真正发挥在工程优化上的特长了,这才有了对R1的完整训练过程。
网上的很多说法认为,DeepSeek-R1一共训了2个阶段,共四步,分别是:监督学习(SFT) -> 强化学习(RL) -> 监督学习(SFT) -> 强化学习(RL)
但仔细理解过论文后我发现,真正的完整流程应该是五步:
第一个监督微调阶段(冷启动) -> 第一个强化学习阶段(推理导向) ->收集监督微调数据-> 第二个监督微调阶段(2轮微调) -> 第二个强化学习阶段
很多人会忽略一个关键环节,就是DeepSeek花了很大力气,为第二阶段的监督微调构建数据(就是我标红的部分),这才是让最终的R1能“懂人话”的核心。
接下来就分别针对DeepSeek-R1-Zero和DeepSeek-R1,展开讲讲他们的实现流程。
DeepSeek-R1-Zero:基础模型上的强化学习
如图所示,R1-Zero的训练逻辑并不难,大框架就是用DeepSeek-V3-Base作为基座,利用准确性奖励(判断回答是否正确)+格式奖励(规范模型输出格式)对训练结果打分,反馈给模型做自我学习和优化。
DeepSeek团队在这里做了2个创新,也是支撑DeepSeek-R1成功的关键动作:
采用GRPO算法作为强化学习算法,以节省训练成本。
设计训练模板,引导模型先输出推理过程,再输出答案。
简单理解GRPO算法,可以看我图中紫色圆柱部分。当模型接收到一个问题后,基于当前策略让它生成多个可能的回答,再使用奖励机制对每个回答进行评分,根据评分,计算每个回答对于其他回答的“优势”(也就是相对所有回答的平均分,这个回答的分是不是会更高),最后,根据优势分值,调整模型策略,以提高未来回答的质量。
而训练模板,就是上图格式奖励方框中,绿色方框里的部分,即:要求模型把思考过程和答案同时输出。
其实这个模板最开始不是给用户看的,而是研究员自己观察用的,目的是看清楚模型在强化学习过程中是怎么自然发展和变化的,从而避免特定的内容偏差——比如强制反思推理,或者推崇特定的解题策略:
这个过程就有点像在代码调试的时候,在命令行中打印一些文字,以确保程序运行中没跑偏,写过代码的同学肯定都懂这个过程的痛苦……
最后的训练结果呢,正如论文中说的,模型不断自我进化,性能逐步提升,出现反思、探索等多种解题行为,甚至会涌现“aha moment”。
不过问题也很明显,R1-Zero在可读性差和语言混杂等难题上应对吃力,于是DeepSeek团队不得不重新思考一套新的解决方案,这才有了DeepSeek-R1。
DeepSeek-R1:基于冷启动的强化学习
正如我上文提到的,训练DeepSeek-R1一共经历了五个阶段,完整流程如下图:
第一个监督微调阶段(冷启动)
冷启动阶段,团队收集数千条长思维链(CoT)数据,对DeepSeek-V3-Base进行微调,目的是改善模型输出的可读性,为后续强化学习做准备。流程如下图
论文并没有公开这数千条长思维链数据是哪些,我按自己的理解,猜测可能会包含:数学计算和逻辑推理2类主要任务,根据对“收集监督微调数据”阶段的描述推断,可能还有一部分写作、实时性问答这类数据。
在读原文的时候,我注意到一个很有趣的细节,如上图中绿色虚线框所示:为提升可读性,冷启动阶段所构建的长思维链数据,定义了一种特殊格式的输出:
|special_token|
|special_token|
也就是说,要求模型除了输出 <推理过程> ,还要显示 <推理结果总结>
这个设计太巧妙了,看起来只是增加了一个
标记,但这个标记起着2个非常重要的作用:
第一,对微调的研究人员而言,可以方便他们快速理解模型的推理逻辑,并据此分析模型的推理路径是否合理,从而提升数据筛选效率,确保冷启动数据质量;
第二,对最终用户而言,
可以帮用户快速把握核心信息。实际上,如果你仔细观察DeepSeek展开的推理细节,会发现有些时候,就隐藏在其中:
第一个强化学习阶段(推理导向)
原文中,这个阶段叫:推理导向的强化学习。顾名思义,就是给冷启动后的模型,增强推理能力。具体做法嘛,DeepSeek-R1-Zero早就给打好样了,直接拿来用就好。
不过细心的你一定注意到了,二者的过程还不完全一样,按论文所说,为避免语言混杂的情况,他们又引入了一种新的奖励规则:语言一致性奖励(如上图黄框部分)。尽管会让性能略有下降,但结果上看符合人类偏好,也不是不能接受。
这个环节对我的启发是:一个有效且具备灵活扩展性的框架,对架构设计而言非常重要。
看起来这里只是加了一个新的奖励规则,但如果在R1-Zero的训练阶段,不用“奖励规则”这个思路实现,那解决语言一致性问题恐怕就要重构整个训练过程。
对我们做产品也是一样,一个好的逻辑结构划分,可以让产品在后续迭代优化时,只需改动一个小点,就能提升全局产品能力。这要求架构师具备充足的未来视野和极强的抽象能力,这也是个人成长所必备的基本能力。
收集监督微调数据
这里对应原文2.3.3 拒绝采样与监督微调。原文花了大量篇幅讲数据准备,所以我觉得有必要把它单独拿出来,形成一个独立环节,如下图所示:
为提升下阶段微调效果,DeepSeek团队准备了2类数据:60万个推理数据和20万个非推理数据。
对推理数据,使用拒绝采样,也就是只保留正确回复的方法,确保输出的可读性。又因为验证推理结果的方法有明确的逻辑链条,只需用模型来帮忙打分判断即可。具体方法,就是把推理结果和真实答案输入给DeepSeek-V3,让机器来评估,见上图上半部分的流程。这里学到的小技巧就是:能不用人的地方,就不用人
但对写作这类非推理数据,他们并不是用模型打分,而是直接让它来构建数据,方法也很巧妙,见上图中下半部分的流程。
为确保非推理数据的质量,他们会让V3模型输出带思维链的答案,然后把中间的推理过程去掉,只保留问题和答案,再把它们加入最终的数据池中。
此外,还加入了第一步冷启动时收集到的一部分非推理数据,这也是为什么我在上文提到,冷启动的数据,可能也包含了一部分写作和实时性问答。
最终,自己准备一部分,复用冷启动一部分,让模型生成一部分,一共组成了这20万非推理数据。
在阅读这一段的时候我在想,这20万非推理数据,会不会给DeepSeek-R1在解决创意类问题上带来瓶颈?
也许那些“模仿XXX来写作”的数据,就来自这20万中;
也许那些不说人话的“熵增熵减元认知”,也是学习自这20万数据。
非常好奇这20万非推理数据实际上长什么样子,取自哪里,由谁来进行清洗和评估的。而且我会认为,如果能有更优雅的方式来创造更多非推理数据,也许还能让模型的能力进一步提升。如果有同学知道,欢迎留言告知~
第二个监督微调阶段(2轮微调)
准备好数据后,才来到了真正的微调阶段,方法在原文也就一句话:
我们使用上述精心整理的约80万个样本的数据集,对DeepSeek-V3-Base进行两个轮次的微调。
注意,这里实际上是调了2轮,不知道是60万一轮20万一轮,还是80万调了两轮,说的还是比较模糊的。
第二个强化学习阶段
最后来到了第二个强化学习,也就是R1最终的训练阶段。
这一步的目的,是为了做对齐(align),也就是让模型的输出更符合人类偏好。
这里的偏好,包括有用性和无害性2个评估标准。而对齐也几乎是所有模型面向市场前的必经阶段。
做法上是用2个分支,分别针对2类数据做对齐。
先是针对推理数据,如上图上半部分。这里又一次请出了DeepSeek-R1-Zero的训练方法(所以我说,R1-Zero的训练方法贯穿始终),使用基于规则的奖励方法优化模型输出,并在其中加入对有用性和无害性评估。顺便再次使用这一方法训练推理数据,进一步强化其推理能力。
难点在一般性数据,什么叫一般性数据?我理解就是上阶段提到的非推理数据,比如上图我举的做巧克力蛋糕的例子。通常容易出事的也是这类数据,因为它的判断标准很难用规则衡量,所以这里DeepSeek团队只能用奖励模型来做判断。奖励模型可以根据人类对回复的偏好,给予模型生成的合适回复更高奖励。但具体他们用了什么奖励模型,也没有更多描述了。
最终,一个不仅在推理方面表现优异,同时将有用性和无害性放在重要位置的模型,就被训练出来啦!
这里插一句,原文有句话我没太读懂,也抛出来向大家请教:
We build upon the DeepSeek-V3 pipeline and adopt a similar distribution of preference pairs and training prompts.
翻译过来是:
我们以DeepSeek - V3的流程为基础,采用与它类似的偏好对分布和训练提示词。
不知道“以DeepSeek - V3流程为基础“是什么意思,基于DeepSeek - V3流程具体做了什么?所谓”类似的偏好对分布和训练提示词“又是什么意思?”与它类似“具体是指和什么类似?什么叫“偏好对”?DeepSeek - V3的训练提示词又是什么?这句话看得我一头雾水,我猜可能使用了和DeepSeek-V3一样的提示词库?不知道理解的对不对,求好心人解惑……
总结
写这篇文章的目的,一方面是不希望自己被网上铺天盖地的二手信息所裹挟,更希望通过对本源的探求,发现一些他人可能注意不到的细节和独特视角。
都说看懂一本书,要把自己想象成作者,而看懂一个模型,肯定是要尽量还原设计者的思考和逻辑。
我觉得借助图形将复杂概念可视化,是一种理解抽象问题特别好用的方法,这也是我做产品经理时最喜欢的必杀技,对着图形来讨论问题,往往能最快达成共识。也把这个技巧推荐给你。
最后再总览一下训练R1的这五个环节,可以把整个过程理解成教学生做题:
先用带详细解题步骤的例题,教会他基础的做题方法(第一阶段监督学习);
接着让他自己狂刷题,并给"步骤工整分"和"答案正确分"来知道他学习进步(第一阶段强化学习);
再筛选出优等生(包括文科生和理科生)的解题范例(收集监督微调数据)进行二次教学(第二阶段监督学习);
最后用"安全评分"过滤危险答案,用“实用评分”奖励优秀答案(第二阶段强化学习),最终教出一个能展示清晰思考路径、答案靠谱且不说怪话的学霸。
怎么样,你是否对R1的理解更进一步了呢?也欢迎你的留言与我讨论~
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.