2.7 强化学习分类
强化学习(Reinforcement Learning, RL)研究的是:智能体(Agent)在环境(Environment)中通过交互学习策略(Policy),以最大化长期累计回报(Return)。它们共同把传统 Q-learning 从“小状态空间的表格算法”推进到“可处理高维状态(如图像)的深度学习算法”,使得强化学习第一次在复杂感知输入的任务上获得可规模化的成功。你看高手的比赛录像学习(行
2.7 强化学习分类
强化学习(Reinforcement Learning, RL)研究的是:智能体(Agent)在环境(Environment)中通过交互学习策略(Policy),以最大化长期累计回报(Return)。在实际算法与应用中,有几组非常关键的“分类维度”,它们决定了:数据怎么来、学什么、怎么更新、能不能复用旧数据、是否需要环境模型等。
本节从四个常见维度展开:Online vs Offline、Model-based vs Model-free、On-policy vs Off-policy、Value-based vs Policy-based,并用直观例子解释它们的差异与联系。
1)按数据来源划分:Online vs Offline
Online 强化学习
Online 的核心特征是:学习过程中,Agent 一边与环境交互收集数据,一边更新策略。数据是“边跑边收集”的新鲜数据。
一次交互轨迹(trajectory)通常写成时间序列:
τ=⟨s1,a1,r1,s2,a2,r2,⋯ ,sT,aT,rT⟩ \tau = \langle s_1, a_1, r_1, s_2, a_2, r_2, \cdots, s_T, a_T, r_T \rangle τ=⟨s1,a1,r1,s2,a2,r2,⋯,sT,aT,rT⟩
- sts_tst:时刻 ttt 的状态(state)
- ata_tat:时刻 ttt 的动作(action)
- rtr_trt:执行动作后获得的奖励(reward)
- TTT:轨迹长度(episode 长度)
典型场景:机器人学走路、自动驾驶决策、在线推荐实时优化、游戏对战(与环境持续交互)。
直观案例:
训练一个“迷宫寻路”智能体。它每次探索迷宫都会产生新的轨迹,策略更新后下一次探索行为会改变。数据分布随着策略变化而变化,这是 Online 的典型特征。
Offline 强化学习
Offline 的核心特征是:训练时不再与环境交互,而是给定一个提前收集好的数据集(offline dataset)进行学习。
离线数据集可以表示为很多条轨迹的集合:
D={τ(1),τ(2),⋯ ,τ(M)} \mathcal{D} = \{\tau^{(1)}, \tau^{(2)}, \cdots, \tau^{(M)}\} D={τ(1),τ(2),⋯,τ(M)}
或更常见地写成转移样本集合(transition dataset):
D={(si,ai,ri,si′)}i=1N \mathcal{D} = \{(s_i, a_i, r_i, s'_i)\}_{i=1}^N D={(si,ai,ri,si′)}i=1N
典型场景:医疗治疗策略(不能随便试错)、工业控制(线上试错成本巨大)、自动驾驶(用历史数据训练)。
直观案例:
医院有多年历史病历数据(状态=病人指标,动作=用药方案,奖励=康复结果)。训练时不能“在线试药”,只能用历史数据学习,这就是 Offline RL。
关键差异:Online 数据来自当前策略与环境交互;Offline 数据固定不变,学习过程无法主动探索新的状态动作区域。
2)按是否需要环境动态划分:Model-based vs Model-free
这里的“环境动态”指:环境如何从当前状态转移到下一个状态,以及奖励如何产生。通常用状态转移概率和奖励函数描述:
-
状态转移:
p(s′∣s,a) p(s'|s,a) p(s′∣s,a) -
奖励函数:
r(s,a) r(s,a) r(s,a)
Model-based 强化学习
Model-based 指:已知环境动态,或先学出一个环境模型,再利用模型做规划(planning)/搜索(search)来求策略。
如果模型已知,可用动态规划或贝尔曼方程进行计算;若模型未知但可学习,可以先学习一个近似模型:
p^ψ(s′∣s,a),r^ψ(s,a) \hat{p}_{\psi}(s'|s,a),\quad \hat{r}_{\psi}(s,a) p^ψ(s′∣s,a),r^ψ(s,a)
然后用这个模型来“想象(simulate)”未来,做决策。
直观案例:
棋类游戏(象棋/围棋)里,如果规则明确、状态转移完全可计算,那么可以在内部做树搜索(例如在动作树上评估未来局面),不一定需要大量真实交互。
Model-free 强化学习
Model-free 指:不显式学习或使用状态转移模型,直接从交互数据中学习价值函数或策略。
直观案例:
许多现实世界系统的动力学很复杂甚至不可写(真实机器人接触摩擦、风、弹性形变等)。Model-free 直接“用数据学策略”,不要求写出 p(s′∣s,a)p(s'|s,a)p(s′∣s,a) 的解析形式。
关键差异:Model-based 依赖(真实或学习的)环境模型进行规划;Model-free 不建模环境,直接用经验更新价值/策略。
3)按采样策略与更新策略划分:On-policy vs Off-policy
这一维度关注:采样数据的策略(Behavior Policy) 与 用来优化的策略(Target Policy) 是否一致。
- 行为策略:μ(a∣s)\mu(a|s)μ(a∣s)(用于与环境交互采样)
- 目标策略:π(a∣s)\pi(a|s)π(a∣s)(我们希望学到/优化的策略)
On-policy
On-policy 指:采样用的策略和更新的策略是同一个策略,即 μ=π\mu = \piμ=π。
典型例子:SARSA。它的更新使用“五元组”:
(st,at,rt,st+1,at+1) (s_t, a_t, r_t, s_{t+1}, a_{t+1}) (st,at,rt,st+1,at+1)
因为下一步动作 at+1a_{t+1}at+1 是从当前行为策略采样得到的。
直观案例:
一个新手玩家练习投篮,训练过程中他每次出手方式(策略)一变,采样到的训练数据也随之改变;他只能用自己当前的出手方式产生的数据来改进自己当前的出手方式。这就是 On-policy 的味道:数据紧跟当前策略。
优缺点直觉:
- 优点:更新更“贴合当前策略”,理论分析更直接
- 缺点:样本复用差(旧数据可能不再匹配当前策略),数据效率通常更低
Off-policy
Off-policy 指:采样策略和更新策略不同,即 μ≠π\mu \ne \piμ=π。可以用一种策略去探索收集数据,用另一种策略去学习/优化。
典型例子:Q-learning。它的更新常用“四元组”:
(st,at,rt,st+1) (s_t, a_t, r_t, s_{t+1}) (st,at,rt,st+1)
关键在于:目标动作不是行为策略采样来的,而是用贪心(或近似贪心)从当前 QQQ 函数中选的:
a′=argmaxaQ(st+1,a) a' = \arg\max_a Q(s_{t+1}, a) a′=argamaxQ(st+1,a)
所以 Off-policy 的核心特征是:更新目标可以不依赖行为策略实际选了什么动作。
直观案例:
你看高手的比赛录像学习(行为策略=高手),但你要学到的是“自己的最优策略”(目标策略)。你不需要跟高手一模一样地行动,但可以利用高手产生的数据来更新你想要的策略。
优缺点直觉:
- 优点:可复用历史数据,样本效率高(也是 DQN 能成功的重要原因)
- 缺点:分布偏移更显著,训练不稳定风险更高,需要稳定化技巧(回放池、目标网络等)
4)按“如何学出策略”划分:Value-based vs Policy-based
这组分类讨论的是:算法到底在优化什么对象。
Value-based
Value-based 的核心思想是:先学价值函数(Value Function),再从价值函数导出策略。策略往往隐式地来自“对价值的贪心选择”。
常见价值函数:
-
状态价值函数:
Vπ(s)=E[∑k=0∞γkrt+k∣St=s] V^{\pi}(s) = \mathbb{E}\left[\sum_{k=0}^{\infty}\gamma^k r_{t+k}\mid S_t=s\right] Vπ(s)=E[k=0∑∞γkrt+k∣St=s] -
动作价值函数:
Qπ(s,a)=E[∑k=0∞γkrt+k∣St=s,At=a] Q^{\pi}(s,a) = \mathbb{E}\left[\sum_{k=0}^{\infty}\gamma^k r_{t+k}\mid S_t=s, A_t=a\right] Qπ(s,a)=E[k=0∑∞γkrt+k∣St=s,At=a]
学到 QQQ 后,策略常用贪心导出:
π(s)=argmaxaQ(s,a) \pi(s) = \arg\max_a Q(s,a) π(s)=argamaxQ(s,a)
典型例子:Q-learning、DQN。
Policy-based
Policy-based 的核心思想是:直接学习显式策略 πθ(a∣s)\pi_{\theta}(a|s)πθ(a∣s),参数为 θ\thetaθ。
这类方法会最大化期望回报:
J(θ)=Eτ∼πθ[∑t=1Tγt−1rt] J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}}\left[\sum_{t=1}^{T}\gamma^{t-1} r_t\right] J(θ)=Eτ∼πθ[t=1∑Tγt−1rt]
然后用策略梯度一类的方法更新 θ\thetaθ。
直观差异:
- Value-based 更像:先学“每个动作有多值”,再选值最大的动作
- Policy-based 更像:直接学“在这个状态下应该怎么做”,并且通常天然支持连续动作
5)四组分类之间的常见组合
现实中这些维度会交叉组合:
- DQN:Offline/Online 混合采样(在线交互 + 回放池复用),Model-free,Off-policy,Value-based
- SARSA:通常 Model-free,On-policy,Value-based
- PPO:通常 Model-free,On-policy,Policy-based(或 Actor-Critic)
理解这些分类的意义在于:当你看到一个算法名字时,可以快速判断它的数据需求、稳定性风险、样本效率,以及适用环境的类型。
3.2.8 DQN(Deep Q-Network)
1)DQN 解决的问题:表格 Q-learning 不可扩展
Q-learning 在状态动作空间较小时,可以用“表格法”存储每个 (s,a)(s,a)(s,a) 的 Q(s,a)Q(s,a)Q(s,a)。更新规则为:
Q(st,at)←Q(st,at)+α[rt+γmaxaQ(st+1,a)−Q(st,at)] Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha\left[r_t+\gamma\max_a Q(s_{t+1},a)-Q(s_t,a_t)\right] Q(st,at)←Q(st,at)+α[rt+γamaxQ(st+1,a)−Q(st,at)]
- α\alphaα:学习率
- γ\gammaγ:折扣因子
- maxaQ(st+1,a)\max_a Q(s_{t+1},a)maxaQ(st+1,a):对下一状态最优动作的价值估计
- 方括号内部是时序差分误差(TD error)的形式
但当状态空间巨大(例如图像像素)或动作空间复杂时,表格无法存储所有状态动作对。
DQN 的核心做法:用神经网络来近似 QQQ 函数。
设一个带参数 www 的网络:
Qw(s,a)≈Q(s,a) Q_w(s,a)\approx Q(s,a) Qw(s,a)≈Q(s,a)
输入为状态(以及动作),输出为对应动作的价值估计。
2)DQN 的损失:让网络拟合 TD target
DQN 仍然遵循 Q-learning 的思想:当前 Qw(s,a)Q_w(s,a)Qw(s,a) 应该逼近“TD 目标(TD target)”。
先写 TD target(最基础形式):
y=r+γmaxa′Qw(s′,a′) y = r+\gamma\max_{a'}Q_w(s',a') y=r+γa′maxQw(s′,a′)
为了让预测 Qw(s,a)Q_w(s,a)Qw(s,a) 接近目标 yyy,构造均方误差损失(MSE):
LDQN=12N∑i=1N[Qw(si,ai)−(ri+γmaxa′Qw(si′,a′))]2 \mathcal{L}_{DQN}=\frac{1}{2N}\sum_{i=1}^{N}\left[Q_w(s_i,a_i)-\left(r_i+\gamma\max_{a'}Q_w(s'_i,a')\right)\right]^2 LDQN=2N1i=1∑N[Qw(si,ai)−(ri+γa′maxQw(si′,a′))]2
逐项解释(非常关键):
- 数据是一个 batch:{(si,ai,ri,si′)}i=1N\{(s_i,a_i,r_i,s'_i)\}_{i=1}^N{(si,ai,ri,si′)}i=1N
- 预测值:Qw(si,ai)Q_w(s_i,a_i)Qw(si,ai)
这是当前网络对“这一步采取的动作”的价值评估 - 监督信号(TD target):ri+γmaxa′Qw(si′,a′)r_i+\gamma\max_{a'}Q_w(s'_i,a')ri+γmaxa′Qw(si′,a′)
其中 maxa′Qw(si′,a′)\max_{a'}Q_w(s'_i,a')maxa′Qw(si′,a′) 表示在下一状态 si′s'_isi′ 下,按照当前估计最优动作获得的价值 - 损失用平方差:使预测值向目标靠近
注意:这个目标里含有同一个网络 QwQ_wQw 的输出,因此会出现“目标随网络变化而变化”的不稳定问题,这也是 DQN 要引入目标网络的根本原因之一。
3)DQN 是 Off-policy:目标动作不来自采样策略
DQN 的行为策略通常用 ϵ\epsilonϵ-greedy 来采样:
- 以概率 ϵ\epsilonϵ 随机探索
- 以概率 1−ϵ1-\epsilon1−ϵ 选择当前网络估计最优动作
写成公式:
at={random action,with prob. ϵargmaxaQw(st,a),with prob. 1−ϵ a_t = \begin{cases} \text{random action}, & \text{with prob. }\epsilon \\ \arg\max_a Q_w(s_t,a), & \text{with prob. }1-\epsilon \end{cases} at={random action,argmaxaQw(st,a),with prob. ϵwith prob. 1−ϵ
但在更新 TD target 时用的是:
maxa′Q(⋅) \max_{a'}Q(\cdot) a′maxQ(⋅)
这意味着目标动作由“价值最大化”决定,而不是由行为策略实际采样得到的 at+1a_{t+1}at+1 决定,因此它属于 Off-policy。
4)DQN 的两大关键改进
仅仅“用神经网络拟合 QQQ”并不足以稳定训练。DQN 的突破性稳定化来自两项关键机制:
改进 A:Replay Buffer(经验回放)
核心做法:维护一个经验回放池 RRR,把交互数据存起来,然后训练时从池中抽 batch。
回放池存储的典型样本是:
(st,at,rt,st+1) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1)
它带来两个直接收益:
(1)打破样本相关性,提高训练稳定性
在 MDP 中,连续采样的数据高度相关:st+1s_{t+1}st+1 由 sts_tst 生成,序列样本不是独立同分布。
神经网络对这种强相关序列非常敏感,容易“只拟合最近的轨迹”,导致训练震荡。
通过回放池随机采样,可以近似让训练数据更接近独立同分布,从而缓解相关性带来的不稳定。
(2)提高样本效率
监督学习里一个样本会被反复训练多次;而原始在线 Q-learning 每条样本通常只用一次就丢弃。
回放池让旧样本可以被重复抽到,从而显著提升样本利用率,尤其适合深度网络训练。
实际案例:
以 Atari 游戏为例,一个状态是屏幕图像。连续帧高度相似,如果直接用最新的连续帧更新网络,网络很容易陷入局部拟合;随机从回放池抽样可以混合不同时间段、不同局面的样本,使训练更稳。
改进 B:Target Network(目标网络)
问题来源:Target shift(目标漂移)
在损失里,目标 yyy 使用了网络 QwQ_wQw 的输出:
y=r+γmaxa′Qw(s′,a′) y = r+\gamma\max_{a'}Q_w(s',a') y=r+γa′maxQw(s′,a′)
当你更新 www 时,预测项 Qw(s,a)Q_w(s,a)Qw(s,a) 会变化,目标项 Qw(s′,a′)Q_w(s',a')Qw(s′,a′) 也在变化,相当于“追一个移动的目标”,容易发散或震荡。
解决办法:引入目标网络 Qw−Q_{w^-}Qw−
维护另一份参数 w−w^-w−,用于计算 TD target:
y=r+γmaxa′Qw−(s′,a′) y = r+\gamma\max_{a'}Q_{w^-}(s',a') y=r+γa′maxQw−(s′,a′)
这样损失变为:
LDQN=12N∑i=1N[Qw(si,ai)−(ri+γmaxa′Qw−(si′,a′))]2 \mathcal{L}_{DQN}=\frac{1}{2N}\sum_{i=1}^{N}\left[Q_w(s_i,a_i)-\left(r_i+\gamma\max_{a'}Q_{w^-}(s'_i,a')\right)\right]^2 LDQN=2N1i=1∑N[Qw(si,ai)−(ri+γa′maxQw−(si′,a′))]2
关键点:
- 当前网络 QwQ_wQw:负责被优化、每一步梯度更新
- 目标网络 Qw−Q_{w^-}Qw−:负责提供相对稳定的目标,不每一步都更新
- 目标网络更新方式:每隔固定步数 CCC,直接复制:
w−←w w^- \leftarrow w w−←w
直观案例:
你在练习射箭,QwQ_wQw 是你当前的瞄准方式,Qw−Q_{w^-}Qw− 是你上一阶段固定下来的“基准靶心估计”。如果靶心估计也跟着你每一次调整而剧烈变化,你会越练越乱;把靶心估计固定一段时间再更新,训练更稳定。
5)DQN 的完整算法流程(文字版)
- 随机初始化 Q 网络参数 www,得到 Qw(s,a)Q_w(s,a)Qw(s,a)
- 初始化目标网络参数 w−←ww^- \leftarrow ww−←w
- 初始化经验回放池 RRR
- 对每个 episode 重复:
- 重置环境得到初始状态 s1s_1s1
- 对每个时间步 ttt:
- 用 ϵ\epsilonϵ-greedy 基于 QwQ_wQw 选择动作 ata_tat
- 执行动作,得到奖励 rtr_trt 与下一状态 st+1s_{t+1}st+1
- 将 (st,at,rt,st+1)(s_t,a_t,r_t,s_{t+1})(st,at,rt,st+1) 存入回放池 RRR
- 当回放池数据足够时,从 RRR 采样 batch {(si,ai,ri,si′)}i=1N\{(s_i,a_i,r_i,s'_i)\}_{i=1}^N{(si,ai,ri,si′)}i=1N
- 用目标网络计算每个样本的 TD target:
yi=ri+γmaxa′Qw−(si′,a′) y_i = r_i+\gamma\max_{a'}Q_{w^-}(s'_i,a') yi=ri+γa′maxQw−(si′,a′) - 最小化损失更新 www:
LDQN=12N∑i=1N[Qw(si,ai)−yi]2 \mathcal{L}_{DQN}=\frac{1}{2N}\sum_{i=1}^{N}\left[Q_w(s_i,a_i)-y_i\right]^2 LDQN=2N1i=1∑N[Qw(si,ai)−yi]2 - 每隔固定步数 CCC,同步目标网络:
w−←w w^- \leftarrow w w−←w
6)把 DQN 放回“四大分类”中理解
- 数据来源:在线交互产生数据,但通过回放池反复复用,呈现“Online + 数据复用”的形态
- 是否建模环境:Model-free(不学习 p(s′∣s,a)p(s'|s,a)p(s′∣s,a))
- 采样与更新:Off-policy(行为策略是 ϵ\epsilonϵ-greedy,目标来自 maxQ\max QmaxQ)
- 学习对象:Value-based(学习 QQQ,策略由 argmaxQ\arg\max QargmaxQ 导出)
7)一个小结:为什么 DQN 成为深度强化学习的起点
DQN 的关键不只是“用深度网络拟合 QQQ”,更重要的是两套稳定训练的机制:
- Replay Buffer:打破序列相关性 + 提升样本效率
- Target Network:减缓目标漂移,提高训练稳定性
它们共同把传统 Q-learning 从“小状态空间的表格算法”推进到“可处理高维状态(如图像)的深度学习算法”,使得强化学习第一次在复杂感知输入的任务上获得可规模化的成功。
更多推荐



所有评论(0)