强化学习:从 Q-Learning 到 Deep Q-Network
强化学习 (Reinforcement Learning, RL) 是机器学习的一个分支,它关注的是智能体 (Agent) 如何在一个环境 (Environment) 中通过与环境的交互 (Interaction) 来学习一个最优策略 (Optimal Policy),以最大化其长期累积的奖励 (Reward)。与监督学习依赖标签数据不同,强化学习通过试错 (Trial-and-Error) 的方式进行学习,智能体根据环境的反馈(奖励或惩罚)来调整自己的行为。
本文将从强化学习的经典算法 Q-Learning 开始,逐步深入到更先进的 Deep Q-Network (DQN),展示强化学习方法如何从简单的表格式方法演进到能够处理复杂高维状态空间的强大技术。
一、 强化学习基础概念
在深入算法之前,先回顾几个核心概念:
智能体 (Agent): 做出决策和行动的实体。
环境 (Environmen): 智能体所处的外部世界,它接收智能体的行为,并返回新的状态和奖励。
状态 (State, sss): 环境的当前情况。
行动 (Action, aaa): 智能体根据当前状态所采取的行为。
奖励 (Reward, rrr): 环境在智能体采取行动后给出的即时反馈信号。
策略 (Policy, π\piπ): 智能体在给定状态下选择行动的映射关系 (π(s)→a\pi(s) \to aπ(s)→a)。
马尔可夫决策过程 (MDP - Markov Decision Process): 强化学习问题的数学模型,其核心是马尔可夫性,即当前状态的转移和奖励只依赖于前一个状态和当前采取的行动,与过去的历史无关。
状态-行动值函数 (Q-value, Q(s,a)Q(s, a)Q(s,a)): 智能体在状态 sss 下采取行动 aaa,并遵循某个策略 π\piπ 所能获得的长期累积奖励的期望值。
目标: 找到一个最优策略 π∗\pi^*π∗,使得在任意状态 sss 下,采取动作 aaa 获得的价值 Q∗(s,a)Q^*(s, a)Q∗(s,a) 最大。
二、 Q-Learning:基于价值的无模型 RL 算法
Q-Learning 是一种经典的无模型 (Model-Free) 强化学习算法,它不依赖于对环境模型(状态转移概率和奖励函数)的了解,而是直接学习状态-行动值函数 Q(s,a)Q(s, a)Q(s,a)。
2.1 Q-表 (Q-Table)
当状态和行动空间是离散且大小有限时,Q-Learning 通常使用一个表格(Q-表)来存储每个状态-行动对 (s,a)(s, a)(s,a) 的 Q 值。Q-表的大小为 ∣S∣×∣A∣|\mathcal{S}| \times |\mathcal{A}|∣S∣×∣A∣,其中 ∣S∣|\mathcal{S}|∣S∣ 是状态的数量,∣A∣|\mathcal{A}|∣A∣ 是行动的数量。
2.2 Q-Learning 更新规则
Q-Learning 的核心是其更新规则,它利用贝尔曼方程 (Bellman Equation) 来迭代地估计最优 Q 值:
Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)]Q(s, a) \leftarrow Q(s, a) + \alpha \left[ r + \gamma \max_{a'} Q(s', a') - Q(s, a) \right]Q(s,a)←Q(s,a)+α[r+γa′maxQ(s′,a′)−Q(s,a)]其中:
sss: 当前状态。
aaa: 在状态 sss 下采取的行动。
rrr: 采取行动 aaa 后获得的即时奖励。
s′s's′: 采取行动 aaa 后转移到的下一个状态。
a′a'a′: 在下一个状态 s′s's′ 下可以采取的任意行动。
α\alphaα (Learning Rate, 学习率): 控制每次更新对 Q 值的影响程度(0 到 1 之间)。
γ\gammaγ (Discount Factor, 折扣因子): 控制未来奖励的价值(0 到 1 之间)。γ\gammaγ 越小,智能体越偏好立即奖励;γ\gammaγ 越接近 1,智能体越重视长期奖励。
maxa′Q(s′,a′)\max_{a'} Q(s', a')maxa′Q(s′,a′): 在下一个状态 s′s's′ 下,所有可能采取的行动 a′a'a′ 中,能够获得的最大 Q 值。这代表了从下一个状态开始能够获得的最大回报。
2.3 探索与利用 (Exploration vs. Exploitation)
在学习过程中,智能体需要在“利用 (Exploitation)”(选择当前已知的最优行动以获得奖励)和“探索 (Exploration)”(尝试新的、不确定的行动以发现潜在更好的策略)之间取得平衡。
ϵ\epsilonϵ-greedy 策略: 以概率 ϵ\epsilonϵ 随机选择一个行动(探索)。
以概率 1−ϵ1-\epsilon1−ϵ 选择当前 Q 值最大的行动(利用)。
通常 ϵ\epsilonϵ 会随着训练的进行而逐渐减小 (Decay),从一个较高的值(如 1.0)逐渐降低到某个较小的值(如 0.01 或 0.1),鼓励智能体在早期积极探索,后期更多地利用已知信息。
2.4 Q-Learning 的局限性
状态空间和行动空间的大小: 当状态或行动的数量非常巨大,甚至是连续的, Q-表会变得极其庞大,计算和存储成本过高,无法适用。
离散性假设: Q-Learning 本身是为离散状态和行动设计的。
三、 Deep Q-Network (DQN):将深度学习引入 Q-Learning
为了解决 Q-Learning 在面对高维、连续状态空间时的局限性,DeepMind 提出了 Deep Q-Network (DQN)。DQN 的核心思想是用一个深度神经网络 (Deep Neural Network) 来近似 (Approximate) Q-value 函数,即用神经网络来代替 Q-表。
Q(s,a;θ)≈Q∗(s,a)Q(s, a; \theta) \approx Q^*(s, a)Q(s,a;θ)≈Q∗(s,a)其中 θ\thetaθ 是神经网络的权重参数。
3.1 DQN 的关键创新
DQN 的成功主要归功于两个关键技术:
经验回放 (Experience Replay):
问题: 在标准的 Q-Learning 中,连续的样本之间存在很强的相关性 (Correlation)。例如,在玩 Atari 游戏时,相继的几个帧(状态)通常非常相似,这会使神经网络在训练时产生非独立同分布 (Non-I.I.D.)** 的样本,导致训练不稳定,容易陷入局部最优。
解决方案: 将智能体与环境的交互样本(st,at,rt,st+1s_t, a_t, r_t, s_{t+1}st,at,rt,st+1)存储在一个“回放缓冲区 (Replay Buffer)”中。在训练神经网络时,从缓冲区中随机采样 (Sampled Randomly) 一小批(Mini-batch)样本来进行训练。
好处: 打破相关性: 随机采样使得批次内的样本更加独立同分布,提高了训练的稳定性。
提高数据利用率: 每个过去的经验样本可以被多次用于训练,提高了学习效率。
学习平滑: 使得模型在迭代过程中更加平滑。
目标网络 (Target Network):
问题: 在 Q-Learning 的更新规则 Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)]Q(s, a) \leftarrow Q(s, a) + \alpha [r + \gamma \max_{a'} Q(s', a') - Q(s, a)]Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)] 中,目标值 r+γmaxa′Q(s′,a′)r + \gamma \max_{a'} Q(s', a')r+γmaxa′Q(s′,a′) 的计算依赖于正在更新的同一个网络。这意味着目标值会随着网络权重的更新而不断变化,导致训练过程不稳定,像是在追逐一个移动的目标。
解决方案: 使用两个网络:
主流网络 (Online Network): 用于计算当前状态 sss 的 Q(s,a)Q(s, a)Q(s,a) 值,并用于选择动作(通常是 ϵ\epsilonϵ-greedy 策略)。
目标网络 (Target Network): 用于计算目标值中的 maxa′Q(s′,a′)\max_{a'} Q(s', a')maxa′Q(s′,a′)。目标网络的参数是主流网络参数的一个旧副本 (Old Copy)。
更新机制: 主流网络的参数 θ\thetaθ 会在每次采样批次进行梯度下降更新。
目标网络的参数 θ−\theta^-θ− 周期性地从主流网络中复制过来(例如,每隔 C 步更新一次 θ−=θ\theta^- = \thetaθ−=θ)。
好处: 稳定目标值: 在目标网络参数固定的一段时间内,目标值 r+γmaxa′Q(s′,a′)r + \gamma \max_{a'} Q(s', a')r+γmaxa′Q(s′,a′) 保持相对稳定,为训练提供了更稳固的目标。
加速收敛: 缓解了由于目标值频繁变动导致的训练振荡。
3.3 DQN 的训练过程
初始化:
初始化一个主流网络 Q(s,a;θ)Q(s, a; \theta)Q(s,a;θ) 和一个目标网络 Q(s′,a′;θ−)Q(s', a'; \theta^-)Q(s′,a′;θ−)。将目标网络的参数 θ−\theta^-θ− 初始化为与主流网络参数 θ\thetaθ 相同。
初始化回放缓冲区 DDD。
设置训练参数(如学习率 α\alphaα,折扣因子 γ\gammaγ,探索率 ϵ\epsilonϵ,回放缓冲区大小,批量大小,目标网络更新频率 C)。
训练循环:
对于每个训练回合 (Episode):
初始化环境,获得初始状态 s0s_0s0。
对于每个时间步 ttt(直到回合结束):
选择动作: 根据当前状态 sts_tst 和 ϵ\epsilonϵ-greedy 策略,从主流网络 Q(st,a;θ)Q(s_t, a; \theta)Q(st,a;θ) 中选择一个行动 ata_tat。
执行行动: 在环境中执行行动 ata_tat,获得奖励 rtr_trt 和下一个状态 st+1s_{t+1}st+1。
存储经验: 将一个完整的经验元组 (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1})(st,at,rt,st+1) 存储到回放缓冲区 DDD 中。
训练网络(如果缓冲区已满且满足更新条件): 从回放缓冲区 DDD 中随机抽取一个批次的经验元组 {(sj,aj,rj,sj+1)}j=1B\{(s_j, a_j, r_j, s_{j+1})\}_{j=1}^B{(sj,aj,rj,sj+1)}j=1B。
对于每个元组 jjj,计算目标值 yjy_jyj:
如果 sj+1s_{j+1}sj+1 是终止状态,则 yj=rjy_j = r_jyj=rj。
否则,yj=rj+γQ(sj+1,argmaxa′Q(sj+1,a′;θ−);θ−)y_j = r_j + \gamma Q(s_{j+1}, \arg\max_{a'} Q(s_{j+1}, a'; \theta^-); \theta^-)yj=rj+γQ(sj+1,argmaxa′Q(sj+1,a′;θ−);θ−)。(使用目标网络计算目标 Q 值)
计算损失函数 (Loss Function),通常是均方误差 (Mean Squared Error, MSE): L(θ)=1B∑j=1B(yj−Q(sj,aj;θ))2L(\theta) = \frac{1}{B} \sum_{j=1}^B (y_j - Q(s_j, a_j; \theta))^2L(θ)=B1j=1∑B(yj−Q(sj,aj;θ))2
使用梯度下降法更新主流网络的参数 θ\thetaθ,以最小化损失。
更新目标网络: 每 C 步,将主流网络的参数复制到目标网络:θ−←θ\theta^- \leftarrow \thetaθ−←θ。
更新状态: st←st+1s_t \leftarrow s_{t+1}st←st+1。
调整探索率: 逐渐减小 ϵ\epsilonϵ。
3.4 DQN 的变种与改进
DQN 作为一个里程碑式的算法,催生了许多后续的改进:
Double DQN (DDQN): 解决了 DQN 倾向于高估 Q 值的问题。它将目标 Q 值的选择和评估分开:value = Q_online(s', argmax Q_online(s', a')),target = r + gamma * Q_target(s', argmax Q_online(s', a'))。
Prioritized Experience Replay (PER): 并非随机从缓冲区中采样,而是优先选择那些“意外性”或“重要性”更高的经验进行学习(如 TD 误差大的经验)。
Dueling DQN: 将 Q 值近似分解为状态价值 V(s) 和优势函数 A(s, a),即 Q(s,a)=V(s)+(A(s,a)−averageaA(s,a))Q(s, a) = V(s) + (A(s, a) - \text{average}_a A(s, a))Q(s,a)=V(s)+(A(s,a)−averageaA(s,a))。这有助于更准确地估计状态价值,即使在某些特定行动上只有较差的奖励,也能识别出有利的状态。
Rainbow DQN: 将上述多种改进(DDQN, PER, Dueling DQN, N-step learning, Distributed experience replay, Noisy nets)集成到一个统一的框架中。
三、 总结
强化学习是一个强大而迷人的领域,它使得智能体能够通过与环境的交互学习复杂的行为。
Q-Learning 作为基础算法,展示了如何通过学习状态-行动值 Q 函数来指导决策,适用于离散且有限的状态/行动空间。
Deep Q-Network (DQN) 成功地将深度神经网络引入 Q-Learning,通过经验回放和目标网络解决了高维状态空间的挑战,并大大提高了训练的稳定性和效率,为处理更复杂的 RL 问题奠定了基础。
从 Q-Learning 到 DQN 的演进,是强化学习领域一个重要的里程碑,也启发了后续更多更强大的深度强化学习算法(如 Actor-Critic 方法、Policy Gradient 等)的发展。