图解DQN/DDQN
时间: 2023-10-04 11:03:10 AIGC 浏览: 338
DQN和DDQN是深度强化学习算法中常用的两种方法。在DQN中,选择动作的过程中总是选择Target Q网络的最大输出值作为预测动作的Q值。而在DDQN中,首先从Q网络中找到最大输出值对应的动作,然后再通过Target Q网络找到该动作对应的Q值。下面是图解DQN和DDQN的过程:
<DQN>
1. 使用当前状态st作为输入,通过Q网络得到每个动作的Q值。
2. 根据贪婪策略,选择具有最大Q值的动作at。
3. 使用at作为输入,通过Target Q网络得到该动作对应的Q值。
4. 使用预测值Q(st, at)和实际值rt+1 + γ * maxQ(st+1, a)计算误差,并进行误差反向传播。
<DDQN>
1. 使用当前状态st作为输入,通过Q网络得到每个动作的Q值。
2. 根据贪婪策略,选择具有最大Q值的动作at。
3. 使用st+1作为输入,通过Q网络得到每个动作的Q值。
4. 根据贪婪策略,选择具有最大Q值的动作at+1。
5. 使用at+1作为输入,通过Target Q网络得到该动作对应的Q值。
6. 使用预测值Q(st, at)和实际值rt+1 + γ * Q(st+1, at+1)计算误差,并进行误差反向传播。
需要注意的是,在DDQN中,选择最大Q值的动作是在Q网络中进行,而获取该动作对应的Q值是在Target Q网络中进行的。这样可以减少Q值的过估计,提高算法的稳定性和收敛性。
相关问题
DQN和DDQN
### DQN与DDQN的区别
DQN(Deep Q-Network)是一种经典的深度强化学习算法,通过神经网络逼近Q函数并利用经验回放和目标网络来稳定训练过程。然而,在实际应用中,DQN可能会因为高估Q值而导致次优解[^2]。
为了缓解这一问题,Double DQN(DDQN)被提出。DDQN的核心改进在于使用两个独立的网络:主网络 \( Q \) 和目标网络 \( Q^- \)[^1]。具体来说,DDQN在计算目标Q值时采用了一种分离的选择和评估机制。即先用主网络选择动作,再用目标网络评估该动作的价值。这种设计有效减少了Q值的过高估计风险,从而提高了策略的质量和稳定性。
以下是两者的主要区别:
#### 1. **目标Q值的计算方式**
- 在DQN中,目标Q值由当前最大Q值决定,这可能导致过高的估计偏差。
\[
y_i = R_{t+1} + \gamma \max_a Q(S_{t+1},a;\theta^-)
\]
- 而在DDQN中,目标Q值分为两步:第一步用主网络选出最佳动作;第二步用目标网络对该动作进行估值。
\[
y_i = R_{t+1} + \gamma Q(S_{t+1},\arg\max_a Q(S_{t+1},a;\theta);\theta^-)
\]
#### 2. **稳定性提升**
DDQN相比DQN更加稳健,尤其是在复杂环境下的表现更佳。这是因为DDQN降低了由于最大化操作带来的乐观偏倚效应。
---
### 应用场景比较
#### DQN的应用场景
DQN适合于那些奖励信号较为简单、状态空间相对较小的任务。例如:
- 经典控制任务,如倒立摆平衡问题。
- 游戏AI开发,特别是早期Atari游戏模拟器中的应用案例[^3]。
这些场景通常具有以下特点:
- 奖励结构清晰明确;
- 动作集合有限且易于定义;
- 训练时间允许较长收敛周期。
#### DDQN的应用场景
当面对更高维度的状态空间或者存在更多干扰因素影响最终收益的情况时,则应优先考虑使用DDQN。典型例子包括但不限于以下几个方面:
- 更复杂的视频游戏挑战,其中涉及多个角色交互或动态变化的地图布局。
- 自动驾驶汽车路径规划系统——需处理大量传感器输入数据以及实时调整行驶方向决策。
这类任务往往具备如下特征:
- 需要精确的动作选取以获得长期累积回报;
- 存在潜在不确定性源可能引起传统方法误判。
---
### 总结
总体来看,虽然二者都属于基于价值迭代类别的增强型学习技术路线图的一部分,但由于引入双重网络架构使得DDQN能够在一定程度上克服单一模型所带来的局限性,因此它更适合应用于更为棘手的实际工程难题之中。
```python
# 示例代码展示如何构建简单的DQN/DDQN框架 (伪代码)
class DQN:
def __init__(self):
self.main_network = build_model()
self.target_network = clone_model(self.main_network)
def update_target(self):
self.target_network.set_weights(self.main_network.get_weights())
class DoubleDQN(DQN):
def compute_targets(self, rewards, next_states, dones):
actions = np.argmax(self.main_network.predict(next_states), axis=1)
target_q_values = self.target_network.predict(next_states)
targets = []
for i in range(len(rewards)):
if not dones[i]:
q_value = rewards[i] + GAMMA * target_q_values[i, actions[i]]
else:
q_value = rewards[i]
targets.append(q_value)
return np.array(targets).reshape(-1, 1)
```
DQN到DDQN
### DQN 到 DDQN 的演进及其改进
#### 背景介绍
深度Q学习(Deep Q-Network, DQN)是一种结合了强化学习和深度神经网络的方法,用于解决高维状态空间中的决策问题。然而,在原始的DQN算法中存在一些不足之处,例如目标值估计不稳定以及过高的方差等问题[^1]。
为了克服这些局限性,Double DQN (DDQN)被提出作为一种改进版本。它通过分离动作选择和价值评估来减少目标Q值的过高估计现象,从而提高了模型训练过程中的稳定性和收敛速度[^2]。
#### 实现差异分析
##### 动作选择机制的不同
在标准DQN中,当前策略会同时负责选取最佳行动并计算对应的最大预期奖励值。这种做法容易导致对某些特定状态下可能存在的最优解产生偏倚性的判断误差。而DDQN则引入了一个新的概念——即利用在线网络来进行下一步骤的最佳行为预测,再由目标网络完成对于所选路径的价值量度工作。这种方法有效缓解了单一网络自我评价带来的偏差问题。
以下是两种方法的主要区别:
- **DQN**:
\[
y_i^{DQN} = r + \gamma \max_a Q(s',a;\theta^-)
\]
- **DDQN**:
\[
y_i^{DDQN} = r + \gamma Q(s',\arg\!\max_a Q(s',a;\theta);\theta^-)
\]
其中$\theta$表示参数集合;$\theta^-$代表延迟更新的目标网络权重向量;$r$为即时回报;$\gamma$折扣因子。
```python
def compute_q_values_dqn(state, next_state, reward, done, q_network, target_network, gamma):
"""Compute TD targets for DQN."""
max_next_q_value = torch.max(target_network(next_state), dim=1)[0].detach()
td_target = reward + gamma * (~done).float() * max_next_q_value
return td_target
def compute_q_values_ddqn(state, next_state, reward, done, online_network, target_network, gamma):
"""Compute TD targets for Double DQN."""
best_action_online = torch.argmax(online_network(next_state), dim=1).unsqueeze(-1)
selected_q_value = target_network(next_state).gather(1, best_action_online).squeeze().detach()
td_target = reward + gamma * (~done).float() * selected_q_value
return td_target
```
上述代码片段展示了如何分别基于DQN与DDQN计算TD目标的过程对比。可以看到,在`compute_q_values_ddqn`函数里我们先使用`online_network`找出最大收益的动作索引后再借助于`target_network`获取具体数值,这正是双网络架构的核心所在。
#### 性能提升表现
实验表明,相较于传统形式下的单步迭代更新方案而言,采用双重估计方式能够显著降低因频繁调整而导致的整体波动幅度,并最终取得更优的学习成果。此外,由于减少了不必要的探索次数,整个系统的运行效率也得到了一定程度上的优化。
阅读全文
相关推荐

















