type
status
date
slug
summary
tags
category
icon
password
🧠
笔者在研究生阶段相关的背景主要关于NLP中的知识蒸馏以及强化学习算法,因此最近在空闲时间出于感兴趣的角度对2025年1月发表在Arxiv上的DeepSeek-R1文章做了一个精读,并做下一些思考和笔记。
原文链接:

性能方面

notion image
这里是一个总体的和主要竞争对手OpenAI-o1系列产品在相关数据集上的表现总结,R1在大多数任务中取得了与o1相当甚至超越的水准。这一点在日常使用中也可以得到明显的验证。
而是什么因素使得DeepSeek-R1取得这样的效果呢,这篇文章主要从两个贡献方面进行了描述,同时在文章中也进行了详细的细节描述以及讨论。

贡献

大规模RL+基座模型,无需SFT作为初步步骤

在DeepSeek-R1成功之前,LLMs的主流探索领域主要集中在supervised fine-tuning (SFT)上。虽然此前也有直接将RL模型应用于基座模型的工作,但由于基座模型的质量问题以及训练pipeline设计等问题,并没有得到很好的效果。
该研究以DeepSeek-V3模型作为基座模型,直接将RL方法应用与基座模型中,这种方法允许模型探索出chain-of-thought (CoT)以有效解决复杂问题。RL为模型带来了反思的能力,这是第一个不使用SFT而通过RL激励LLMs推理能力的方法。

蒸馏的验证:小模型同样可以很强大

团队还利用DeepSeek-R1生成的推理数据微调了几个模型,结果表明蒸馏后的小模型表现出色。如DeepSeekR1-Distill-Qwen-7B在AIME2024中的结果达到了55.5%,该结果是超过了QwQ-32B-Preview模型的。而DeepSeek-R1-Distill-Qwen-32B在AIME2024上得分则达到了72.6%,这是超越了o1-mini性能的结果。

方法

阅读全文后,笔者认为全文较为关键的点在于DeepSeek-R1-Zero的训练模式,即使R1-Zero在原文中被提到存在Language mixing等问题,但从R1-Zero到R1的进化过程更多是细节上的调整及做加法,而从V3到R1-Zero的过程中开始引入了最具特色的“大规模RL+基座模型”方法。

GRPO算法

GRPO算法实质上是由DeepSeek团队在2024年提出的。在介绍GRPO算法之前,有必要先简单介绍一下on-policy RL和off-policy RL的区别,借用SJTU的张伟楠老师的一个比喻:“off-policy其实可以被理解为把数据放进了一个脸盆里面,洗手的时候可以到脸盆中来洗。”
本质上来讲,On-policy方法是基于policy-gradient的方法,特点是该方法一边实践一边学习,数据利用率较低。(the agent learned and the agent interacting with the env is same)
Off-policy方法则通过反复不断观察数据来提高数据利用率,引入了一个新的分布,其公式如下:
这一形式通过重要性采样(Importance Sampling)技术,使得智能体能够利用历史策略θ′收集的数据来更新当前策略θ,显著提升了数据复用率。然而,传统off-policy方法存在策略偏差和方差过大的问题,特别是在复杂环境或高维状态空间中,重要性权重pθ(τ)/′(τ)的计算极易失稳。

前置补充:PPO算法

近端策略优化(Proximal Policy Optimization, PPO) 由OPENAI在2017年提出,是一种基于策略梯度的强化学习算法,旨在通过限制策略更新的幅度来平衡训练效率与稳定性。其核心思想是通过引入替代目标函数(Surrogate Objective)裁剪机制(Clipping Mechanism),避免传统策略梯度方法(如TRPO)中复杂的约束计算。
策略梯度方法通过优化策略参数θ直接最大化期望回报,目标函数为:
其中为优势函数,是状态访问分布。策略更新通过梯度上升实现:
PPO使用重要性采样将旧策略与新策略的更新关联起来,定义重要性权重:
替代目标函数为:
其中CPI(Conservative Policy Iteration)需限制的变化幅度。 为防止策略更新过大,PPO 引入裁剪函数,将目标函数修改为:
其中为裁剪阈值(如0.2)。当时,限制;当时,限制,从而约束策略更新幅度。
PPO的最终目标函数结合了裁剪损失、价值函数误差和熵正则化项:
LVF 是价值函数均方误差;为策略熵,鼓励探索;为超参数。
优势函数通常通过广义优势估计(GAE)计算:
其中:
 
PPO算法及GRPO算法架构图(图源GRPO原文)
PPO算法及GRPO算法架构图(图源GRPO原文)
GRPO(Group Relative Policy Optimization,群体相对策略优化)是一种专为大型语言模型(LLMs)设计的强化学习算法,其核心在于通过组内输出的相对比较优化策略,而无需依赖传统PPO(Proximal Policy Optimization)中的额外价值网络(Critic Model)。两者的核心区别体现在三个方面:计算架构优势评估方式稳定性控制。PPO需要同时维护策略模型(Actor)和价值模型(Critic),通过广义优势估计(GAE)和裁剪机制优化策略,计算复杂度较高;而GRPO摒弃了Critic模型,直接通过同一问题下生成的多个响应的组内奖励对比来计算相对优势,显著降低了内存占用和计算成本。此外,GRPO通过动态梯度正则化和KL散度直接优化策略更新幅度,进一步提升了训练稳定性。

GRPO组成原理

组内相对奖励机制
GRPO的核心思想是让模型对同一输入生成多个响应(称为“组”),并通过组内奖励的分布计算每个响应的相对优势。具体而言:
  • 采样阶段:对于每个输入(如数学问题),模型生成一组候选输出(例如3-5个答案)。
  • 奖励评分:根据预设规则(如答案正确性、推理逻辑性)为每个输出分配绝对奖励值。
  • 优势计算:以组内平均奖励为基线,计算单个响应的相对优势:
GRPO的目标函数可由下式表示:
在前文中我们提到,GRPO摒弃了Critic模型,这一点从结构图中也可以看出,实质上是GRPO抛弃了Value Model,以此来大幅减少了算法的运算压力。而之所以可以不使用Value Model,实质上是因为在GRPO中不再需要GAE模块来计算优势(Advantage),而是使用以下方式进行计算:
具体而言,该方法通过sample一组outputs,每个outputs通过一个rule-based的reward function进行打分。基于打分去计算每一个输出的优势。从另一个角度来讲,PPO中的value function对价值的计算本质上也是估计的,而GRPO中的方式同样也可以实现估计的目的,同时减轻了算法的运算压力。

样本准备

A conversation between User and Assistant. The user asks a question, and the Assistant solves it. The assistant first thinks about the reasoning process in the mind and then provides the user with the answer. The reasoning process and answer are enclosed within <think> </think> and <answer> </answer> tags, respectively, i.e., <think> reasoning process here </think> <answer> answer here </answer>. User: prompt. Assistant:
这一步样本准备的核心是Assistant的输出应当是包含思考及回答的。

奖励信号

在以往的工作中,Reward Modeling是一个训练好的预训练模型,核心功能是根据LLMs的回答进行打分,根据打分进行反馈。在DeeoSeek-R1-Zero中,他们采用了一个Rule-based reward system,该系统主要包含两个部分:
  • 准确性奖励:准确性奖励模型评估回答是否正确。例如,对于结果确定的数学问题,模型需以指定格式(如方框内)呈现最终答案,从而可靠地通过基于规则的方法验证正确性。类似地,对LeetCode编程题可通过编译器基于预设测试用例生成反馈。
  • 格式奖励:除准确性奖励模型外,我们还采用格式奖励模型,强制要求模型将其思考过程置于‘think’和‘/think’标签之间。
用以上奖励信号传递给RL的策略梯度优化。

Aha Moment

文中还对一个有趣的现象—“Aha Moment”进行了介绍及讨论。下图为原文中展示的Aha Moment样例:
notion image
这是一个解方程的问题,标红的“Wait, wait…”即是Aha Moment。关于Aha moment的出现,强化学习从本质上来讲,其实是对概率分布的近似和建模,因此这些Wait反映在训练语料中实质上都是一些token,也就是高维空间下的一个向量,之所以出现Aha Moment,猜测是训练语料中有类似的数据,使得Wait这些词在向量空间中距离比较接近,因此出现了Aha moment。

DeepSeek-R1

其实到上一步DeepSeek-R1-Zero训练的完成,已经基本完成了从学术角度的创新,但Zero的表现还存在一些问题,比如原文中提到的Language-Mixing问题,也就是在一个回答中,可能中文夹杂英文,日文进行回答。这样的问题符合reward system的正确性判断,但无法实现良好的用户交互,因此在后续R1的提出中,团队进行了一些工程性的手段解决上述问题。

Cold Start

具体来讲,在这一部分团队搜集了一小部分的长思维链数据来微调基座模型,这些数据通过多种手段(如few-shot prompting)获得。

针对推理的RL

在SFT之后,用训练Zero同样的方式对R1进行训练,当RL开始收敛时,用一个稳定的验证的收集了SFT数据,用于后续的SFT,这里和前面的冷启动不同,这里收集的数据将全部用于推理的SFT,并且这里的数据是多领域的,包括写作,数学,代码等多个领域。同时,团队还准备了non-reasoning data用于解决简单无需思考的用户需求。
DeepSeek-R1训练流程
DeepSeek-R1训练流程