引言(Introduction)#
在之前的 DQN 等算法中,我们都是先学习价值函数 Q(s,a),再根据价值函数推导出策略(例如 ϵ-Greedy)。这类方法称为 Value-Based 方法。
但这类方法有一些局限:
- 无法处理连续动作空间:在连续动作中找 maxaQ(s,a) 非常困难。
- 无法学习随机策略:DQN 最终学到的是确定性策略,但在某些博弈场景(如剪刀石头布),随机策略才是最优的。
因此,我们引入 Policy-Based 方法:直接参数化策略 πθ(a∣s),通过调整参数 θ 来最大化期望回报。
策略的表示#
我们需要用一个函数(通常是神经网络)来表示策略。
随机策略 (Stochastic Policy)#
输入状态 s,输出动作的概率分布。
- 离散动作(如 Softmax):
π(a∣s;θ)=∑a′exp(Qθ(s,a′))exp(Qθ(s,a))
- 连续动作(如高斯分布):
π(a∣s;θ)=2πσ1exp(−2σ2(a−μθ(s))2)
通常网络输出均值 μθ(s) 和标准差 σθ(s)。
确定性策略 (Deterministic Policy)#
输入状态 s,直接输出动作值。
- 离散动作:a=argmaxaQθ(s,a) (不可微,无法直接用梯度下降)
- 连续动作:a=μθ(s) (可微,用于 DDPG 等算法)
策略梯度定理 (Policy Gradient Theorem)#
这是 Policy-Based 方法的基石。我们的目标是最大化期望回报 J(θ),通过计算梯度 ∇θJ(θ) 来更新参数。
目标函数#
J(θ)=Es0[Vπθ(s0)]
其中 s0 是初始状态。
梯度推导 (The “Hard” Part)#
我们需要计算 ∇θVπθ(s)。根据贝尔曼方程展开:
∇θVπθ(s)=∇θa∈A∑πθ(a∣s)Qπθ(s,a)=a∈A∑[∇θπθ(a∣s)Qπθ(s,a)+πθ(a∣s)∇θQπθ(s,a)]
这里的难点在于 ∇θQπθ(s,a),因为 Q 值本身也依赖于策略参数 θ(未来的动作会变)。我们继续展开 Q:
∇θQπθ(s,a)=∇θr,s′∑P(s′,r∣s,a)(r+γVπθ(s′))=s′∑P(s′∣s,a)γ∇θVπθ(s′)
注意:环境的动力学 P 和奖励 r 与 θ 无关,所以导数为 0。
代回原式,得递归形式:
∇θVπθ(s)=ϕ(s)a∈A∑∇θπθ(a∣s)Qπθ(s,a)+γa∈A∑πθ(a∣s)s′∈S∑P(s′∣s,a)∇θVπθ(s′)
定义转移概率 dπθ(s→s′,k) 为策略 πθ 从 s 出发走 k 步到达 s′ 的概率。反复迭代上述递归式:
∇θVπθ(s)=ϕ(s)+γs′∑d(s→s′,1)∇θV(s′)=ϕ(s)+γs′∑d(s→s′,1)[ϕ(s′)+γs′′∑d(s′→s′′,1)∇θV(s′′)]=…=x∈S∑k=0∑∞γkdπθ(s→x,k)ϕ(x)
引入状态访问分布#
回到总目标函数 J(θ) 的梯度:
∇θJ(θ)=Es0[∇θVπθ(s0)]=s∈S∑(k=0∑∞γkdπθ(s0→s,k))ϕ(s)
利用状态访问分布 νπθ(s) 的定义:
∑k=0∞γkdπθ(s0→s,k)∝νπθ(s)
我们得到了极其优雅的 策略梯度定理:
∇θJ(θ)∝s∈S∑νπθ(s)ϕ(s)=s∈S∑νπθ(s)a∈A∑∇θπθ(a∣s)Qπθ(s,a)
对数导数技巧 (Log-Derivative Trick)#
为了能在采样中计算,我们利用恒等式 ∇π=ππ∇π=π∇logπ:
∇θJ(θ)=Es∼νπθ[a∈A∑πθ(a∣s)∇θlogπθ(a∣s)Qπθ(s,a)]=Eπθ[∇θlogπθ(a∣s)Qπθ(s,a)]
核心结论:我们不需要知道环境的状态转移 P,也不需要对状态分布 ν(s) 求导。只要让智能体在环境里玩,收集数据,就可以计算梯度!
REINFORCE 算法#
REINFORCE 是最基础的策略梯度算法,它使用 蒙特卡洛方法 (Monte-Carlo) 来估计 Qπθ(s,a)。
对于一条完整的轨迹 τ={s1,a1,r1,…,sT,aT,rT},时刻 t 的真实回报 Gt 是 Q(st,at) 的无偏估计:
Qπθ(st,at)≈Gt=∑k=tTγk−trk
参数更新公式:
θ←θ+αγtGt∇θlogπθ(at∣st)
- 直觉:如果某个动作 at 带来了高回报 Gt,我们就增加它的概率(∇logπ 方向);如果回报低(甚至是负的),就减少它的概率。
算法伪代码#
∙Initialize policy parameters θ∙For episode e=1→E do:∙Generate trajectory τ={s1,a1,r1,…,sT,aT,rT}∼πθ∙For t=1→T do:∙Gt←k=t∑Tγk−trk∙θ←θ+αγtGt∇θlogπθ(at∣st)∙End For∙End For
优缺点分析#
- 优点:可以直接处理连续动作;学习到的随机策略可以探索;数学推导优美。
- 缺点:
- 方差极大:一局游戏的结果随机性很大,导致梯度估计不稳定。
- On-Policy:必须采集一条数据就更新一次,旧数据无法重复利用,效率低。
- 回合更新:必须等到游戏结束才能计算 Gt。
💡 思考:为了减小方差,我们通常会减去一个 基线 (Baseline) b(s),比如状态价值 V(s)。这不会改变梯度的期望,但能显著降低方差。这就是 Actor-Critic 算法的雏形(下一章内容)。