

本博客基于西安交通大学强化学习课程 PPT 改编,历经 Gemini 以及本人总结以及整理形成。
离轨策略学习与 Q 学习#
离轨策略学习 (Off-Policy Learning) 回顾#
动机:为何需要离轨学习?
- 目标:通常我们想学习和评估的是最优策略 或某个特定目标策略 的价值 ()。
- 数据来源:但我们实际拥有的经验数据 往往是由另一个行为策略 (Behavior Policy) 生成的,这个策略可能更具探索性或完全不同。
- 重要性:
- 允许从观察中学习(例如,学习人类演示)。
- 可以复用历史数据(由旧策略生成)。
- 核心优势:可以在遵循探索性策略 进行数据收集的同时,学习到最优(通常是贪心)策略 。
- 甚至可以同时学习多个目标策略。
Q 学习 (Q-Learning):离轨 TD 控制#
Q 学习是强化学习中最著名和最广泛使用的算法之一,它是一种离轨的时序差分 (Off-Policy TD) 控制算法,直接学习最优动作价值函数 。
-
核心思想:Q 学习的更新基于贝尔曼最优方程:
对于一个观测到的转移 ,Q 学习使用 TD 方法来逼近这个目标:
- Q 学习 TD 目标 (Q-Learning TD Target):。它使用了在下一状态 所有可能动作中具有最大 Q 值估计的那个动作来形成目标,这隐式地代表了最优策略在 会采取的行动价值。
- Q 学习更新规则:
-
离轨 (Off-Policy) 特性:
- 关键在于 Q 学习的更新目标不依赖于实际执行的行为策略 在 时选择了哪个动作 。它总是使用 作为对未来最优回报的估计。
- 这意味着 Q 学习可以使用由任何能够保证持续探索所有状态-动作对的行为策略 (例如 -greedy)生成的数据,来学习最优动作价值函数 。
- 由于更新规则与行为策略 无关,Q 学习不需要使用重要性采样 (Importance Sampling) 来进行校正。
-
Q 学习控制算法 (表格形式):
算法参数: 步长 α ∈ (0, 1], 探索参数 ε > 0 (用于行为策略)
初始化:
对于所有状态 s ∈ S⁺, 所有动作 a ∈ A(s):
Q(s, a) ← 任意值 (例如 Q(s, a)=0)
Q(终止状态, ·) ← 0
循环 对每个 episode:
初始化 S (该 episode 的第一个状态)
循环 对 episode 中的每一步:
// (行为策略 μ) 根据当前 Q 值选择动作 A (例如使用 ε-greedy 策略)
A ← ε-greedy(S, Q)
执行动作 A, 观察得到奖励 R 和下一状态 S'
// Q 学习更新 (目标策略 π 是贪心策略)
如果 S' 是终止状态:
Target ← R
否则:
Target ← R + γ * max_{a'} Q(S', a')
Q(S, A) ← Q(S, A) + α * [Target - Q(S, A)]
S ← S'
直到 S 是终止状态
plaintext-
收敛性:在保证所有状态-动作对被无限次访问(通过行为策略)且步长参数满足 Robbins-Monro 条件的情况下,Q 学习保证收敛到最优动作价值函数 。
-
Sarsa vs. Q 学习 (悬崖行走 Cliff Walking 例子):
- Sarsa (同轨):学习其探索性行为策略(如 -greedy)的价值,倾向于选择更安全的路径以避免因探索而掉下悬崖,其学习过程中的平均回报可能更高。
- Q 学习 (离轨):直接学习最优(贪心)策略的价值,该策略可能包含风险(如贴着悬崖走)。即使 Q 函数收敛到最优值,其实际行为(由 -greedy 决定)仍可能导致偶尔失败。
- 区别:Sarsa 学习“如何在探索时表现良好”,Q 学习学习“最优情况下该怎么做”。
Q 学习相关问题与改进#
期望 Sarsa (Expected Sarsa)#
- 回顾:Sarsa 更新目标 使用了随机采样的下一个动作 。
- 期望 Sarsa 思想:使用下一状态 处动作价值的期望值代替采样值,以减小方差。
- 更新规则: 其中 是当前遵循的行为策略。
- 与 Q 学习关系:若 是贪心策略,则 ,期望 Sarsa 等价于 Q 学习。
最大化偏差 (Maximization Bias)#
- 问题:Q 学习(以及 Sarsa 在策略改进时)由于在更新目标中使用了 操作作用于带有噪声的 Q 值估计,会系统性地高估 (Overestimate) 真实的动作价值。
- 原因:。
- 危害:非均匀的高估可能导致算法偏好实际上次优的动作。
双 Q 学习 (Double Q-Learning)#
- 目的:解决最大化偏差问题。
- 核心思想:解耦目标动作的选择 (Selection) 和评估 (Evaluation)。维护两套独立的 Q 值估计 和 。
- 更新规则:随机选择更新 或 。
- 更新 时:用 选择 的最佳动作 ,但用 评估该动作 来计算 TD 目标。
- 更新 时:对称操作。
- 行为策略:通常基于 来选择动作 (例如 -greedy)。
- 效果:显著减少最大化偏差,得到更准确的价值估计。
价值函数近似 (VFA) 与深度强化学习 (DRL) 简介#
价值函数近似 (VFA)#
- 动机:当状态或动作空间巨大,无法使用表格存储所有 Q 值时(维度灾难)。
- 方法:使用参数化的函数 来近似 ,其中 是需要学习的参数。通常需要将状态 (有时包括动作 )表示为特征向量 或 。
- 学习:通过随机梯度下降 (SGD) 调整参数 ,以最小化近似值与 TD 目标之间的误差(例如均方误差)。
- Q 学习 VFA 更新:
- 挑战:“死亡三角” (Deadly Triad):当函数近似(尤其非线性)、自举(TD 方法)和离轨学习这三者结合时,训练过程可能不稳定甚至发散。
深度强化学习 (DRL)#
- 核心:使用深度神经网络 (DNN) 作为函数近似器 。利用 DNN 强大的表示能力处理高维输入(如图像像素)和复杂价值函数。
- 引例:深度 Q 网络 (DQN):下一节将详细讨论 DQN 及其关键技术,这些技术正是为了克服“死亡三角”带来的挑战。
深度 Q 网络 (Deep Q-Network, DQN) 及其改进#
DQN 标志着深度学习与强化学习成功结合的里程碑,尤其在处理高维输入(如 Atari 游戏)方面取得了突破。
DQN 核心思想#
- 使用深度神经网络(通常是 CNN + MLP) 来近似最优动作价值函数 。
- 输入为状态 (如游戏画面帧),输出为每个离散动作 的 Q 值。
- 基于 Q 学习进行训练,但需要引入特殊技术来保证稳定性和效率。
经验回放 (Experience Replay)#
- 问题:直接使用按时间顺序的经验训练 DNN 会因数据相关性导致训练不稳定,且样本效率低。
- 方法:将经验转移 存储在回放缓冲区 (Replay Buffer) 中。训练时,从 中随机均匀采样小批量 (mini-batch) 数据进行梯度更新。
- 优点:打破数据相关性,提高样本利用率。
目标网络 (Target Network)#
- 问题:Q 学习的 TD 目标 使用当前正在更新的网络 来计算目标值。这导致目标值随着 的微小变动而快速变化,容易造成训练不稳定(追逐移动的目标)。
- 方法:引入一个独立的目标网络 ,其参数 更新得比在线网络 慢得多。TD 目标使用目标网络计算: 在线网络 的更新目标是 。目标网络参数 定期(硬更新)或缓慢(软更新)从 复制/跟踪而来。
- 优点:提供了更稳定的 TD 目标,显著提高训练稳定性。
双 DQN (Double DQN)#
- 问题:即使使用了目标网络, 仍然存在最大化偏差问题,因为它在(可能带噪声的)目标网络 Q 值上取最大。
- 方法:结合目标网络和 Double Q-learning 的思想,解耦目标动作的选择和评估。
- 使用在线网络 选择下一状态 的最佳动作:。
- 使用目标网络 评估这个选定动作 的价值。
- Double DQN TD 目标:
- 优点:有效缓解最大化偏差,得到更准确的 Q 值估计。
优先经验回放 (Prioritized Experience Replay)#
- 问题:均匀采样经验可能效率不高,因为某些经验(通常是 TD 误差大的)包含更多学习信息。
- 方法:根据 TD 误差的绝对值赋予经验不同的优先级 。非均匀地采样经验,优先级高的经验被选中的概率更大。同时,使用重要性采样 (IS) 权重 来校正由此引入的偏差。
- 优点:聚焦于“有价值”的经验,加速学习过程。
对决 DQN (Dueling DQN)#
- 问题:标准 DQN 网络直接估计 Q 值,可能无法有效区分状态本身的价值和动作带来的相对优势。
- 方法:设计一种特殊的网络架构 (Dueling Network Architecture),将 Q 值分解为两部分:
- 状态价值 :由一个网络流输出。
- 动作优势 :由另一个网络流输出。
- 通过特定的聚合层将 和 合并得到最终的 ,例如使用均值聚合:
- 优点:能够更有效地学习状态价值,尤其在不同动作价值差异不大的情况下,通常能带来性能提升。
DQN 算法总结#
一个现代的 DQN 实现通常会结合上述多种技术:
初始化:
在线 Q 网络参数 w, 目标 Q 网络参数 w⁻ ← w
回放缓冲区 D (容量 N)
循环 对每个 episode:
初始化状态 S₁
循环 对于 t = 1, T:
选择动作 Aₜ ← 基于 Q(Sₜ, ·; w) 的 ε-greedy 策略
执行动作 Aₜ, 观察奖励 R_{t+1}, 下一状态 S_{t+1}
将转移 (Sₜ, Aₜ, R_{t+1}, S_{t+1}) 存入 D
// 从 D 中采样 N 个转移 (Sⱼ, Aⱼ, R_{j+1}, S_{j+1}) (可能使用优先回放)
// 计算采样权重 ωⱼ (如果使用优先回放,否则 ωⱼ=1)
对于每个采样的转移 j = 1 to N:
如果 S_{j+1} 是终止状态:
Targetⱼ ← R_{j+1}
否则:
// 使用 Double DQN 计算目标值
BestAction' ← argmax_{a'} Q(S_{j+1}, a'; w)
Targetⱼ ← R_{j+1} + γ * Q(S_{j+1}, BestAction'; w⁻) // 使用目标网络评估
// 计算损失,例如 Lⱼ = (Targetⱼ - Q(Sⱼ, Aⱼ; w))²
// (如果使用优先回放,可能需要用 ωⱼ 加权损失或梯度)
// 基于采样的 mini-batch 的总损失,执行一步梯度下降更新在线网络参数 w
// (例如,Δw ∝ Σⱼ ωⱼ * (Targetⱼ - Q(Sⱼ, Aⱼ; w)) * ∇w Q(Sⱼ, Aⱼ; w))
// 定期更新目标网络参数 w⁻
// 例如,每 C 步: w⁻ ← w (硬更新)
// 或每一步: w⁻ ← τw + (1-τ)w⁻ (软更新)
plaintext- Rainbow DQN:是一个著名的例子,它成功地将上述多种改进(以及 Noisy Nets、Distributional RL 等)结合起来,显著提升了性能。
结论#
- Q 学习是强化学习中一种强大且广泛应用的离轨 TD 控制算法,它直接学习最优动作价值函数。
- 处理大规模问题时,需要结合价值函数近似 (VFA),特别是使用深度神经网络 (DNN),即深度 Q 网络 (DQN)。
- 为了使 DQN 训练稳定、高效,发展出了一系列关键技术:经验回放、目标网络、双 DQN、优先经验回放、对决网络架构等。
- 这些技术的组合(如 Rainbow DQN)极大地推动了 DRL 在复杂任务上的成功应用。理解这些基本组件及其原理对于深入学习和应用 DRL至关重要。