01 强化学习基础概念
01 强化学习基础概念
本文档介绍理解 RLHF 所需的强化学习核心概念,为后续 PPO 和 RLHF 的数学推导打基础。
1. 强化学习问题描述
强化学习(Reinforcement Learning, RL)是一个序贯决策问题:
- 智能体(Agent) 在环境中采取行动
- 环境(Environment) 返回新状态和奖励
- 目标是学习一个策略(Policy),使得长期累积奖励最大化
1.1 核心概念
| 符号 | 含义 |
|---|---|
| 状态(State) | |
| 动作(Action) | |
| 策略:在状态 下选择动作 的概率 | |
| 奖励函数 | |
| 折扣因子 |
1.2 累积折扣奖励
智能体的目标是最大化长期累积奖励。从时刻 开始的累积折扣回报定义为:
这里 是在状态 采取动作 后获得的即时奖励。 也被称为 reward-to-go(从 往后的回报)。
1.3 状态价值函数
状态价值函数 :从状态 开始,按照策略 行动所能获得的期望累积奖励:
1.4 动作价值函数(Q 函数)
动作价值函数 :从状态 开始,采取动作 ,之后按照策略 行动的期望累积奖励:
1.5 优势函数
优势函数 :衡量某个动作相对于平均水平的"优势":
直观理解:
- :动作 比平均好
- :动作 比平均差
- :动作 是平均水平
2. Policy Gradient 定理
2.1 目标函数
策略优化的目标是找到一个参数化的策略 ,使得期望累积奖励最大化。
定义轨迹 ,整条轨迹的折扣回报为:
目标函数为:
2.2 策略梯度定理
定理:策略梯度的表达式为:
2.3 推导过程
Step 1:展开目标函数
其中轨迹概率为:
Step 2:对 求梯度
Step 3:使用 log-derivative trick
关键技巧:
这个等式直接来自链式法则:
Step 4:写成期望形式
Step 5:展开轨迹概率的 log 梯度
对 求梯度时,只有策略项含 :
Step 6:得到初步形式
这个形式有个问题:每个动作 都用整条轨迹的回报 来加权,包括 之前的奖励。但 之前的奖励跟动作 无关——动作只影响后续奖励.
Step 7:从 到
利用 EGLP(Expected Grad-Log-Prob)引理可以证明,把 换成 不改变期望值:
这样做的好处是降低方差: 只包含 能影响的奖励,剔除了无关的早期奖励。
2.4 直观理解
- :指向增大 的方向
- :如果从 开始的回报高,就增大这个动作的概率
核心思想:
- 好的动作(后续回报高)→ 增大概率
- 坏的动作(后续回报低)→ 减小概率
2.5 使用优势函数的形式
实践中常用优势函数替代 :
好处:进一步降低方差。 衡量的是「比平均好多少」,而不是绝对回报。
3. 重要性采样
3.1 问题背景
策略梯度需要从当前策略 采样。但每次更新后策略变了,旧数据就不能直接用了——每次都要重新采样,成本太高。
重要性采样解决了这个问题:用旧策略 采样一条轨迹,计算优势函数 ,然后通过重要性权重修正,用同一批数据反复更新策略。
3.2 重要性采样公式
证明:
3.3 应用到策略梯度
用旧策略 的样本估计新策略 的梯度:
定义重要性权重:
简化为:
4. KL 散度
4.1 定义
KL 散度(Kullback-Leibler divergence)衡量两个概率分布之间的差异:
对于连续分布:
4.2 性质
- 非负性:
- 等号成立条件: 当且仅当
- 不对称性: 一般成立
4.3 在 RL 中的应用
在策略优化中,我们希望新策略 不要离旧策略 太远,用 KL 散度约束:
这保证了策略更新的稳定性。
5. REINFORCE 算法
5.1 算法描述
REINFORCE 是最基础的 Policy Gradient 算法:
REINFORCE 算法:
1. 初始化策略参数 θ
2. For each episode:
a. 用当前策略 π_θ 生成一条轨迹 τ = (s_0, a_0, r_1, s_1, a_1, ...)
b. For each time step t:
- 计算 G_t = Σ_{k=t}^{\infty} γ^{k-t} r_{k+1}
- 更新:θ ← θ + α ∇_θ log π_θ(a_t | s_t) · G_t
3. 重复直到收敛
5.2 数学基础
更新公式:
这就是 Policy Gradient 定理的直接应用。
6. Actor-Critic 架构
REINFORCE 的核心问题:方差大。 来自单条轨迹,同状态同动作在不同轨迹中回报差异可能很大,训练不稳定。
解决思路:用神经网络估计期望回报,替代单条轨迹的真实回报。
- Actor:策略 ,选择动作
- Critic:价值函数 ,估计状态的期望回报
Critic 提供 baseline,Actor 根据相对优势调整策略。
6.1 优势函数估计
理论上 ,但 也需要估计。实践中的近似方法:
- 蒙特卡洛:,无偏但高方差
- TD 误差:,低方差但有偏( 依赖当前动作)
- n-step:看 步真实回报,剩余用 Critic 估计,折中
6.2 GAE
n-step 的问题: 怎么选?GAE 的想法是不选,把所有 n-step 融合,越远的项权重越小:
展开后中间项会在 时抵消,退化为蒙特卡洛; 时得到 -return,是蒙特卡洛和 TD 的平滑插值。
控制「多信真实回报还是多信 Critic」: 完全依赖 Critic(低方差有偏), 完全信真实回报(无偏高方差)。常用 。
实现在线更新:完整 GAE 需要等轨迹结束。实践中两种做法:
- 截断 GAE:只看未来 步, 步后就能更新
- Batch 更新:收集一小批数据后更新,而不是等整个 episode
6.3 Actor-Critic 算法
Actor-Critic 算法:
1. 初始化策略参数 θ,价值函数参数 φ
2. For each episode:
a. 用当前策略 π_θ 生成轨迹,收集 (s, a, r, s')
b. For each time step t:
- 计算 TD 误差:δ_t = r_{t+1} + γ V_φ(s_{t+1}) - V_φ(s_t)
- 用 GAE 计算优势:Â_t = Σ_l (γλ)^l δ_{t+l}
c. 更新 Actor:θ ← θ - α ∇_θ L^actor(θ)
d. 更新 Critic:φ ← φ - β ∇_φ L^critic(φ)
3. 重复直到收敛
- Actor 损失:。
- Critic 损失:。
相比 REINFORCE,Actor-Critic 牺牲无偏性换取低方差和高样本效率,且支持在线学习。
7. 总结
| 概念 | 定义 | 作用 |
|---|---|---|
| 策略 | 状态到动作的映射 | 决定智能体行为 |
| 价值函数 | 期望累积奖励 | 评估状态好坏 |
| Q 函数 | 状态-动作价值 | 评估动作好坏 |
| 优势函数 | 相对优势 | |
| Policy Gradient | 策略优化方向 | |
| 重要性采样 | 重用旧样本 | |
| KL 散度 | 分布间距离 | |
| GAE | 多步 TD 误差组合 | 低方差优势估计 |
8. 参考文献
- Sutton, R. S., & Barto, A. G. (2018). Reinforcement Learning: An Introduction. MIT Press.
- Schulman, J., et al. (2015). "Trust Region Policy Optimization." ICML.
- Schulman, J., et al. (2016). "Generalized Advantage Estimation." ICLR.
- Kakade, S. (2002). "A Natural Policy Gradient". NIPS.