0
点赞
收藏
分享

微信扫一扫

月薪3万,沉迷“薅羊毛”

一、DQN算法为什么要使用两个网络?

DQN算法通常包含两个网络:一个是评估网络training_network,另一个是目标网络target_network。这两个网络的结构和初始权重是相同的,但它们的权重是不同步更新的。使用两个网络的原因是为了稳定学习过程。在DQN算法中,目标网络的权重是定期从评估网络网络复制的,但更新的频率远低于评估网络网络。这种做法有助于减少目标Q值(即预期的回报)与当前Q值(即实际的回报)之间的相关性,从而减少了学习过程中的波动性。

DQN使用training_network来计算q_values,而使用target_network计算next_q_values。

q_values:

  • q_values代表在当前状态下采取实际执行的动作所对应的Q值。
  • 这些Q值是通过training_network计算得到,因为training_network是实时更新的,它反映了最新的策略或价值估计。
  • 在给定的状态state_batch下,通过training_network计算所有可能动作的Q值,然后使用gather函数根据实际采取的动作action_batch来选择对应的Q值。

next_q_values:

  • next_q_values代表在下一个状态(next_state_batch)下可能获得的最高Q值。
  • 这些Q值是通过target_network计算得到的。由于目标网络的权重更新频率较低,它提供了一个更稳定的目标来更新主网络。
  • 使用.max(1)[0]是为了从目标网络输出的Q值矩阵中找到每个状态对应的最大Q值,这代表了在该状态下可能获得的最高预期回报。

如果我们想获取在给定state下的一个动作,我们只需要将state喂给神经网络,然后它返回给我们所有的q_values。我们选择最大的Q_value,然后选择和最大Q_value关联的动作。

参考资料:【无聊问题之】DQN算法为什么要使用两个网络(主网络和目标网络)_dqn为什么两个q网络-CSDN博客

举报

相关推荐

0 条评论