8.2 KiB
title, draft, tags
| title | draft | tags | ||||
|---|---|---|---|---|---|---|
| 01-DQN-深度Q学习 | false |
|
1. 从 Q-Learning 到 DQN:数学基石
在进入深度学习之前,我们需要理解强化学习的核心:最优策略的寻找。
1.1 马尔可夫决策过程 (MDP)
强化学习通常建模为 MDP,由五元组 (S, A, P, R, \gamma) 组成。我们的目标是最大化 累积期望回报:
G_t = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}
其中 \gamma \in [0, 1] 是折扣因子,决定了对未来奖励的重视程度。
1.2 Q 函数与 Bellman 方程
Q 函数(动作价值函数) Q^\pi(s, a) 表示在状态 s 下采取动作 $a$,并在此后遵循策略 \pi 所能获得的期望回报。
根据 贝尔曼期望方程 (Bellman Expectation Equation),Q 函数满足:
Q^\pi(s, a) = \mathbb{E}_{\pi} \left[ R(s, a) + \gamma \sum_{s'} P(s'|s,a) \sum_{a'} \pi(a'|s') Q^\pi(s', a') \right]
或者等价的递归形式:
Q^\pi(s, a) = \mathbb{E}_{s', r} \left[ r + \gamma V^\pi(s') \right]
其中状态价值函数 $V^\pi(s) = \sum_a \pi(a|s) Q^\pi(s, a)$。
直觉解释: Q 函数衡量的是”在特定状态下选择特定动作”的好坏,而 V 函数衡量的是”处于某个状态”的好坏。两者通过策略 \pi 相互关联。
贝尔曼最优方程 (Bellman Optimality Equation): 最优 Q 函数 Q^* 满足:
Q^*(s, a) = \mathbb{E}_{s' \sim P} \left[ R(s, a) + \gamma \sum_{s'} P(s'|s,a) \max_{a'} Q^*(s', a') \right]
推导过程:
- 最优策略
\pi^*满足:对每个状态 $s$,选择使 Q 值最大的动作。 - 因此
V^*(s) = \max_a Q^*(s, a) - 代入 Q 函数的定义:
Q^*(s, a) = R(s, a) + \gamma \sum_{s'} P(s'|s,a) V^*(s') - 用
V^*(s') = \max_{a'} Q^*(s', a')替换,得到最终形式。
物理意义: 当前状态动作对的价值等于”即时奖励”加上”所有可能下一状态最优价值的折现期望”。这是一个递归定义,因为 Q^* 出现在等式两边。
1.3 传统 Q-Learning 的局限
传统的 Q-Learning 使用一个表格(Q-Table)来存储所有状态动作对。
-
更新公式:
Q(s, a) \leftarrow Q(s, a) + \alpha [R + \gamma \max_{a'} Q(s', a') - Q(s, a)] -
瓶颈: 当状态空间
S是连续的(如图像)或维度极高时,表格法会遭遇“维度灾难”,无法存储也无法泛化。
2. DQN 的核心逻辑:函数拟合
DQN 的核心思想是:用一个深度神经网络 Q(s, a; \theta) 来替代 Q-Table。 神经网络通过学习参数 \theta 来模拟 Q^* 函数。
2.1 损失函数推导
为了训练网络,我们需要定义一个损失函数。借鉴监督学习的思路,我们将 Bellman 方程的右边视为“标签”,左边视为“预测值”。
目标值 (TD Target):
y = R + \gamma \max_{a'} Q(s', a'; \theta)
损失函数 (Mean Squared Error):
L(\theta) = \mathbb{E}_{(s, a, r, s') \sim D} \left[ \left( y - Q(s, a; \theta) \right]^2 \right)
3. DQN 的两大制胜法宝
如果直接按照上述公式训练,网络极难收敛。DQN 引入了两个关键机制来解决稳定性问题。
3.1 经验回放 (Experience Replay)
-
问题 1(样本相关性): 强化学习的样本是 时序相关的——相邻时刻的
(s_t, a_t, r_t, s_{t+1})高度相似。这违反了机器学习中 IID(独立同分布)假设,导致梯度估计是有偏的。 -
问题 2(分布偏移): 当前策略
\pi_\theta决定了下一批样本的分布。旧策略采样的数据分布与当前策略不同,直接使用会破坏训练稳定性。 -
机制: 将智能体的经验
(s_t, a_t, r_t, s_{t+1})存储在一个容量为N的巨大 Replay Buffer\mathcal{D}中。训练时从中随机采样一个 Mini-batch ${(s_j, a_j, r_j, s'_j)}$。 -
打破相关性的原理: 随机采样使得一个 Mini-batch 中的样本来自不同时间步,它们之间的相关性被大幅削弱。同时,Buffer 中可能包含不同策略下采集的数据,形成近似 IID 的混合分布。
-
超参数选择: Buffer 大小通常为
10^5至 $10^6$。太小会限制数据多样性,太大可能导致早期经验被稀释(可用优先级回放 PER 改善)。
3.2 目标网络 (Target Network)
-
问题根源: 在计算 TD Target
y_j = r_j + \gamma \max_{a'} Q(s'_j, a'_j; \theta^-)时,如果目标值也使用正在更新的参数 $\theta$,会导致”自己追逐自己”的震荡现象。这是因为y和Q(s,a;\theta)都依赖同一个 $\theta$,优化过程会不断改变”靶心”。 -
机制: 维护两个网络:
- 评估网络 (Q-Network): 参数为 $\theta$,负责实时计算 Q 值和梯度下降。
- 目标网络 (Target Q-Network): 参数为 $\theta^-$,专门用于计算稳定的 TD Target。
-
更新机制: 每隔
C个训练步长,将\theta复制给 $\theta^-$:$\theta^- \leftarrow \theta$。这种”软更新”(或”硬更新”)确保目标网络的变化是离散的、稳定的。 -
为什么有效: 在一个更新周期内,目标
y是固定的(因为\theta^-暂时不变),而评估网络Q(s,a;\theta)在不断接近这个固定目标。这解决了”移动靶心”问题。 -
直觉类比: 想象你在练习射箭。目标网络就像一个固定的靶子(不随你每次射箭而移动),而评估网络是你的射击技术。通过不断逼近固定的靶子,你的动作才能逐步稳定。
4. DQN 训练全过程 (Algorithmic Flow)
-
初始化经验池 $D$。
-
初始化评估网络
Q(\theta)和目标网络 $Q(\theta^-)$,使 $\theta^- = \theta$。 -
对于每一轮 (Episode):
-
获取初始状态 $s$。
-
对于每一步 (Step):
-
使用 $\epsilon$-greedy 策略选择动作:以
\epsilon概率随机探索,以1-\epsilon概率选择 $a = \arg\max Q(s, a; \theta)$。 -
执行动作 $a$,观测 $r, s'$。
-
将
(s, a, r, s')存入 $D$。 -
从
D中随机采样 Batch。 -
计算目标值 $y_j = r_j + \gamma \max_{a'} Q(s'_j, a'_j; \theta^-)$。
-
通过梯度下降更新 $\theta$:$\nabla_\theta (y_j - Q(s_j, a_j; \theta))^2$。
-
每隔
C步更新 $\theta^- = \theta$。
-
-
5. 可能出现的问题与改进方案
-
过拟合与估计过高 (Overestimation Bias): DQN 经常倾向于高估 Q 值,因为
\max操作会将正向误差放大。- 改进: Double DQN。使用评估网络选动作,目标网络算价值。
-
样本利用率不均: 并不是所有经验都同样重要。
- 改进: Prioritized Experience Replay (PER)。根据 TD-error 大小设置采样优先级。
-
网络结构冗余: 某些状态下,动作对结果影响不大。
- 改进: Dueling DQN。将 Q 网络分为状态价值
V(s)和优势函数A(s, a)两部分。
- 改进: Dueling DQN。将 Q 网络分为状态价值
6. 向 Policy Gradient 进发
DQN 虽然强大,但它有天然的缺陷:无法处理 连续动作空间,且无法学习 随机策略。为了解决这些问题,我们需要转向 策略梯度 (Policy Gradient) 方法。
-
A2C (Advantage Actor-Critic):
它结合了 Value-based 和 Policy-based。Actor 负责选动作(策略),Critic 负责评价动作的好坏(价值)。通过引入 优势函数 (Advantage)
A(s, a) = Q(s, a) - V(s)来降低梯度的方差。 -
PPO (Proximal Policy Optimization):
目前工业界最常用的算法。它解决了 Policy Gradient 步长难确定的问题。通过 重要性采样 (Importance Sampling) 和 裁剪 (Clipping) 机制,确保策略更新不会偏离太远,从而极大地提升了训练的鲁棒性。
笔记要点回顾:
Q-Learning 依靠 Bellman 方程更新表格。
DQN 将表格换成神经元,用经验回放打碎相关性,用目标网络稳定目标。
DQN 是理解后面更复杂的 A3C、PPO 等算法的基石。