强化学习

图像分类的数据通常已经给定;智能体选择动作时,动作会改变接下来看到的数据。例如向左走会看到另一条走廊,某次探索还能带来以后才收到的奖励。强化学习研究怎样通过这种交互改善决策。

马尔可夫决策过程(MDP)

在时刻 tt,智能体获得状态 sts_t,按策略 π(a∣st)\pi(a\mid s_t) 选动作 ata_t,环境给出奖励 rt+1r_{t+1} 和下一状态 st+1s_{t+1}。一次经验可以记录为 (st,at,rt+1,st+1,dt)(s_t,a_t,r_{t+1},s_{t+1},d_t),其中 dtd_t 标记任务是否真正终止。

马尔可夫决策过程(MDP)用状态空间 S\mathcal S、动作空间 A\mathcal A、转移规律 P(s′,r∣s,a)P(s',r\mid s,a)、初始状态分布和折扣因子 γ\gamma 描述问题。马尔可夫性质表示:给定当前状态和动作,下一状态、奖励的分布不再需要更早历史。

现实中传感器往往只给观测 oto_t。一帧画面未必包含速度,两个相同画面可能需要不同动作。可以堆叠相邻帧或使用 RNN汇总历史,形成策略的输入表示;该表示是否充分仍取决于任务。

DQN 论文中的五种 Atari 游戏画面,包括 Pong、Breakout、Space Invaders、Seaquest 和 Beam Rider

图 1:Mnih 等,2013,Playing Atari with Deep Reinforcement Learning Figure 1,裁去周围正文。游戏屏幕提供观测,动作由控制器发出,分数变化提供奖励。

监督学习直接提供目标标签 yy;强化学习的奖励评价采取动作后的结果,通常没有告诉智能体当前最优动作是什么。训练数据随策略变化,并具有时间相关性。探索还会决定哪些动作得到尝试,从而影响估计的覆盖范围。

回报、价值与 Bellman 方程

从时刻 tt 开始的折扣回报为

Gt=∑k=0T−t−1γkrt+k+1.G_t=\sum_{k=0}^{T-t-1}\gamma^k r_{t+k+1}.

TT 是终止时刻,γ∈[0,1]\gamma\in[0,1] 控制未来奖励的权重。有限回合可取 γ=1\gamma=1;无限时域通常取 γ<1\gamma<1 并要求回报存在。若接下来两步奖励为 0、1,γ=0.9\gamma=0.9,则 Gt=0+0.9×1=0.9G_t=0+0.9\times1=0.9。奖励是某一步反馈,回报汇总了后续反馈。

状态价值和动作价值定义为

Vπ(s)=Eπ[Gt∣st=s],Qπ(s,a)=Eπ[Gt∣st=s,at=a].\begin{gathered} V^\pi(s)=\mathbb E_\pi[G_t\mid s_t=s],\\ Q^\pi(s,a)=\mathbb E_\pi[G_t\mid s_t=s,a_t=a]. \end{gathered}

期望包含环境随机性与策略后续的动作选择。根据 Gt=rt+1+γGt+1G_t=r_{t+1}+\gamma G_{t+1},有

Qπ(s,a)=Es′,r∣s,a[r+γ∑a′π(a′∣s′)Qπ(s′,a′)].\begin{aligned} Q^\pi(s,a)&=\mathbb E_{s',r\mid s,a}\Bigl[\\ &\quad r+\gamma\sum_{a'}\pi(a'\mid s')Q^\pi(s',a')\Bigr]. \end{aligned}

终止状态的后续价值取零。最优动作价值 Q∗Q^* 把下一步策略平均替换为最大值:

Q∗(s,a)=Es′,r∣s,a[r+γmax⁡a′Q∗(s′,a′)].Q^*(s,a)=\mathbb E_{s',r\mid s,a} \left[r+\gamma\max_{a'}Q^*(s',a')\right].

Bellman 关系把长序列问题写成“一步奖励加下一状态价值”。它为利用已有价值估计构造学习目标提供了依据。状态、策略、回报、价值函数与 Bellman 方程的定义可对照 OpenAI Spinning Up 的基本概念说明。

Q-learning

表格 Q-learning 为每个状态动作对存一个数。观测到一条转移后,构造目标和 TD 误差:

y=r+γ(1−d)max⁡a′Q(s′,a′),δ=y−Q(s,a),Q(s,a)←Q(s,a)+ηδ.\begin{gathered} y=r+\gamma(1-d)\max_{a'}Q(s',a'),\\ \delta=y-Q(s,a),\\ Q(s,a)\leftarrow Q(s,a)+\eta\delta. \end{gathered}

η\eta 是更新步长,d=1d=1 表示真正终止。TD 是 temporal difference,指这两个相邻时间位置估计之间的差异。

设当前 Q(s,a)=0.5Q(s,a)=0.5,本步奖励 r=1r=1,下一状态最佳动作价值为 2,γ=0.9,η=0.1,d=0\gamma=0.9,\eta=0.1,d=0。则 y=2.8y=2.8、δ=2.3\delta=2.3,更新为 0.730.73。若这一步已经终止,y=1y=1,更新为 0.550.55。

行为策略可以采用 ϵ\epsilon-greedy:以概率 ϵ\epsilon 随机选动作,其余时间选当前 Q 最大的动作。更新目标仍使用下一状态的最大 Q,因此它学习的目标策略可以与采样动作的行为策略不同,这称为 off-policy。探索概率、状态访问次数及步长都会影响实际学习;表格方法的收敛条件不能直接移植为神经网络的收敛保证。

深度 Q 网络(DQN)

状态空间很大时,用网络 Qθ(s,⋅)Q_\theta(s,\cdot) 输出所有离散动作的价值。一个输入四维状态、具有两个动作的教学网络可采用 4→64→64→24\to64\to64\to2 的 MLP,隐藏层用 ReLU。批次输入为 [B,4][B,4],输出为 [B,2][B,2],共 (4×64+64)+(64×64+64)+(64×2+2)=4610(4\times64+64)+(64\times64+64)+(64\times2+2)=4610 个参数。

输出中的两个数是预期回报估计,无需 softmax,也不要求位于 [0,1][0,1]。按动作下标 gather 后得到 [B][B] 的已执行动作价值,再与 [B][B] 的 TD 目标比较。

DQN 使用经验回放存储过去的转移,从中随机采样 batch,削弱连续帧相关性并复用数据。常用的目标网络版本另存参数 θˉ\bar\theta,计算

yi=ri+γ(1−di)max⁡a′Qθˉ(si′,a′),L(θ)=1B∑iℓ(Qθ(si,ai),yi).\begin{gathered} y_i=r_i+\gamma(1-d_i)\max_{a'}Q_{\bar\theta}(s'_i,a'),\\ L(\theta)=\frac1B\sum_i\ell(Q_\theta(s_i,a_i),y_i). \end{gathered}

ℓ\ell 可以是平方误差或 Huber 损失。计算 yiy_i 时停止梯度,只更新在线网络 θ\theta;每隔一定更新次数复制 θˉ←θ\bar\theta\leftarrow\theta,或按固定比例缓慢更新目标网络。回放缓冲区、在线网络、目标网络和优化器状态分别承担存数据、做预测、提供较稳定目标和更新参数的职责。

2013 年论文给出了经验回放与像素输入方法;这里的独立目标网络对应 2015 年 Nature DQN 的训练设计。上面的四维 MLP 是教学实例,论文 Atari 网络使用卷积处理图像。

下面片段展示一个回放 batch 的训练步骤。states/next_states 为 [B,4][B,4],actions 为整数 [B][B],rewards 为浮点 [B][B],terminated 为布尔 [B][B];online、target 均输出 [B,2][B,2]:

q_taken = online(states).gather(1, actions[:, None]).squeeze(1)
with torch.no_grad():
    next_q = target(next_states).max(dim=1).values
    td_target = rewards + 0.99 * (~terminated).float() * next_q
loss = torch.nn.functional.smooth_l1_loss(q_taken, td_target)
optimizer.zero_grad(set_to_none=True)
loss.backward()
torch.nn.utils.clip_grad_norm_(online.parameters(), 10.0)
optimizer.step()
# 按预先设定的更新间隔执行:target.load_state_dict(online.state_dict())

完整交互循环先采样动作,执行环境一步,把转移放入回放;缓冲区有足够数据后开始采样训练,定期更新目标网络。执行多少环境步与做多少梯度更新是两个计数,应分别记录。PyTorch DQN 教程提供了环境交互、回放和训练的完整实现。

终止与时间截断

到达任务终点或失败状态是 termination,后续回报为零。因采样预算耗尽而停止一段仍在继续的任务是 truncation,通常仍应从真实的最后观测估计后续价值。Gymnasium 分别返回 terminated 和 truncated;环境重置条件可用二者的或,TD 目标的 bootstrap 掩码要按任务终止语义设置。

若时间上限本来就是任务定义的一部分,剩余时间也应进入状态,到期按真正终止处理。自动重置的向量环境还要取到重置前的最后观测,不能把新回合第一帧当成 s′s'。Gymnasium 时间限制文档解释了此处对价值目标的影响。

策略梯度

另一条路线让网络输出策略 πθ(a∣s)\pi_\theta(a\mid s)。离散动作可用 softmax,连续动作可输出高斯分布的均值和尺度。策略按该分布采样动作,训练目标为最大化期望回报。

以有限回合、折扣目标 J(θ)=E[∑t=0T−1γtrt+1]J(\theta)=\mathbb E[\sum_{t=0}^{T-1}\gamma^t r_{t+1}] 为例,一种 Monte Carlo 策略梯度估计为

∇θJ≈1K∑k=1K∑t=0Tk−1γt⋅∇θlog⁡πθ(at(k)∣st(k))⋅(Gt(k)−b(st(k))).\begin{aligned} \nabla_\theta J&\approx\frac1K\sum_{k=1}^{K}\sum_{t=0}^{T_k-1}\gamma^t\\ &\quad\cdot\nabla_\theta\log\pi_\theta(a_t^{(k)}\mid s_t^{(k)})\\ &\quad\cdot\bigl(G_t^{(k)}-b(s_t^{(k)})\bigr). \end{aligned}

KK 是本次采样的轨迹数,GtG_t 为从 tt 起、相对该时刻折扣的回报,b(st)b(s_t) 是不依赖当前动作的基线。外侧 γt\gamma^t 对应本式从回合起点定义的折扣目标;若采用不折扣有限回合目标,取 γ=1\gamma=1。策略梯度的形式及函数逼近条件见 Sutton 等,1999。

直观上,优于基线的动作提高其对数概率,低于基线则降低。单步二动作例子中,策略 logits 为 [0,0][0,0],选了动作 0,优势取 2。用最小化形式 L=−2log⁡πθ(0∣s)L=-2\log\pi_\theta(0\mid s),其对 logits 的梯度为 [−1,1][-1,1]。学习率为 0.1 时更新后 logits 为 [0.1,−0.1][0.1,-0.1],动作 0 的概率从 0.5 增至约 0.5498。

策略损失中的回报或优势在本次反传中作为固定权重。直接重用很久以前策略采样的数据会改变估计,若没有相应的重要性修正,不能把普通 on-policy 更新当成任意回放算法。

Actor-critic

actor 输出动作分布,critic 估计 Vϕ(s)V_\phi(s)。两者可以共用编码器,也可以是独立网络。以 BB 个状态、AA 个离散动作为例,actor logits 为 [B,A][B,A],critic 输出为 [B][B]。

一阶 TD 优势估计为

A^t=rt+1+γ(1−dt)Vϕ(st+1)−Vϕ(st).\hat A_t=r_{t+1}+\gamma(1-d_t)V_\phi(s_{t+1})-V_\phi(s_t).

将 yt=rt+1+γ(1−dt)Vϕ(st+1)y_t=r_{t+1}+\gamma(1-d_t)V_\phi(s_{t+1}) 停止梯度后,critic 用 12(Vϕ(st)−yt)2\frac12(V_\phi(s_t)-y_t)^2 拟合目标。actor 用 −log⁡πθ(at∣st)stopgrad⁡(A^t)-\log\pi_\theta(a_t\mid s_t)\operatorname{stopgrad}(\hat A_t) 更新,若遵循前面的起点折扣目标,还应带上对应的 γt\gamma^t 权重。共享编码器时,总损失汇总两项的梯度,并明确 critic 权重。

例如 r=1,γ=0.9,V(s′)=2,V(s)=0.5r=1,\gamma=0.9,V(s')=2,V(s)=0.5,优势为 2.3,actor 提高已采动作概率,critic 把当前预测向 2.8 推近。critic 的自举减少等待整段回合的需要,也会引入价值估计误差。

可额外最大化策略熵 H(π)=−∑aπ(a∣s)log⁡π(a∣s)H(\pi)=-\sum_a\pi(a\mid s)\log\pi(a\mid s),在最小化目标里写成 −βH(π)-\beta H(\pi),β≥0\beta\ge0 控制探索鼓励强度。评价时固定采用采样还是贪心动作,不要混用两种策略的结果。价值函数、优势和策略优化的实践关系可参见 OpenAI Spinning Up 的策略优化推导。

训练与评价

先确定观测、动作、奖励和终止条件,再测随机策略或简单规则的回报。奖励缩放与裁剪会改变数值尺度,奖励设计还会决定模型愿意牺牲什么。例如仅奖励速度的导航策略可能频繁碰撞,所以报告应同时列出成功率、碰撞率和耗时。

训练时记录环境交互步数、梯度更新次数、探索设置和各随机种子的曲线。评价使用固定的环境版本、独立初始条件、回合数与时间上限;分开记录真正完成和超时。最终汇总多个独立训练种子,每个策略再运行多个评估回合。大量回合能减小某个策略的测试波动,不能替代多个训练种子来测量训练不稳定性。指标汇总与置信区间见评价与泛化。