| 第413行: |
第413行: |
| | 在经典的 Q-Learning 及其深度版本 DQN(Deep Q-Network)中,动作值函数的估计存在系统性偏差,即过高估计(overestimation bias)。这种偏差源自于最大化操作: | | 在经典的 Q-Learning 及其深度版本 DQN(Deep Q-Network)中,动作值函数的估计存在系统性偏差,即过高估计(overestimation bias)。这种偏差源自于最大化操作: |
| | | | |
| − | <nowiki><math> \max_{a} Q(s', a; \theta) </math></nowiki>。当估计的 Q 值存在噪声时,直接选取最大 Q 值动作容易导致期望的过高估计,从而影响策略的稳定性和最终性能。为了减少 DQN 中的 Q 值过高估计,Double DQN 引入了两个 Q 网络:当前 Q 网络和目标 Q 网络。 | + | <nowiki><math> \max_{a} Q(s', a; \theta) </math></nowiki>。当估计的 Q 值存在噪声时,直接选取最大 Q 值动作容易导致期望的过高估计,从而影响策略的稳定性和最终性能。为了减少 DQN 中的 Q 值过高估计,Double DQN 引入了两个 Q 网络:当前 Q 网络和目标 Q 网络<ref>Van Hasselt H, Guez A, Silver D. Deep reinforcement learning with double q-learning[C]//Proceedings of the AAAI conference on artificial intelligence. 2016, 30(1).</ref>。 |
| | | | |
| | 经典 DQN 的目标 Q 值计算公式为: | | 经典 DQN 的目标 Q 值计算公式为: |
| | <math> y_t^{\mathrm{DQN}} = r_t + \gamma \max_{a} Q(s_{t+1}, a; \theta^-) </math> | | <math> y_t^{\mathrm{DQN}} = r_t + \gamma \max_{a} Q(s_{t+1}, a; \theta^-) </math> |
| | + | 其中: |
| | + | <math> r_t </math> 是在时间步 <math> t </math> 获取的奖励, |
| | + | <math> \gamma </math> 是折扣因子, |
| | + | <math> \max_{a} Q(s_{t+1}, a; \theta^-) </math> 是在时间步 <math> t+1 </math> 下,通过目标网络 <math> \theta^- </math> 计算的最大 Q 值,选择下一个状态 <math> s_{t+1} </math> 中的最佳动作。 |
| | | | |
| | + | Double DQN目标 Q 值计算公式改为: |
| | + | <math> y_t^{\mathrm{DoubleDQN}} = r_t + \gamma Q\bigl(s_{t+1}, \arg\max_a Q(s_{t+1}, a; \theta); \theta^- \bigr) </math> |
| | | | |
| | + | 动作选择:依然通过当前 Q 网络 <math> Q(s_{t+1}, a; \theta) </math> 来选择下一个状态 <math> s_{t+1} </math> 中的最优动作,<math> a^* = \arg\max_a Q(s_{t+1}, a; \theta) </math>,这个步骤使用的是当前网络 <math> \theta </math> 来选择动作。 |
| | | | |
| | + | 动作评估:评估这个动作的 Q 值时,使用的是目标网络 <math> \theta^- </math>,即评估选中的动作 <math> a^* </math> 对应的 Q 值:<math> Q(s_{t+1}, a^*; \theta^-) </math>,通过这种方式,Double DQN 通过分开动作选择和动作评估,避免了经典 DQN 中同一网络同时执行选择和评估的操作,从而减少了因选择最大 Q 值而导致的过高估计偏差。 |
| | + | ====Double DQN的优势==== |
| | | | |
| − | ==== Double DQN算法实现====
| + | 传统 DQN 在更新时,直接用目标网络估计的最大 Q 值作为目标,这种“最大化”操作容易从噪声中挑选出偏大值,导致整体偏高。Double DQN 则先用当前网络挑选动作,再用目标网络计算价值,避免了单一网络同时负责选动作和评估动作价值所带来的偏差。Double DQN 是一种简单有效的改进策略,通过“动作选择”和“动作评估”分开估计,显著缓解了 Q 值过高估计问题,提高了深度强化学习算法的稳定性和性能,已成为深度强化学习领域的重要方法之一。 |
| | | | |
| | + | ===Dueling DQN:分离状态价值与优势函数=== |
| | + | ====Dueling DQN的思想==== |
| | + | Dueling DQN(Dueling Deep Q-Network)是对经典 DQN 的一种结构性改进,旨在提升智能体在复杂环境中的学习效率和稳定性<ref>Wang Z, Schaul T, Hessel M, et al. Dueling network architectures for deep reinforcement learning[C]//International conference on machine learning. PMLR, 2016: 1995-2003.</ref>。 |
| | | | |
| − | ==== Double DQN的优势==== | + | 在传统的 DQN 中,Q 值函数 Q(s,a) 直接输出每个动作的价值。然而,在许多情况下,某些状态下的所有动作的价值差异较小,导致学习过程中的梯度更新效率低下。Dueling DQN 通过将 Q 值函数分解为状态价值函数 V(s) 和优势函数 A(s,a),使得网络能够分别评估状态的总体价值和各个动作的相对优势,从而提高学习效率。具体地,Dueling DQN 的 Q 值计算公式为: |
| | + | <math> Q(s, a) = V(s) + A(s, a) </math> |
| | + | 其中,V(s) 是状态s的价值,表示在该状态下智能体的期望回报;A(s,a) 是动作a相对于当前状态的优势,表示在该状态下采取动作a相对于其他动作的优势程度。 |
| | | | |
| − | 传统 DQN 在更新时,直接用目标网络估计的最大 Q 值作为目标,这种“最大化”操作容易从噪声中挑选出偏大值,导致整体偏高。Double DQN 则先用当前网络挑选动作,再用目标网络计算价值,避免了单一网络同时负责选动作和评估动作价值所带来的偏差。Double DQN 是一种简单有效的改进策略,通过“动作选择”和“动作评估”分开估计,显著缓解了 Q 值过高估计问题,提高了深度强化学习算法的稳定性和性能,已成为深度强化学习领域的重要方法之一。
| + | Dueling DQN 的网络结构在传统 DQN 的基础上进行了修改。具体而言,网络的前几层共享,用于提取输入状态的特征;然后,网络分为两个分支:一个用于计算状态价值函数V(s),另一个用于计算优势函数 A(s,a)。最后,两个分支的输出被合并,得到每个动作的 Q 值估计。这种结构使得网络能够更有效地学习到状态的价值和动作的优势,从而提高学习性能。 |
| − | | |
| − | ===Dueling DQN:分离状态价值与优势函数===
| |
| | | | |
| − | ===Prioritized Experience Replay:优先经验回放机制=== | + | ====Dueling DQN的优势==== |
| | + | (1)提高学习效率:通过分离状态价值和动作优势,Dueling DQN 能够更好地聚焦于重要信息,减少无关因素干扰,提高学习效率。 |
| | + | (2)增强鲁棒性:对状态价值和优势的独立建模有助于缓解环境噪声和稀疏奖励带来的影响,提高算法的鲁棒性。 |
| | + | (2)提升泛化能力:Dueling 架构允许网络在未见过的环境中更快地推断出合理的 Q 值,增强了算法的泛化能力。 |
| | | | |
| | ===DRQN=== | | ===DRQN=== |
| | | | |
| | | | |
| − | == 6.DQN 的应用领域== | + | ==6.DQN 的应用领域== |
| | | | |
| | ===Atari 游戏中的应用与表现=== | | ===Atari 游戏中的应用与表现=== |
| 第448行: |
第463行: |
| | ===对连续动作空间的处理困难=== | | ===对连续动作空间的处理困难=== |
| | | | |
| − | === 训练过程中的样本效率问题=== | + | ===训练过程中的样本效率问题=== |
| | | | |
| | ===策略收敛速度慢与稳定性问题=== | | ===策略收敛速度慢与稳定性问题=== |