策略梯度方法直接优化策略函数,而不是价值函数。通过梯度上升来最大化期望回报。
- 直接参数化策略 π(a|s;θ)
- 通过梯度上升优化策略参数 θ
- 目标:最大化期望累积奖励 J(θ)
∇J(θ)=Eτ∼p(τ∣θ)[∑t=0T−1∇logπθ(at∣st)⋅Qπθ(st,at)]
这个式子从何而来呢?
本质是梯度更新,希望参数能够做到:
argmaxθEτ∼p(τ∣θ)[R(τ)]
那下面这个式子就不难理解了,直接类比梯度上升:
θ←θ+α⋅∇logπθ(at∣st)⋅Gt
其中:
- θ: 策略参数
- α: 学习率
- Gt: 从时刻t开始的累积回报,Gt=∑k=0T−t−1γkrt+k+1
- πθ(at∣st): 参数化策略
轨迹τ=(s0,a0,r0,s1,a1,r1,…,sT)的概率为:
p(τ∣θ)=ρ0(s0)∏t=0T−1πθ(at∣st)P(st+1∣st,at)
其中:
- ρ0(s0): 初始状态分布
- P(st+1∣st,at): 环境转移概率(与θ无关)
- 蒙特卡洛方法: 使用完整episode计算回报
- 无偏估计: 使用真实回报Gt
- 高方差: 需要方差减少技术
θ←θ+α∑t=0T−1∇logπθ(at∣st)⋅Gt
- 初始化策略参数θ
- 对于每个episode:
- 使用当前策略πθ生成轨迹τ
- 计算每步的累积回报Gt=∑k=tT−1γk−trk+1
- 更新策略参数:θ←θ+α∑t=0T−1∇logπθ(at∣st)⋅Gt
- 重复直到收敛
∇J(θ)=E[∑t=0T−1∇logπθ(at∣st)⋅Gt]
∇J(θ)=E[∑t=0T−1∇logπθ(at∣st)⋅(Gt−b(st))]
其中b(st)是基线函数,常用选择:
- 状态价值基线: b(st)=Vπθ(st)
- 平均回报基线: b(st)=N1∑i=1NGt(i)
使用优势函数Aπθ(st,at)=Qπθ(st,at)−Vπθ(st):
∇J(θ)=E[∑t=0T−1∇logπθ(at∣st)⋅Aπθ(st,at)]
| 技术 | 公式 | 优点 | 缺点 |
|---|
| 无基线 | Gt | 简单直接,无偏估计 | 方差大,收敛慢 |
| 状态价值基线 | Gt−V(st) | 显著减少方差 | 需要额外估计V(s) |
| 平均回报基线 | Gt−Gˉ | 实现简单 | 效果有限 |
| Actor-Critic | r+γV(s′)−V(s) | 方差小,样本效率高 | 有偏估计 |
Gtnormalized=σG+ϵGt−μG
其中μG和σG分别是当前batch回报的均值和标准差。
用于off-policy学习:
∇J(θ)=Eτ∼πold[πold(τ)πθ(τ)∑t=0T−1∇logπθ(at∣st)⋅Gt]
| 参数 | 符号 | 推荐范围 | 影响 |
|---|
| 学习率 | α | 10−4∼10−2 | 收敛速度与稳定性 |
| 折扣因子 | γ | 0.9∼0.999 | 长期vs短期奖励权衡 |
| 批大小 | N | 32∼512 | 梯度估计质量 |
| 网络结构 | - | 64∼512 hidden | 表达能力vs过拟合 |
- 学习率: 从大到小逐步调整,观察损失曲线
- 网络结构: 简单任务用小网络,复杂任务适当增大
- 正则化: 适当使用Dropout和权重衰减
- 梯度裁剪: 防止梯度爆炸,通常设为0.5∼2.0
| 特性 | 策略梯度 | 价值方法 |
|---|
| 学习目标 | 直接优化策略 | 学习价值函数 |
| 连续动作 | 天然支持 | 需要特殊处理 |
| 收敛保证 | 局部最优 | 可能发散 |
| 样本效率 | 较低 | 较高 |
| 随机策略 | 支持 | 需要额外技巧 |