强化学习基础
1. 强化学习的基本概念
强化学习(Reinforcement Learning, RL)是机器学习的一个分支,它关注如何使智能体(agent)在与环境的交互中学习最优策略,以最大化累积奖励。与监督学习和无监督学习不同,强化学习强调通过试错(trial-and-error)来学习,而不是通过标记数据或预定义模式。
1.1 核心组件
强化学习系统包含以下核心组件:
- 智能体(Agent):学习和决策的实体,在大语言模型(LLM)的上下文中,智能体是语言模型本身。
- 环境(Environment):智能体交互的外部系统,提供状态和奖励信号。
- 状态(State):环境的当前情况,智能体基于此做出决策。
- 动作(Action):智能体可以执行的操作,在LLM中,动作通常是生成的文本或token。
- 奖励(Reward):环境对智能体动作的反馈,用于评估动作的好坏。
- 策略(Policy):智能体的决策规则,决定在给定状态下应该采取什么动作。
1.2 强化学习的目标
强化学习的目标是找到一个最优策略π*,使得从任何初始状态开始,按照该策略行动所获得的期望累积奖励最大化:
π ∗ = arg max π E [ ∑ t = 0 T γ t r t ] \pi^* = \arg\max_\pi \mathbb{E}\left[\sum_{t=0}^{T} \gamma^t r_t\right] π∗=argπmaxE[t=0∑Tγtrt]
其中:
- r t r_t rt 是在时间步t获得的奖励
- γ \gamma γ 是折扣因子(0≤γ≤1),用于平衡即时奖励和未来奖励
- T T T 是交互的总时间步数(可以是有限的或无限的)
1.3 强化学习在LLM中的应用
在大语言模型的上下文中,强化学习通常用于以下目的:
- 对齐人类偏好:使模型输出符合人类期望和价值观
- 提高特定能力:如推理、创造性、安全性等
- 优化特定任务性能:如数学问题求解、代码生成等
2. 策略优化方法简介
策略优化是强化学习中的一类方法,直接优化策略函数,而不是通过值函数间接优化。在LLM的上下文中,策略就是语言模型本身,它决定了给定输入后生成什么文本。
2.1 策略梯度方法
策略梯度方法是最基本的策略优化方法,它通过计算奖励相对于策略参数的梯度来更新策略:
∇ θ J ( θ ) = E τ ∼ π θ [ ∑ t = 0 T ∇ θ log π θ ( a t ∣ s t ) ⋅ R ( τ ) ] \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot R(\tau) \right] ∇θJ(θ)=Eτ∼πθ[t=0∑T∇θlogπθ(at∣st)⋅R(τ)]
其中:
- θ \theta θ 是策略参数
- π θ \pi_\theta πθ 是参数化的策略
- τ \tau τ 是一个轨迹(状态-动作序列)
- R ( τ ) R(\tau) R(τ) 是轨迹的累积奖励
策略梯度方法的主要问题是样本效率低和训练不稳定。
2.2 信任区域方法
信任区域方法通过限制每次更新的步长来提高训练稳定性。信任区域策略优化(Trust Region Policy Optimization, TRPO)是一种代表性算法,它在更新策略时添加了一个约束,确保新策略与旧策略的KL散度不会太大:
max θ E s , a ∼ π θ o l d [ π θ ( a ∣ s ) π θ o l d ( a ∣ s ) A π θ o l d ( s , a ) ] \max_\theta \mathbb{E}_{s,a \sim \pi_{\theta_{old}}} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} A^{\pi_{\theta_{old}}}(s,a) \right] θmaxEs,a∼πθold[πθold(a∣s)πθ(a∣s)Aπθold(s,a)]
subject to E s ∼ π θ o l d [ D K L ( π θ o l d ( ⋅ ∣ s ) ∣ ∣ π θ ( ⋅ ∣ s ) ) ] ≤ δ \text{subject to } \mathbb{E}_{s \sim \pi_{\theta_{old}}} \left[ D_{KL}(\pi_{\theta_{old}}(\cdot|s) || \pi_\theta(\cdot|s)) \right] \leq \delta subject to Es∼πθold[DKL(πθold(⋅∣s)∣∣πθ(⋅∣s))]≤δ
其中:
- A π θ o l d ( s , a ) A^{\pi_{\theta_{old}}}(s,a) Aπθold(s,a) 是优势函数,衡量动作a相对于平均表现的好坏
- D K L D_{KL} DKL 是KL散度,衡量两个分布的差异
- δ \delta δ 是允许的最大KL散度
TRPO的主要缺点是计算复杂,实现困难。
2.3 基于人类反馈的强化学习(RLHF)
基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)是一种特殊的强化学习方法,它使用人类反馈作为奖励信号。RLHF通常包括以下步骤:
- 监督微调(SFT):使用人类标记的数据对预训练模型进行微调
- 奖励模型训练:训练一个模型来预测人类对生成文本的偏好
- 强化学习:使用奖励模型的输出作为奖励信号,通过RL算法优化语言模型
3. 传统PPO算法及其局限性
3.1 近端策略优化(PPO)算法
近端策略优化(Proximal Policy Optimization, PPO)是一种流行的策略优化算法,它结合了TRPO的稳定性和实现简单性。PPO通过裁剪目标函数来限制策略更新的幅度,而不是像TRPO那样添加硬约束:
L C L I P ( θ ) = E t [ min ( r t ( θ ) A t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A t ) ] L^{CLIP}(\theta) = \mathbb{E}_t \left[ \min(r_t(\theta) A_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t) \right] LCLIP(θ)=Et[min(rt(θ)At,clip(rt(θ),1−ϵ,1+ϵ)At)]
其中:
- r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} rt(θ)=πθold(at∣st)πθ(at∣st) 是概率比率
- A t A_t At 是估计的优势
- ϵ \epsilon ϵ 是裁剪参数(通常为0.1或0.2)
PPO的完整目标函数通常还包括值函数损失和熵正则化项:
L T O T A L ( θ ) = E t [ L C L I P ( θ ) − c 1 L V F ( θ ) + c 2 S [ π θ ] ( s t ) ] L^{TOTAL}(\theta) = \mathbb{E}_t \left[ L^{CLIP}(\theta) - c_1 L^{VF}(\theta) + c_2 S[\pi_\theta](s_t) \right] LTOTAL(θ)=Et[LCLIP(θ)−c1LVF(θ)+c2S[πθ](st)]
其中:
- L V F L^{VF} LVF 是值函数损失
- S S S 是策略的熵
- c 1 , c 2 c_1, c_2 c1,c2 是系数
3.2 PPO在LLM中的应用
在大语言模型中,PPO通常用于RLHF的最后阶段。具体步骤如下:
- 使用当前策略(LLM)生成多个响应
- 使用奖励模型评估这些响应
- 计算优势函数
- 使用PPO更新LLM参数
3.3 传统PPO的局限性
尽管PPO在LLM训练中取得了成功,但它在处理复杂推理任务时存在以下局限性:
3.3.1 依赖价值模型
PPO需要一个单独的价值模型(critic)来估计每个响应的价值,这会使内存和计算需求加倍。价值模型的训练也复杂且容易出错,特别是对于具有主观或细微评估的任务。
3.3.2 样本效率低
PPO需要大量样本来稳定训练,这在计算资源有限的情况下是一个挑战。对于需要长思维链的复杂推理任务,生成足够的高质量样本尤其困难。
3.3.3 难以处理长期依赖
传统PPO难以有效处理需要长期规划和推理的任务,因为奖励信号通常是稀疏的,难以将远期结果与早期决策关联起来。
3.3.4 奖励塑造困难
为复杂推理任务设计适当的奖励函数是非常困难的。简单的奖励可能导致模型采取捷径,而复杂的奖励又难以计算和优化。
3.3.5 计算开销大
PPO需要同时维护和更新策略模型和价值模型,这增加了计算开销。对于已经很大的语言模型来说,这进一步增加了训练的难度。
这些局限性促使研究人员开发新的算法,如DeepSeek-R1中使用的群组相对策略优化(GRPO),以更有效地提升大语言模型的推理能力。