1. 策略梯度定理的详细推导
强化学习中的策略梯度方法是直接优化策略参数的一类重要算法。作为从业多年的AI工程师,我经常需要从头推导这些基础理论来确保对算法的深刻理解。今天我们就来彻底拆解策略梯度定理的数学推导过程,我会用最直观的方式呈现每个步骤的物理意义和工程实现时的注意事项。
1.1 强化学习基础设定
在开始推导前,我们需要明确几个关键概念和符号约定。这些定义构成了策略梯度方法的理论基础:
-
马尔可夫决策过程(MDP):用五元组(S,A,p,r,γ)描述
- S:状态空间(如机器人位置坐标集合)
- A:动作空间(如电机控制指令集合)
- p(s'|s,a):状态转移概率(环境动力学模型)
- r(s,a,s'):即时奖励函数
- γ∈[0,1]:未来奖励的折扣因子
-
策略函数:πθ(a|s)表示在状态s下选择动作a的概率分布
- θ是可训练参数(如神经网络的权重)
- 通常用高斯分布表示连续动作,softmax表示离散动作
-
轨迹(Trajectory):τ = (s₀,a₀,r₀,s₁,a₁,r₁,...)
- 由初始状态分布p(s₀)和策略交互生成
- 轨迹概率密度:pθ(τ) = p(s₀)∏πθ(aₜ|sₜ)p(sₜ₊₁|sₜ,aₜ)
注意:环境动力学p(s'|s,a)与策略参数θ无关,这是后续推导中的关键性质
1.2 价值函数的定义
在策略梯度方法中,我们需要三类价值函数评估策略表现:
-
状态价值函数V^π(s):
从状态s开始,遵循策略π的期望回报:
V^π(s) = E_π[∑γᵏrₜ₊ₖ | sₜ=s] -
动作价值函数Q^π(s,a):
在状态s执行动作a后,再按π行动的期望回报:
Q^π(s,a) = E_π[∑γᵏrₜ₊ₖ | sₜ=s,aₜ=a] -
优势函数A^π(s,a):
动作a相对于策略平均表现的优势:
A^π(s,a) = Q^π(s,a) - V^π(s)
实际实现时,这些价值函数通常用神经网络近似估计。例如在A2C算法中,会用一个critic网络专门学习V^π(s)。
2.1 目标函数的建立
策略优化的核心目标是最大化期望回报:
J(θ) = E_{τ∼πθ}[R(τ)] = ∫pθ(τ)R(τ)dτ
其中R(τ)=∑γᵗrₜ是轨迹的折扣总回报。我们的任务是找到使J(θ)最大的参数θ*。
这个优化问题的难点在于:
- 期望涉及高维积分
- 概率分布pθ(τ)本身依赖于θ
- 需要处理credit assignment问题(如何将最终回报归因到各个动作)
2.2 梯度推导的关键步骤
第一步:梯度表达式转换
∇J(θ) = ∇∫pθ(τ)R(τ)dτ
= ∫∇pθ(τ)R(τ)dτ
= ∫pθ(τ)∇log pθ(τ)R(τ)dτ
= E[∇log pθ(τ)R(τ)]
这里使用了log-derivative技巧:∇p = p∇log p
第二步:分解轨迹概率
log pθ(τ) = log p(s₀) + ∑[log πθ(aₜ|sₜ) + log p(sₜ₊₁|sₜ,aₜ)]
求梯度时:
- ∇log p(s₀) = 0(初始状态与θ无关)
- ∇log p(sₜ₊₁|sₜ,aₜ) = 0(环境动力学与θ无关)
因此:
∇log pθ(τ) = ∑∇log πθ(aₜ|sₜ)
第三步:策略梯度初步形式
∇J(θ) = E[ (∑∇log πθ(aₜ|sₜ)) R(τ) ]
= ∑E[ ∇log πθ(aₜ|sₜ) R(τ) ]
这个形式已经可以用于REINFORCE算法,但存在高方差问题。
第四步:引入Q函数
注意到给定(sₜ,aₜ),未来回报的期望就是Q^π(sₜ,aₜ):
E[R(τ)|sₜ,aₜ] = Q^π(sₜ,aₜ)
因此可以改写为:
∇J(θ) = ∑E[ ∇log πθ(aₜ|sₜ) Q^π(sₜ,aₜ) ]
第五步:引入基线降低方差
对于任意只依赖sₜ的函数b(sₜ),有:
E[∇log πθ(aₜ|sₜ) b(sₜ)] = 0
因此可以选择b(sₜ)=V^π(sₜ)得到优势函数:
∇J(θ) = ∑E[ ∇log πθ(aₜ|sₜ) A^π(sₜ,aₜ) ]
其中A^π(sₜ,aₜ) = Q^π(sₜ,aₜ) - V^π(sₜ)
3.1 策略梯度定理的最终形式
经过上述推导,我们得到策略梯度定理的标准形式:
∇J(θ) = E_{τ∼πθ}[ ∑∇log πθ(aₜ|sₜ) A^π(sₜ,aₜ) ]
这个公式告诉我们:
- 梯度方向是增加高优势动作的概率
- 可以使用蒙特卡洛采样进行估计
- 必须使用当前策略生成的数据(on-policy)
3.2 工程实现的关键点
在实际实现策略梯度算法时,有几个重要技巧:
-
优势估计:
- 可以使用TD误差δₜ = rₜ + γV(sₜ₊₁) - V(sₜ)作为优势的近似
- 更精确的方法包括GAE(Generalized Advantage Estimation)
-
重要性采样:
- 允许重复使用旧策略的数据
- 需要添加重要性权重π_new/π_old
-
策略约束:
- 直接更新策略可能导致训练不稳定
- PPO等算法会限制策略更新的幅度
-
并行采样:
- 使用多个环境并行采样可以加速数据收集
- 需要处理各环境的不同episode长度
4.1 常见问题与调试技巧
在实现策略梯度算法时,经常会遇到以下问题:
问题1:训练不稳定,回报波动大
- 检查优势函数的标准化处理
- 减小学习率或使用自适应优化器
- 增加batch size减小方差
问题2:策略过早收敛到次优解
- 检查探索机制(如熵正则项)
- 尝试不同的策略初始化
- 调整折扣因子γ的值
问题3:价值函数估计不准确
- 验证价值函数网络结构是否足够
- 检查价值函数更新是否过于激进
- 考虑使用target network稳定训练
实际项目中的经验:在机械臂控制任务中,我们发现当γ>0.99时,价值函数估计误差会显著影响策略梯度方向。解决方案是使用双重critic网络和延迟更新。
4.2 策略梯度方法的变体
基于基本策略梯度定理,发展出了多种改进算法:
-
REINFORCE:
- 最简单的蒙特卡洛策略梯度
- 使用完整episode的回报作为基线
-
Actor-Critic:
- 同时学习策略和价值函数
- 通过bootstrapping降低方差
-
PPO:
- 引入策略更新约束
- 支持小批量更新
-
SAC:
- 最大化熵正则化的目标
- 自动调整温度系数
每种算法都有其适用场景。例如在需要精确控制更新幅度的连续控制任务中,PPO通常表现优异;而在需要保持探索的稀疏奖励环境中,SAC可能更合适。
5.1 数学细节补充
对于希望更深入理解理论基础的读者,这里补充几个关键数学细节:
Score Function的性质:
∇log πθ(a|s)被称为score function,它具有以下性质:
E[∇log πθ(a|s)] = 0
Cov(∇log πθ) = E[∇log πθ (∇log πθ)^T] 是Fisher信息矩阵
自然策略梯度:
原始梯度方向可能受参数化影响,自然梯度通过Fisher逆矩阵调整:
∇̃J(θ) = F(θ)^-1 ∇J(θ)
其中F(θ) = E[∇log πθ (∇log πθ)^T]
兼容性条件:
为保证价值函数近似不影响梯度一致性,需满足:
∇w Q_w(s,a) = ∇log πθ(a|s)
这意味着价值函数近似应该"兼容"于当前策略的参数化形式
5.2 实际应用案例
在我参与的工业机器人控制项目中,策略梯度方法展现了独特优势:
场景:四足机器人地形适应
- 状态空间:关节角度、角速度、地形高度图(128×128)
- 动作空间:12个关节的扭矩控制
- 奖励函数:前进速度、能量消耗、动作平滑度
解决方案:
- 使用CNN处理视觉输入
- PPO算法训练控制策略
- 课程学习从简单地形逐步过渡到复杂地形
关键发现:
- 优势函数的计算方式显著影响训练效率
- 分布式采样(16个环境并行)将训练时间从3天缩短到6小时
- 适当的熵系数(β≈0.01)能保持必要的探索
这个案例表明,策略梯度方法在处理高维感知-控制问题时,配合适当的工��技巧,能够实现出色的控制性能。
