第三章:策略学习与连续控制

涵盖策略梯度、带基线的策略梯度、TRPO、连续控制(DPG、TD3)、不完全观测 RNN 及模仿学习(GAIL)。

策略学习

策略梯度方法

状态价值函数既依赖于当前状态 sts_t,也依赖于策略网络 π\pi 的参数 θ\theta,其定义为:

Vπ(st)=EAtπ(st;θ)[Qπ(st,At)]V_{\pi}(s_t)=\mathbb{E}_{A_t\sim \pi(\cdot \mid s_t;\theta)}[Q_{\pi}(s_t, A_t)]

如果一个策略很好,那么状态价值 Vπ(S)V_{\pi}(S) 的均值应该很大,因此定义目标函数:

J(θ)=ES[Vπ(S)]J(\theta) = \mathbb{E}_S[V_{\pi}(S)]

策略梯度定理

J(θ)θ=ES[EAπ(S;θ)[lnπ(AS;θ)θQπ(S,A)]]\frac{\partial J(\theta)}{\partial \theta} = \mathbb{E}_S\left[\mathbb{E}_{A\sim \pi(\cdot \mid S;\theta)}\left[\frac{\partial \ln \pi(A\mid S;\theta)}{\partial \theta} \cdot Q_{\pi}(S,A) \right] \right]

上述定理只有在状态 SS 服从马尔科夫链的稳态分布 d()d(\cdot) 的假设下才成立,而且缺少系数 1γn1γ\frac{1-\gamma^n}{1-\gamma},详细推导过程见《DRL》。

随机梯度 g(s,a;θ)Qπ(s,a)θlnπ(as;θ)g(s,a;\theta) \triangleq Q_{\pi}(s,a) \cdot \nabla_{\theta} \ln \pi(a\mid s;\theta) 是策略梯度 θJ(θ)\nabla_{\theta} J(\theta) 的无偏估计,可以做随机梯度上升来更新 θ\theta,但我们计算不出动作价值函数 Qπ(s,a)Q_{\pi}(s,a),所以需要方法来近似。

利用真实的 utu_t 近似 Qπ(s,a)Q_{\pi}(s,a),可以将随机梯度近似成下列表达式进而更新策略网络参数 θ\theta

g~(st,at;θ)=utθlnπ(atst;θ),θnewθnow+βt=1nγt1utθlnπ(atst;θnow)即随机梯度 g~(st,at;θnow)\tilde g(s_t, a_t;\theta) = u_t \cdot \nabla_{\theta} \ln \pi(a_t \mid s_t; \theta), \qquad \theta_{\text{new}} \leftarrow \theta_{\text{now}} + \beta \cdot \sum_{t=1}^n \gamma^{t-1} \cdot \underbrace{u_t \cdot \nabla_{\theta} \ln \pi(a_t \mid s_t; \theta_{\text{now}})}_{\text{即随机梯度 } \tilde g(s_t,a_t;\theta_{\text{now}})}

上述简化的推导问题出在状态的稳态概率分布并不知道,需要通过下列严谨推导:

θJ(θ)=ES1,A1[g(S1,A1;θ)]+γES1,A1,S2,A2[g(S2,A2;θ)]+γ2ES1,A1,S2,A2,S3,A3[g(S3,A3;θ)]++γn1ES1,A1,S2,A2,S3,A3,,Sn,An[g(Sn,An;θ)]\begin{aligned} \nabla_{\theta} J(\theta) = & \mathbb{E}_{S_1,A_1}[g(S_1, A_1;\theta)]\\ & + \gamma\cdot \mathbb{E}_{S_1,A_1,S_2,A_2}[g(S_2, A_2;\theta)]\\ & + \gamma^2 \cdot \mathbb{E}_{S_1,A_1,S_2,A_2, S_3, A_3}[g(S_3, A_3;\theta)]\\ & + \cdots\\ & + \gamma^{n-1} \cdot\mathbb{E}_{S_1,A_1,S_2,A_2, S_3, A_3, \cdots, S_n, A_n}[g(S_n, A_n;\theta)] \end{aligned}

通过轨迹 s1,a1,r1,s2,a2,r2,,sn,an,rns_1, a_1, r_1, \quad s_2, a_2, r_2, \quad \cdots, \quad s_n, a_n, r_n 对上式中期望做蒙特卡洛近似,得到:

θJ(θnow)g(s1,a1;θnow)+γg(s2,a2;θnow)++γn1g(sn,an;θnow)\nabla_{\theta} J(\theta_{\text{now}}) \approx g(s_1, a_1;\theta_{\text{now}}) + \gamma\cdot g(s_2, a_2;\theta_{\text{now}}) +\cdots + \gamma^{n-1}\cdot g(s_n, a_n;\theta_{\text{now}})

进一步将 Qπ(st,at)Q_{\pi}(s_t, a_t) 替换为 utu_t,得到:

g(st,at;θnow)utθlnπ(atst;θnow),θJ(θnow)=t=1nγt1utθlnπ(atst;θnow)g(s_t, a_t; \theta_{\text{now}}) \approx u_t \cdot \nabla_{\theta} \ln \pi(a_t \mid s_t;\theta_{\text{now}}), \qquad \nabla_{\theta}J(\theta_{\text{now}}) = \sum_{t=1}^n \gamma^{t-1} \cdot u_t \cdot \nabla_{\theta} \ln \pi(a_t\mid s_t;\theta_{\text{now}})

Actor-Critic 架构

Actor-critic 方法用价值网络 q(s,a;ω)q(s, a;\omega) 来近似随机梯度中未知的动作价值函数 Qπ(s,a)Q_{\pi}(s,a)

  • 策略网络 π(as;θ)\pi(a\mid s;\theta)(演员):基于状态 ss 给出动作 aa
  • 价值网络 q(s,a;ω)q(s,a;\omega)(评委):给演员的表现打分,评价在状态 ss 下做出动作 aa 的好坏程度。

将策略梯度的无偏估计中的 Qπ(s,a)Q_{\pi}(s,a) 用价值网络 q(s,a;ω)q(s,a;\omega) 进行近似,得到近似策略梯度:

g^(s,a;θ)q(s,a;ω)评委的打分θlnπ(as;θ)\hat g(s,a;\theta) \triangleq \underbrace{q(s,a;\omega)}_{\text{评委的打分}} \cdot \nabla_{\theta} \ln \pi(a\mid s;\theta)

注意 Actor-critic 方法中评委打分与策略学习的损失函数具有一致性,因此评委打分会越来越高,策略学习的目标是迎合评委的打分标准,所以价值网络的质量很重要。


带基线的策略梯度方法

基于策略梯度公式得出的 REINFORCE 和 actor-critic 方法效果通常不好,只需要微小改动即能大幅提升表现:把 bb 作为动作价值函数 Qπ(s,a)Q_{\pi}(s,a) 的基线(baseline),只要不依赖于动作 AA 的任意函数即可:

θJ(θ)=ES[EAπ(S;θ)[(Qπ(S,A)b)θlnπ(AS;θ)]]\nabla_{\theta} J(\theta) = \mathbb{E}_S\left[\mathbb{E}_{A\sim \pi(\cdot \mid S;\theta)}\left[(Q_{\pi}(S,A) - b) \cdot \nabla_{\theta} \ln \pi(A\mid S;\theta) \right] \right]

不论是让 b=0b=0 还是让 b=Vπ(S)b = V_{\pi}(S),对期望的结果毫无影响,都会等于 θJ(θ)\nabla_{\theta}J(\theta),因为:

θJ(θ)=ES[EAπ(S;θ)[bθlnπ(AS;θ)]]=0\nabla_{\theta} J(\theta) = \mathbb{E}_S\left[\mathbb{E}_{A\sim \pi(\cdot \mid S;\theta)}\left[b \cdot \nabla_{\theta} \ln \pi(A\mid S;\theta) \right] \right] = 0

数学证明

EAπ(s;θ)[blnπ(As;θ)θ]=bEAπ(s;θ)[lnπ(As;θ)θ]=baAπ(as;θ)lnπ(as;θ)θ=baAπ(as;θ)1π(as;θ)π(as;θ)θ=bθaAπ(as;θ)恒等于 1=0\begin{aligned} \mathbb{E}_{A\sim\pi(\cdot\mid s;\theta)} \left[b\cdot \frac{\partial \ln \pi(A\mid s;\theta)}{\partial \theta} \right] &= b \cdot \mathbb{E}_{A\sim\pi(\cdot \mid s;\theta)}\left[\frac{\partial \ln \pi(A\mid s;\theta)}{\partial \theta} \right]\\ & = b \cdot \sum_{a\in \mathcal{A}} \pi(a\mid s;\theta) \cdot \frac{\partial \ln \pi(a\mid s;\theta)}{\partial \theta}\\ & = b \cdot \sum_{a\in \mathcal{A}} \pi(a\mid s;\theta) \cdot \frac{1}{\pi(a\mid s;\theta)} \cdot \frac{\partial \pi(a\mid s;\theta)}{\partial \theta}\\ & = b \cdot \frac{\partial}{\partial \theta} \underbrace{\sum_{a\in \mathcal{A}} \pi(a\mid s;\theta)}_{\text{恒等于 1}}\\ & = 0 \end{aligned}

策略梯度可以近似为下面的随机梯度:

gb(s,a;θ)=[Qπ(s,a)b]θlnπ(as;θ)g_b (s,a;\theta) = [Q_{\pi}(s,a)-b] \cdot \nabla_{\theta} \ln \pi(a\mid s;\theta)

基线 bb 的最佳选择是状态价值 b=Vπ(s)=EAπ(s;θ)[Qπ(s,A)]b = V_{\pi}(s) = \mathbb{E}_{A\sim\pi(\cdot \mid s; \theta)}[Q_{\pi}(s,A)],此时梯度估计的方差最小。

  • 带基线的 REINFORCE 算法g~(s,a;θ)=[uv(s;ω)]θlnπ(as;θ)\tilde g(s,a;\theta) = [u-v(s;\omega)]\cdot \nabla_{\theta} \ln \pi(a\mid s;\theta)
  • Advantage Actor-Critic (A2C)g(s,a;θ)=[Qπ(s,a)Vπ(s)优势函数]θlnπ(as;θ)g(s,a;\theta) = [\underbrace{Q_{\pi}(s,a) - V_{\pi}(s)}_{\text{优势函数}}] \cdot \nabla_{\theta} \ln \pi(a\mid s;\theta)

A2C 中利用 TD 目标更新价值网络 v(s;ω)v(s;\omega)y^t=rt+γv(st+1;ω),δt=v(st;ω)y^t\hat y_t = r_t + \gamma \cdot v(s_{t+1};\omega), \qquad \delta_t = v(s_t;\omega) - \hat y_t 利用近似策略梯度更新策略网络: g~(st,at;θ)[rt+γv(st+1;ω)TD 目标 y^tv(st;ω)]θlnπ(atst;θ)\tilde g(s_t, a_t; \theta) \triangleq [\underbrace{r_t + \gamma \cdot v(s_{t+1};\omega)}_{\text{TD 目标 } \hat y_t} - v(s_t;\omega)]\cdot \nabla_{\theta} \ln \pi(a_t \mid s_t; \theta)


策略学习高级技巧

1. 置信域策略优化 (TRPO)

置信域策略优化(trust region policy optimization,TRPO)有两个优势:第一,表现更稳定,收敛曲线不会剧烈波动,对学习率不敏感;第二,用更少的样本就能达到与策略梯度方法相同的表现。

构造函数 L(θθnow)L(\theta \mid \theta_{\text{now}}) 来替代目标函数 J(θ)J(\theta) 进行优化,在置信域 N(θnow)={θθθnow2Δ}\mathcal{N}(\theta_{\text{now}}) = \{\theta \mid \lVert\theta-\theta_{\text{now}}\rVert_2 \leq \Delta \} 内:

L(θθnow)=1nt=1nπ(atst;θ)π(atst;θnow)Qπ(st,at)L(\theta\mid \theta_{\text{now}}) = \frac{1}{n} \sum_{t=1}^n \frac{\pi(a_t\mid s_t; \theta)}{\pi(a_t \mid s_t; \theta_{\text{now}})} \cdot Q_{\pi}(s_t,a_t)

求解带约束的最大化问题:

maxθL~(θθnow)s.t. θN(θnow)\max_{\theta} \tilde L(\theta\mid \theta_{\text{now}}) \qquad \text{s.t. } \theta\in \mathcal{N}(\theta_{\text{now}})

其中的置信域约束可以是 KL 散度:

1ti=1tKL[π(si;θnow)π(si;θ)]Δ\frac{1}{t} \sum_{i=1}^t \mathrm{KL} [\pi(\cdot \mid s_i;\theta_{\text{now}}) \| \pi(\cdot \mid s_i;\theta) ]\leq \Delta

2. 熵正则化 (Entropy Regularization)

为了防止策略输出过早集中在单个动作上,增加熵项奖励不确定性:

Entropy(p)=i=1tpilnpi\mathrm{Entropy}(p) = -\sum_{i=1}^t p_i \cdot \ln p_i

最大化目标函数:

maxθJ(θ)+λES[H(s;θ)]\max_{\theta} J(\theta) + \lambda\cdot \mathbb{E}_S[H(s;\theta)]


连续控制

对高维连续动作空间,确定策略梯度(deterministic policy gradient,DPG)直接输出连续动作 a=μ(s;θ)a = \mu(s;\theta)

TD3 (Twin Delayed Deep Deterministic Policy Gradient)

为了解决 DPG 中的估算偏差与高估问题,TD3 引入了三个关键技巧:

  1. 截断双 Q 学习 (Clipped Double Q-learning): 使用两个目标价值网络求值,取两者中较小者作为 TD 目标: y^j,1=rj+γq(sj+1,a^j+1;ω1),y^j,2=rj+γq(sj+1,a^j+1;ω2)\hat y_{j,1} = r_j + \gamma \cdot q(s_{j+1},\hat a_{j+1}^-; \omega_1^-), \quad \hat y_{j,2} = r_j + \gamma \cdot q(s_{j+1},\hat a_{j+1}^-; \omega_2^-) y^j=min(y^j,1,y^j,2)\hat y_j = \min(\hat y_{j,1}, \hat y_{j,2})

  2. 目标动作平滑正则化: 在目标网络输出的动作中加入截断正态分布噪声 ξCN(0,σ2,c,c)\xi \sim \mathcal{CN}(0, \sigma^2, -c, c)a^j+1=μ(sj+1;θ)+ξ\hat a_{j+1}^- = \mu(s_{j+1};\theta^-) + \xi

  3. 延迟策略更新: 让策略网络 μ\mu 以及目标网络的更新频率低于价值网络 qq,确保价值估计稳定后再更新策略。


对状态的不完全观测

在实际应用中,完全观测假设存在缺陷。对于不完全观测问题,可以用历史观测序列 o1:to_{1:t} 代替状态 ss

π(at;o1:t;θ)\pi(a_t;o_{1:t};\theta)

利用**循环神经网络(RNN)**将观测序列映射为特征向量,用以构建策略网络、DQN 和价值网络。


模仿学习 (Imitation Learning)

模仿学习的目标是向人类专家学习策略。

  • 行为克隆 (Behavior Cloning): 对专家轨迹 (s,a)(s, a) 直接做监督学习。

    • 连续控制损失:L(s,a;θ)12[μ(s;θ)a]2L(s,a;\theta) \triangleq \frac{1}{2} [\mu(s;\theta) - a]^2
    • 离散控制损失:H(aˉ,f)i=1AaˉilnfiH(\bar a, f) \triangleq -\sum_{i=1}^{\mathcal{A}}\bar a_i \cdot \ln f_i
    • 缺点:存在“错误累加”效应,面对稀有状态时表现糟糕。通常仅用于策略网络初始化。
  • 逆向强化学习 (Inverse RL / IRL): 从专家的行为中反推其隐含的奖励函数 RR^*,然后再做强化学习。

  • 生成判别模仿学习 (GAIL): 基于 GAN 思想,利用策略网络充当生成器,判别器 D(s,a;ϕ)D(s, a; \phi) 区分专家轨迹与智能体生成的轨迹。策略网络以 lnD(st,at;ϕ)\ln D(s_t, a_t;\phi) 为回报使用 TRPO 进行训练。