1. 策略梯度方法入门:从直觉到数学
第一次接触策略梯度(Policy Gradients)这个概念时,我正试图训练一个玩Atari游戏的AI。当时最让我困惑的是:为什么不像监督学习那样直接给出正确动作?后来才明白,强化学习的核心在于让智能体通过试错自己发现最优策略。策略梯度方法正是实现这一目标的经典算法。
策略梯度属于策略优化方法的直接代表,与基于价值函数的方法(如Q-learning)形成鲜明对比。它的核心思想是通过参数化策略并沿性能梯度方向更新参数,逐步提高获得高回报动作的概率。想象你在教小狗做动作:当它偶然做出你想要的行为时,你立即给予奖励,这个行为后续出现的概率就会提高——策略梯度本质上就是在数学上实现这个过程。
关键区别:价值函数方法(如DQN)先评估状态或动作的价值,再从中推导策略;而策略梯度直接参数化并优化策略本身,更适合连续动作空间和高维问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 策略梯度核心原理拆解
2.1 策略参数化与目标函数
策略π(a|s;θ)表示在状态s下采取动作a的概率,由参数θ决定。我们的目标是找到最大化期望回报的θ:
J(θ) = E[Σγ^t r_t | πθ]
其中γ是折扣因子。通过梯度上升更新参数:
θ ← θ + α∇θ J(θ)
这个看似简单的公式背后蕴含着几个关键点:
- 梯度指向回报增长最快的方向
- 学习率α控制更新步长
- 期望回报包含从初始状态到终止的整个轨迹
2.2 策略梯度定理的推导
经过推导(详见附录数学细节),策略梯度可表示为:
∇θ J(θ) = E[∇θ log π(a|s;θ) Q^π(s,a)]
这个优雅的公式告诉我们:
- 梯度与动作概率的对数梯度成正比
- 用动作价值Q^π(s,a)作为权重
- 只需知道动作的相对优劣,无需绝对价值
在实际实现时,我们常用蒙特卡洛采样来估计这个期望:
∇θ J(θ) ≈ 1/N Σ_i Σ_t ∇θ log π(a_t^i|s_t^i;θ) G_t^i
其中G_t^i是从时刻t开始的累积回报。
3. 策略梯度算法实现详解
3.1 基础算法实现步骤
以REINFORCE算法为例,其伪代码如下:
- 初始化策略参数θ
- for 每个episode:
a. 根据π(a|s;θ)生成轨迹{s1
