1. 从 Q-Learning 到 DQN:数学基石

在进入深度学习之前,我们需要理解强化学习的核心:最优策略的寻找

1.1 马尔可夫决策过程 (MDP)

强化学习通常建模为 MDP,由五元组 组成。我们的目标是最大化 累积期望回报

其中 是折扣因子,决定了对未来奖励的重视程度。

1.2 Q 函数与 Bellman 方程

Q 函数(动作价值函数) 表示在状态 下采取动作 ,并在此后遵循策略 所能获得的期望回报。

根据 贝尔曼期望方程 (Bellman Expectation Equation),Q 函数满足:

或者等价的递归形式:

其中状态价值函数

直觉解释: Q 函数衡量的是”在特定状态下选择特定动作”的好坏,而 V 函数衡量的是”处于某个状态”的好坏。两者通过策略 相互关联。

贝尔曼最优方程 (Bellman Optimality Equation): 最优 Q 函数 满足:

推导过程:

  1. 最优策略 满足:对每个状态 ,选择使 Q 值最大的动作。
  2. 因此
  3. 代入 Q 函数的定义:
  4. 替换,得到最终形式。

物理意义: 当前状态动作对的价值等于”即时奖励”加上”所有可能下一状态最优价值的折现期望”。这是一个递归定义,因为 出现在等式两边。

1.3 传统 Q-Learning 的局限

传统的 Q-Learning 使用一个表格(Q-Table)来存储所有状态动作对。

  • 更新公式:

  • 瓶颈: 当状态空间 是连续的(如图像)或维度极高时,表格法会遭遇”维度灾难”,无法存储也无法泛化。


2. DQN 的核心逻辑:函数拟合

DQN 的核心思想是:用一个深度神经网络 来替代 Q-Table。 神经网络通过学习参数 来模拟 函数。

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 时,如果目标值也使用正在更新的参数 ,会导致”自己追逐自己”的震荡现象。这是因为 都依赖同一个 ,优化过程会不断改变”靶心”。

  • 机制: 维护两个网络:

    1. 评估网络 (Q-Network): 参数为 ,负责实时计算 Q 值和梯度下降。
    2. 目标网络 (Target Q-Network): 参数为 ,专门用于计算稳定的 TD Target。
  • 更新机制: 每隔 个训练步长,将 复制给 。这种”软更新”(或”硬更新”)确保目标网络的变化是离散的、稳定的。

  • 为什么有效: 在一个更新周期内,目标 是固定的(因为 暂时不变),而评估网络 在不断接近这个固定目标。这解决了”移动靶心”问题。

  • 直觉类比: 想象你在练习射箭。目标网络就像一个固定的靶子(不随你每次射箭而移动),而评估网络是你的射击技术。通过不断逼近固定的靶子,你的动作才能逐步稳定。


4. DQN 训练全过程 (Algorithmic Flow)

  1. 初始化经验池

  2. 初始化评估网络 和目标网络 ,使

  3. 对于每一轮 (Episode):

    • 获取初始状态

    • 对于每一步 (Step):

      • 使用 -greedy 策略选择动作:以 概率随机探索,以 概率选择

      • 执行动作 ,观测

      • 存入

      • 中随机采样 Batch。

      • 计算目标值

      • 通过梯度下降更新

      • 每隔 步更新


5. 可能出现的问题与改进方案

  • 过拟合与估计过高 (Overestimation Bias): DQN 经常倾向于高估 Q 值,因为 操作会将正向误差放大。

    • 改进: Double DQN。使用评估网络选动作,目标网络算价值。
  • 样本利用率不均: 并不是所有经验都同样重要。

    • 改进: Prioritized Experience Replay (PER)。根据 TD-error 大小设置采样优先级。
  • 网络结构冗余: 某些状态下,动作对结果影响不大。

    • 改进: 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 等算法的基石。