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