Easy-RL项目深度Q网络(DQN)原理详解
深度Q网络(Deep Q-Network, DQN)是深度强化学习领域的重要算法,它将深度学习与Q学习相结合,解决了传统强化学习在连续状态空间中的维度灾难问题。本文将全面解析DQN的核心原理及其关键技术。
价值函数近似:从表格到神经网络
传统Q学习使用表格存储每个状态-动作对的Q值,但在连续状态空间或状态数量巨大时,这种方法面临存储和计算的双重挑战。DQN采用价值函数近似方法,使用神经网络来拟合Q函数:
$$ Q_{\phi}(\boldsymbol{s}, \boldsymbol{a}) \approx Q_{\pi}(\boldsymbol{s}, \boldsymbol{a}) $$
其中$\phi$是神经网络的参数。这种表示方式具有以下优势:
- 参数共享:相似状态自动获得相近的Q值
- 泛化能力:可处理未见过的状态
- 存储高效:无需存储所有状态-动作对
评论员视角:状态价值与动作价值
在DQN框架中,神经网络充当"评论员"角色,评估策略的好坏。评论员有两种形式:
状态价值函数V(s)
状态价值函数$V_{\pi}(s)$评估在状态$s$下,遵循策略$\pi$所能获得的期望累积奖励。其特点包括:
- 输入为状态,输出为标量值
- 评估与特定策略$\pi$绑定
- 可通过蒙特卡洛或时序差分方法训练
蒙特卡洛方法需要完整轨迹,计算从状态到终点的实际回报作为目标值。时序差分(TD)方法则基于相邻状态的估计值进行更新:
$$ V_{\pi}(s_t) = V_{\pi}(s_{t+1}) + r_t $$
两种方法各有优劣:蒙特卡洛方差大但偏差小,TD方差小但会传播估计误差。
动作价值函数Q(s,a)
动作价值函数$Q_{\pi}(s,a)$评估在状态$s$采取动作$a$后,遵循策略$\pi$的期望累积奖励。其实现方式有两种:
- 输入状态和动作,输出单个Q值(适用于连续动作)
- 输入状态,输出所有可能动作的Q值(仅适用于离散动作)
Q函数的关键性质是允许策略改进:给定Q函数,我们可以构造更优的策略$\pi'$:
$$ \pi'(s) = \arg\max_a Q_{\pi}(s,a) $$
数学上可以证明$V_{\pi'}(s) \geq V_{\pi}(s)$,即新策略不劣于原策略。
DQN三大关键技术
1. 目标网络(Target Network)
DQN使用两个网络:
- 主网络$Q$:参数实时更新
- 目标网络$\hat{Q}$:定期从主网络同步参数
更新公式为: $$ Q(s_t,a_t) = r_t + \gamma \hat{Q}(s_{t+1},\pi(s_{t+1})) $$
这种方法稳定了训练过程,类比"猫追老鼠":
- 猫(主网络)频繁移动
- 老鼠(目标网络)偶尔移动
- 固定目标使优化更稳定
2. 探索机制
为避免策略陷入局部最优,DQN采用以下探索策略:
ε-贪心策略
以$1-\varepsilon$概率选择最优动作,以$\varepsilon$概率随机探索。通常$\varepsilon$随时间衰减。
玻尔兹曼探索
动作选择概率与$e^{Q(s,a)/T}$成正比,温度系数$T$控制探索程度:
- $T$大:均匀探索
- $T$小:偏向高Q值动作
3. 经验回放(Experience Replay)
经验回放机制包含:
- 回放缓冲区:存储大量转移样本$(s_t,a_t,r_t,s_{t+1})$
- 随机采样:训练时从缓冲区随机抽取小批量样本
优势包括:
- 打破样本相关性
- 提高数据效率
- 实现异策略(off-policy)学习
DQN训练流程
完整DQN算法流程如下:
- 初始化主网络$Q$和目标网络$\hat{Q}$(参数相同)
- 初始化回放缓冲区$D$
- for 每个episode do
- 初始化状态$s$
- for 每个时间步 do
- 使用ε-贪心策略选择动作$a$
- 执行$a$,观察$r$和$s'$
- 存储$(s,a,r,s')$到$D$
- 从$D$中采样小批量转移
- 计算目标值$y = r + \gamma \max_{a'}\hat{Q}(s',a')$
- 更新$Q$参数以最小化$(y-Q(s,a))^2$
- 定期同步$\hat{Q}=Q$
- $s \leftarrow s'$
总结
DQN通过结合深度神经网络与强化学习,解决了传统方法在复杂环境中的局限性。其三大核心技术——目标网络、探索机制和经验回放——共同确保了算法的稳定性和效率。理解这些原理对于掌握深度强化学习至关重要,也为后续更先进的算法如Double DQN、Dueling DQN等奠定了基础。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



