本内容暂时为 PPT 转述,后续会进行修编
Q学习 (Q-Learning) 与相关概念#
离轨策略学习回顾 (Off-Policy Learning Review)#
- 动机 (Page 3):为什么要进行离轨策略学习?
- 评估策略:需要估计目标策略 π 的价值 vπ 或 qπ。
- 数据来源:但我们拥有的数据(经验片段)可能是由另一个行为策略 μ 生成的 {S1,A1,R2,…,ST}∼μ。
- 重要性:
- 允许从观察中学习(例如,观察人类或其他智能体的行为)。
- 能够复用过去策略产生的旧数据。
- 可以在遵循探索性策略 μ 的同时,学习到最优策略 π∗。
- 可以在遵循一个策略的同时学习多个其他策略。
- 离轨 TD 预测回顾 (Off-Policy TD Prediction Recap) (Page 4):
- 使用重要性采样 (IS) 来修正 TD 目标。更新 V(St) 时,用一步 IS 比率 μ(At∣St)π(At∣St) 加权 TD 误差项中的目标部分 (Rt+1+γV(St+1))。
V(St)←V(St)+α(μ(At∣St)π(At∣St)(Rt+1+γV(St+1))−V(St))
- 相较于 MC 的重要性采样,TD 的 IS 方差通常更低,因为它只涉及一步的策略比。
Q学习 (Q-Learning):离轨 TD 控制#
Q学习是一种直接学习最优动作价值函数 q∗(s,a) 的离轨 TD 控制算法。
- 核心思想 (Page 5-8):
- 回顾 Sarsa (同轨) 更新 Q 值:Q(St,At)←Q(St,At)+α[Rt+1+γQ(St+1,At+1)−Q(St,At)]。其目标 Rt+1+γQ(St+1,At+1) 依赖于下一个实际采取的动作 At+1。
- Q学习的目标是学习 q∗。回顾 q∗ 的贝尔曼最优方程:
q∗(s,a)=E[Rt+1+γa′maxq∗(St+1,a′)∣St=s,At=a]
- Q学习直接使用这个方程来构造 TD 目标。对于观测到的转移 (St,At,Rt+1,St+1):
- Q学习目标 (Q-Learning Target):Rt+1+γmaxa′Q(St+1,a′)。它使用了在下一状态 St+1 上所有可能动作中最大的 Q 值估计,隐式地假设了从 St+1 开始将遵循最优(贪心)策略。
- Q学习更新规则:
Q(St,At)←Q(St,At)+α[Q-Learning TargetRt+1+γa′maxQ(St+1,a′)−Q(St,At)]
- 离轨特性 (Off-Policy Nature) (Page 9, 13):
- Q学习的更新目标 Rt+1+γmaxa′Q(St+1,a′) 不依赖于行为策略 μ 在 St+1 实际选择的动作 At+1。
- 它直接使用对最优后续价值(max 操作)的估计来更新 Q(St,At)。
- 因此,Q学习可以使用任何能保证持续访问所有状态-动作对的行为策略 μ(例如 ϵ-greedy)生成的数据,来学习最优动作价值函数 q∗,而不需要重要性采样。
- Q学习控制算法 (Q-Learning Control Algorithm) (Page 12):
算法参数: 步长 α ∈ (0, 1], 小的 ε > 0
初始化 Q(s, a) 任意, 对所有 s ∈ S⁺, a ∈ A(s), Q(终止状态, ·) = 0
对 每个 episode 循环:
初始化 S
对 episode 中的每一步循环:
// (行为策略) 使用从 Q 推导出的策略 (例如 ε-greedy) 在 S 处选择动作 A
执行动作 A, 观察奖励 R, 下一状态 S'
// Q学习更新 (目标策略是贪心策略)
Q(S, A) ← Q(S, A) + α * [R + γ * max[a'] Q(S', a') - Q(S, A)]
S ← S'
直到 S 是终止状态
plaintext
- 收敛性:在满足步长条件和持续探索(行为策略保证)的条件下,Q学习收敛到最优动作价值函数 q∗。
- Sarsa vs. Q学习 (Page 12 例子:悬崖行走 Cliff Walking):
- 场景:智能体从 S 到 G,每步奖励 -1,掉入悬崖区域奖励 -100 并回到 S。
- Sarsa (同轨):学习其 ϵ-greedy 行为策略的价值。因为它有时会随机走到悬崖边然后掉下去,所以它会学到悬崖边很危险,倾向于走一条更安全但稍长的路径。平均每幕回报较高(因为避免了 -100 的惩罚)。
- Q学习 (离轨):学习最优(贪心)策略的价值。最优策略是贴着悬崖边走(最短路径)。虽然 Q学习学到了最优策略,但由于它的行为策略仍然是 ϵ-greedy,它在执行时还是会偶尔掉下悬崖。因此,在学习过程中的平均每幕回报可能低于 Sarsa。
- 关键区别:Sarsa 学习“如何安全地行动(根据实际探索行为)”,Q学习学习“如何最优地行动(无视探索风险)”。
期望 Sarsa (Expected Sarsa)#
期望 Sarsa 是 Sarsa 的一种变体,旨在降低其更新目标的方差。
- 核心思想 (Page 14):Sarsa 的更新目标 Rt+1+γQ(St+1,At+1) 使用了采样的下一个动作 At+1。期望 Sarsa 则使用下一状态 St+1 处期望的 Q 值来代替。
- 更新规则 (Page 15):
Q(St,At)←Q(St,At)+α[Rt+1+γEπ[Q(St+1,At+1)∣St+1]−Q(St,At)]
其中 π 是智能体当前遵循的策略(例如 ϵ-greedy)。
- 与 Q学习的关系 (Page 15):如果策略 π 是关于当前 Q 值的贪心策略,那么 ∑a′π(a′∣St+1)Q(St+1,a′)=maxa′Q(St+1,a′),此时期望 Sarsa 的更新规则等价于 Q学习的更新规则。因此,Q学习可以看作是期望 Sarsa 在目标策略为贪心策略时的特例。
- 优点:通常比 Sarsa 方差更小,性能可能更稳定。
- 性能比较 (Page 16):实验表明,期望 Sarsa 在某些问题上可能比 Sarsa 和 Q学习表现更好。
最大化偏差与双学习 (Maximization Bias and Double Learning)#
- 最大化偏差 (Maximization Bias) (Page 17):
- Q学习和其它一些使用 max 操作来估计最优价值的算法(如 Sarsa 在策略改进时隐式使用)会系统性地高估 (Overestimate) 动作价值。
- 原因 (Page 18-20):max 操作作用于带有噪声的估计值 Q(s,a) 时,其结果的期望值会大于真实最大值 maxaq∗(s,a)。即 E[maxaQ(s,a)]≥maxaE[Q(s,a)]=maxaq∗(s,a)。Q学习使用 maxa′Q(St+1,a′) 作为 TD 目标的一部分,这个目标本身就是有偏的(偏高),并且通过自举 (bootstrapping) 将这种偏差传播和放大。
- 危害 (Page 21-22):如果高估不是均匀的,可能会导致算法错误地偏好实际上次优的动作(因为它们的 Q 值被高估得更多)。这种偏差对于频繁更新的 (s, a) 对可能更严重。
- 双 Q 学习 (Double Q-Learning) (Page 23-25):
- 目的:消除最大化偏差。
- 核心思想:解耦目标动作的选择 (Selection) 和目标动作的评估 (Evaluation)。使用两组独立的 Q 值估计 Q1 和 Q2。
- 更新规则 (Page 23-24):在更新 Q1 时,用 Q1 来选择下一状态 St+1 的最优动作 A∗=argmaxaQ1(St+1,a),但用 Q2 来评估这个选定动作的价值 Q2(St+1,A∗) 来构造 TD 目标。反之亦然。
- 更新 Q1: Q1(St,At)←Q1(St,At)+α[Rt+1+γQ2(St+1,argmaxaQ1(St+1,a))−Q1(St,At)]
- 更新 Q2: Q2(St,At)←Q2(St,At)+α[Rt+1+γQ1(St+1,argmaxaQ2(St+1,a))−Q2(St,At)]
(通常每一步随机选择更新 Q1 或 Q2)。
- 行为策略:实际与环境交互时,基于 Q1 和 Q2 的某种组合(例如 Q1+Q2)来选择动作(例如 ϵ-greedy)。
- 效果 (Page 25):通过使用独立的估计量进行评估,可以消除最大化偏差,得到更准确的价值估计,从而提高性能。实验显示 Double Q-learning 在存在偏差的问题上表现优于 Q-learning。
价值函数近似 (Value Function Approximation, VFA)#
当状态或动作空间太大无法使用表格表示时,需要使用函数近似。
- 动机 (Page 26):表格方法(为每个 (s, a) 存储 Q 值)面临维度灾难。例如围棋、机器人控制等问题。
- 方法 (Page 28):使用一个参数化函数 v^(s,w) 或 q^(s,a,w) 来近似真实价值函数。w 是需要学习的参数(权重)。
- 状态表示 (State Representation) (Page 29):需要将状态 s 表示为一个特征向量 (Feature Vector) x(s)。
- 常用近似器 (Page 28):线性模型、神经网络、决策树等。可微函数(线性模型、神经网络)允许使用梯度下降方法学习。
- 线性 VFA (Linear VFA) (Page 30):v^(s,w)=wTx(s) 或 q^(s,a,w)=wTx(s,a)。
- 学习目标 (Page 31):找到参数 w,最小化近似值与目标值之间的均方误差(例如 MSVE)。
J(w)=Eπ[21(Target(s)−v^(s,w))2]
- 随机梯度下降 (SGD) 更新 (Page 31, 37):
Δw=α(Target(s)−v^(s,w))∇wv^(s,w)
其中 ∇wv^(s,w) 是价值函数关于参数的梯度。对于线性模型,梯度就是特征向量 x(s)。
- 不同算法的目标值 Target(s) (Page 32, 33, 35, 37):
- MC: Target = Gt (实际回报)
- TD(0): Target = Rt+1+γv^(St+1,w)
- Sarsa: Target = Rt+1+γq^(St+1,At+1,w)
- Q-learning: Target = Rt+1+γmaxa′q^(St+1,a′,w)
- 收敛性:线性 VFA 与 MC 或 TD(0) 结合通常能保证收敛(到最优近似)。但 TD 方法与非线性 VFA(如神经网络)以及自举和离轨学习结合时,可能会导致训练不稳定或发散(所谓的“死亡三角” Deadly Triad)。
- 控制流程 (Page 36):使用近似的 Qθ(s,a),通过 ϵ-greedy 改进策略,并用 TD 类更新(如 Sarsa 或 Q-learning 的近似版本)来更新参数 θ。
深度强化学习 (Deep Reinforcement Learning, DRL)#
DRL 使用深度神经网络 (DNN) 作为价值函数或策略函数的近似器。
- 核心思想 (Page 38):利用 DNN 强大的表示能力来处理高维输入(如图像)和复杂的函数关系。
- 例子:DQN (Deep Q-Network) (Page 38):使用卷积神经网络 (CNN) 处理 Atari 游戏屏幕像素作为状态输入,输出每个动作的 Q 值。结合了 Q-learning 更新、经验回放 (Experience Replay) 和目标网络 (Target Network) 等技巧来稳定训练。
- 挑战 (Page 38):训练 DRL 模型通常需要大量数据和计算资源,训练过程可能不稳定,对超参数敏感,容易过拟合。
- 主要方法分类 (Page 39):
- 基于价值 (Value-Based):DQN 及其变种。
- 基于策略 (Policy-Based) / Actor-Critic: DDPG, TD3 (确定性策略,常用于连续动作), TRPO, PPO, A3C (随机策略)。
小结 (Summary) (Page 40-41)#
- Q学习是一种重要的离轨 TD 控制算法,直接学习最优动作价值 q∗。
- 期望 Sarsa 是 Sarsa 的变体,方差通常更小。
- 最大化偏差是 Q学习等算法的一个问题,可以通过 Double Q-learning 缓解。
- 价值函数近似 (VFA) 是处理大规模状态/动作空间的关键,将 RL 问题转化为参数优化问题。
- 深度强化学习 (DRL) 使用深度神经网络进行 VFA,取得了显著成功但也面临挑战。
- TD 方法通过自举和采样结合了 DP 和 MC 的优点,是现代强化学习的核心。Page 41 的图形象地展示了不同方法在“备份深度”(采样 vs 自举)和“备份宽度”(采样 vs 期望)上的区别。
太棒了!我们继续深入探讨,这一讲(Lecture 9)聚焦于将 Q 学习与深度学习结合的深度 Q 网络 (Deep Q-Network, DQN),以及对其进行改进的一系列关键技术。
深度 Q 网络 (Deep Q-Network, DQN) 及其改进#
一、深度 Q 网络 (Deep Q-Network, DQN)#
- 核心思想 (Page 3):当状态空间极其巨大或连续时(例如,直接处理游戏屏幕像素),无法使用表格来存储 Q 值。DQN 使用深度神经网络 (Deep Neural Network, DNN) 来近似最优动作价值函数 Q∗(s,a)。
Q(s,a;w)≈Q∗(s,a)
其中 w 是神经网络的参数(权重和偏置)。
- 网络结构 (Page 3, 4):
- 输入:状态 s 的表示(例如,游戏画面的原始像素,通常是连续几帧叠加以包含动态信息)。
- 处理层:通常包含卷积层 (CNN) 来提取图像特征,然后是全连接层。
- 输出:对于离散动作空间,网络通常输出一个向量,其维度等于动作数量 ∣A∣,每个元素代表对应动作的 Q 值 Q(s,ai;w)。
- 与环境交互 (Page 4, 5):
- 智能体根据当前 Q 网络 Q(s,a;w) 的输出来选择动作,通常采用 ϵ-greedy 策略以平衡探索与利用。
- 执行动作 at 后,环境转移到新状态 st+1 并返回奖励 rt (PPT 中奖励索引为 rt,对应 st,at 后的奖励,更标准的是 rt+1)。
- 收集到的转移 (st,at,rt,st+1) 用于后续的网络训练。
- 训练 DQN (基于 Q 学习) (Page 6-10):
- 目标:让网络预测的 Q 值 Q(st,at;w) 尽可能接近贝尔曼最优方程所暗示的目标值。
- Q 学习 TD 目标 (Q-Learning TD Target) (Page 6, 8):
yt=Rt+1+γa′maxQ(St+1,a′;w)
(注意:这里暂时忽略了 Target Network 的概念,早期或简化版本直接用当前网络计算目标)
- 损失函数 (Loss Function):通常使用均方误差 (Mean Squared Error, MSE) 来衡量预测值和目标值之间的差异:
L(w)=E[21(yt−Q(st,at;w))2]
- 梯度下降 (Gradient Descent) (Page 7, 9):通过计算损失函数关于网络参数 w 的梯度,并沿负梯度方向更新参数来最小化损失。
∇wL(w)=E[(Q(st,at;w)−yt)∇wQ(st,at;w)]
实际更新使用随机梯度下降 (SGD) 或其变种 (Adam, RMSProp),基于采样的单个转移或小批量数据:
w←w−α(Q(st,at;w)−yt)∇wQ(st,at;w)
- 基本 DQN 算法流程 (Page 10):交互收集数据 → 计算 Q 值和 TD 目标 → 计算梯度 → 更新网络权重 w。
二、经验回放 (Experience Replay)#
直接使用在线产生的、按时间顺序排列的经验 (st,at,rt,st+1) 来训练 DQN 会遇到问题。
- 问题 (Page 11):
- 数据相关性 (Correlated Data):连续的样本之间高度相关,违反了许多优化算法(如 SGD)对数据独立同分布 (i.i.d.) 的假设,导致训练不稳定、效率低下。
- 样本效率低 (Sample Inefficiency):每个经验样本只被用来更新一次网络就被丢弃,浪费了宝贵的经验数据。
- 解决方案:经验回放池 (Replay Buffer) (Page 12):
- 将智能体与环境交互产生的转移 (st,at,rt,st+1) 存储在一个固定大小的缓冲区(Replay Buffer / Memory) D 中。
- 在训练网络时,不使用最新产生的转移,而是从缓冲区 D 中随机均匀地采样一个小批量 (mini-batch) 的转移数据。
- 使用这个小批量数据来计算损失和梯度,并更新网络参数 w。
- 优点:
- 打破相关性:随机采样打乱了数据的时间顺序,减少了样本间的相关性,使得训练更稳定。
- 提高数据效率:一个经验转移可能被多次采样并用于训练,提高了数据的利用率。
三、优先经验回放 (Prioritized Experience Replay)#
均匀地从经验回放池中采样可能不是最高效的,因为并非所有经验都具有同等重要的学习价值。
- 核心思想 (Page 14):给那些更“有价值” 的经验更高的采样优先级。通常认为 TD 误差绝对值 ∣yt−Q(st,at;w)∣ 较大的转移更有学习价值,因为它们表示当前网络预测与目标之间存在较大的“意外”或差异。
- 实现机制:
- 在存储转移 (st,at,rt,st+1) 到回放池时,同时存储其优先级 pt(通常基于其 TD 误差绝对值,加上一个小的正数 ϵ 以保证非零概率):pt=∣δt∣+ϵ。
- 从回放池中非均匀采样,转移 t 被选中的概率 P(t) 与其优先级 pt 的某个指数 α 次方成正比:
P(t)=∑kpkαptα
α≥0 控制优先级的程度(α=0 时退化为均匀采样)。
- 重要性采样 (IS) 校正 (Page 14):非均匀采样会引入偏差,需要使用重要性采样权重 ωt 来校正梯度更新:
ωt=(N⋅P(t)1)β
其中 N 是回放池大小,β∈[0,1] 控制校正的程度(β=0 无校正,β=1 完全校正)。通常 β 会从一个初始值(如 0.4)逐渐退火 (anneal) 到 1。
- 加权更新:在 SGD 更新时,用 IS 权重 ωt 来加权 TD 误差:
Δw=α⋅ωt⋅δt⋅∇wQ(st,at;w)
- 学习率调整视角 (Page 15-16):也可以理解为对原始学习率 α 进行调整。优先级高 (pt 大) 的样本被选中的概率 P(t) 大,但其 IS 权重 ωt 相对较小,导致其对参数更新的有效步长(αωt)可能反而减小。这有助于稳定学习,防止少数高优先级样本过度影响网络。
四、最大化偏差 (Maximization Bias) 与改进#
如上一讲所述,Q 学习的目标 yt=Rt+1+γmaxa′Q(St+1,a′;w) 会因为在噪声估计上取最大值而导致系统性地高估 Q 值。
- 回顾原因 (Page 17-23):
- 最大化操作 (Maximization):max 作用于带噪声的估计值 Q(s,a;w) 时,其期望值会偏高。
- 自举 (Bootstrapping):TD 学习使用这个有偏高的目标 yt 来更新当前的 Q 值估计 Q(st,at;w),导致偏差被传播和放大。
- 危害:非均匀的高估可能导致选择次优动作。
- 解决方案 1:目标网络 (Target Network) (Page 23-28) - (DQN 论文中已包含)
- 思路:通过引入一个独立的、更新较慢的目标网络 Q(s,a;w−) 来计算 TD 目标中的 max 部分,以“切断”或减弱自举带来的即时反馈循环,增加训练稳定性。
- TD 目标:
yt=Rt+1+γa′maxQ(St+1,a′;w−)
- 更新:只更新在线网络 (Online Network) Q(s,a;w) 的参数 w,使其接近 yt。
- 同步:目标网络参数 w− 定期(例如每 C 步)从在线网络 w 复制而来(硬更新),或者缓慢地跟踪 w(软更新 w−←τw+(1−τ)w−)。
- 效果:显著提高了 DQN 训练的稳定性,但它不能完全消除最大化偏差,因为 max 操作仍然作用于(可能被高估的)目标网络 Q 值。
- 解决方案 2:双 DQN (Double DQN) (Page 23, 29-31) - (基于 Double Q-Learning 思想)
- 思路:将目标动作的选择和评估解耦,使用两个网络来完成。
- TD 目标 (结合 Target Network):
- 使用在线网络 Q(⋅;w) 选择下一状态 St+1 的最优动作 A∗=argmaxa′Q(St+1,a′;w)。
- 使用目标网络 Q(⋅;w−) 来评估这个被选定动作 A∗ 的价值 Q(St+1,A∗;w−)。
ytDoubleDQN=Rt+1+γQ(St+1,arga′maxQ(St+1,a′;w);w−)
- 效果 (Page 30):由于选择和评估使用了不同的(至少是不同步更新的)网络参数,显著减少了因噪声导致的最大化偏差,得到更准确的 Q 值估计和更好的策略。
- 算法 (Page 31):给出了结合了优先经验回放和 Double DQN 的算法伪代码。
五、对决 DQN (Dueling DQN)#
Dueling DQN 是一种改进的网络架构,旨在更有效地学习状态价值和动作优势。
- 核心思想 (Page 32-34):将 Q 值 Q(s,a) 分解为两部分:
- 状态价值函数 (State-Value Function) V(s):表示在状态 s 本身的价值,与具体采取哪个动作无关。
- 优势函数 (Advantage Function) A(s,a):表示在状态 s 下,动作 a 相对于平均动作的好坏程度。
Aπ(s,a)=Qπ(s,a)−Vπ(s)
- 关系:Qπ(s,a)=Vπ(s)+Aπ(s,a)
- 最优情况下的性质 (Page 35):对于最优价值函数 Q∗,V∗,A∗:
- V∗(s)=maxaQ∗(s,a)
- maxaA∗(s,a)=maxa(Q∗(s,a)−V∗(s))=V∗(s)−V∗(s)=0
- 对决网络架构 (Dueling Network Architecture) (Page 36-40):
- 网络前面部分(例如 CNN)是共享的,用于提取状态 s 的特征。
- 之后网络分成两个流 (Streams):
- 价值流 (Value Stream):输出一个标量,估计状态价值 V(s;wV,wshared)。
- 优势流 (Advantage Stream):输出一个向量,其维度等于动作数量 ∣A∣,每个元素估计对应动作的优势 A(s,a;wA,wshared)。
- 聚合层 (Aggregating Layer):将 V 值和 A 值组合起来得到最终的 Q 值 Q(s,a;w)。
- 聚合方式(解决不可辨识性问题 Identifiability) (Page 34, 43-44):
- 问题:直接相加 Q=V+A 是不可辨识的(V→V+c,A→A−c 结果不变)。
- 解决方案:强制对优势函数施加一个约束。常用的两种方法:
- Max 聚合 (Page 36):减去优势函数的最大值,强制最优动作的优势为 0。
Q(s,a;w)=V(s;wV)+(A(s,a;wA)−a′maxA(s,a′;wA))
- Average 聚合 (Page 34, 44):减去优势函数的平均值,强制所有动作的平均优势为 0。实践中更常用,更稳定。
Q(s,a;w)=V(s;wV)+(A(s,a;wA)−∣A∣1a′∑A(s,a′;wA))
- 训练 (Page 42):Dueling Network 作为一个整体(参数 w=(wshared,wV,wA))进行端到端训练,使用与标准 DQN 相同的损失函数和优化方法(例如结合 Double DQN 和 Prioritized Replay)。梯度会同时反向传播到 V 流、A 流和共享层。
- 优点:通过显式分离状态价值和动作优势,Dueling Network 可以更有效地学习状态价值(特别是当不同动作对结果影响不大时),通常能带来性能提升和更快的学习速度。
总结:DQN 及其改进 (Page 45-47)#
- DQN (Nature 2015):核心是用 DNN 近似 Q*,使用经验回放和目标网络稳定训练。
- Double DQN (AAAI 2016):通过解耦目标动作的选择和评估,显著减少了最大化偏差。
- Prioritized Experience Replay (ICML 2016):通过优先采样 TD 误差大的经验,提高学习效率。
- Dueling DQN (ICML 2016):改进网络架构,分离 V 值和 A 值,提高学习效率和性能。
- Rainbow (AAAI 2018) (Page 47):将上述多种改进以及其他技术(如 Distributional DQN, Noisy Nets)结合起来,在 Atari 基准上取得了当时的最佳性能,展示了组合这些改进的巨大威力。
这一系列技术的发展极大地推动了深度强化学习在复杂任务上的应用。