DQN、Double DQN、Dueling DQN、Per DQN、NoisyDQN 学习笔记

这篇具有很好参考价值的文章主要介绍了DQN、Double DQN、Dueling DQN、Per DQN、NoisyDQN 学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

部分内容与图片摘自:JoyRL 、 EasyRL

DQN (Deep Q-Network)

说明

DQN通过深度学习技术处理高维状态空间,它的核心是使用深度神经网络来近似Q值函数。传统Q-learning依赖于一个查找表(Q表)来存储每个状态-动作对的Q值,但这在高维空间中变得不可行。DQN通过训练一个神经网络来学习这个映射关系。

DQN、Double DQN、Dueling DQN、Per DQN、NoisyDQN 学习笔记,强化学习,强化学习,DQN
除了用深度网络代替 Q表之外,DQN算法还引入了一些技巧,如经验回放和目标网络。

经验回放:通过存储代理的经验(状态,动作,奖励,新状态)在回放缓存中,并在训练时从中随机抽样,这样做可以打破数据间的时间相关性,提高学习的稳定性和效率。

目标网络:DQN使用了两个网络:一个用于估计当前的Q值(在线网络),另一个用于生成目标Q值(目标网络)。这种分离有助于稳定训练过程,因为它减少了目标值随学习过程快速变化的问题。

伪代码
initialize replay memory D
initialize action-value function Q with random weights
for episode = 1, M do
    initialize state s
    for t = 1, T do
        select action a with ε-greedy policy based on Q
        execute action a, observe reward r and new state s'
        store transition (s, a, r, s') in D
        sample random minibatch from D
        calculate target for each minibatch sample
        update Q using gradient descent
    end for
end for
应用范围
  • 适用于具有高维状态空间和离散动作空间的问题。
  • 常用于游戏和模拟环境。

Double DQN

说明

主要解决了DQN在估计Q值时的过高估计(overestimation)问题。在传统的DQN中,选择和评估动作的Q值使用相同的网络,这可能导致在某些状态下对某些动作的Q值被高估,从而影响学习的稳定性和最终策略的质量。

Double DQN 通过使用两个不同的网络 QA 和 QB 来分别进行动作的选择和价值的估计,进而减少了传统DQN可能导致的Q值过高估计问题。

具体来说,动作选择是基于 QA 网络进行的,而价值估计则是基于 QB网络。在更新 QA 的过程中,使用 QB 来估计下一状态的价值,但是每隔固定的时间步, QB 会被 QA 的权值更新,从而实现两个网络的同步。这种方法提高了Q值估计的准确性,从而可以在复杂的决策环境中提供更稳定和可靠的学习性能。

伪代码
# Same as DQN until the target calculation
for each minibatch sample (s, a, r, s'):
    if s' is terminal:
        y = r
    else:
        a' = argmax_a Q(s', a; θ)  # action selection by Q-network
        y = r + γ * Q(s', a'; θ')  # target calculation by target network
    update Q using gradient descent
应用范围
  • 减少估计偏差,提高策略稳定性。

  • 适用于需要精确动作价值估计的场景。

Dueling DQN

实现原理

Dueling DQN修改的是网络结构,算法中在输出层之前分流( dueling )出了两个层,如图所示,一个是优势层,用于估计每个动作带来的优势,输出维度为动作数一个是价值层,用于估计每个状态的价值,输出维度为 1。

DQN、Double DQN、Dueling DQN、Per DQN、NoisyDQN 学习笔记,强化学习,强化学习,DQN

这种结构设计使得Dueling DQN在评估每个状态的价值时更加准确,尤其是在那些动作选择不会极大影响环境的情况下。换句话说,即使在状态的价值变化不大时,Dueling DQN也能有效地学习到动作间的差异,这对于在复杂策略空间中找到最优策略特别有用。

应用范围

Dueling DQN特别适合于那些状态值比动作选择本身更重要的场景,例如,在一些策略游戏或者决策问题中,环境可能对特定动作不敏感(比如不需要开火?),此时,能够精确评估状态价值的Dueling DQN将非常有用。此外,Dueling DQN也适用于需要从大量相似动作中做出选择的任务,因为它能够更好地区分各个动作的微小差异。

伪代码
# Network architecture change
for each minibatch sample (s, a, r, s'):
    V = V(s; θV)  # State value function
    A = A(s, a; θA)  # Advantage function
    Q = V + (A - mean(A))  # Q value calculation
    update Q using gradient descent

Per DQN (Prioritized Experience Replay DQN)

Per DQN增强了基本DQN的经验回放机制,通过优先级回放来指导学习过程。在传统的经验回放中,训练样本是随机抽取的,每个样本被重新使用的概率相同。然而,并非所有的经验都同等重要。Per DQN通过计算时间差分误差(Temporal Difference Error,TD error),为每个经验样本分配一个优先级,优先级高的样本更有可能被抽取来进行学习。

  • 时序差分误差:TD error是实际奖励与当前Q值函数预测奖励之间的差异。较大的TD error意味着对应的经验可能会给我们的学习带来更多信息。
  • 优先级的设定:在经验优先回放(Prioritized Experience Replay)中,每个经验的优先级是根据其时序差分误差(TD error)的大小来设定的。TD error是实际奖励与估计奖励之间的差异,它反映了当前策略预测的准确性。一个高TD error的经验表示当前策略有更大的学习潜力,因此被赋予更高的优先级,以便更频繁地从经验回放中被抽样学习。
应用范围

Per DQN适用于那些代理可以从特定经验中快速学习的场景。在复杂的环境中,一些关键的决策点可能只出现几次,传统的随机抽样可能会忽略这些经验。Per DQN确保这些有价值的经验能够被更频繁地回顾和学习,从而加速学习过程,有助于更快地收敛到一个好的策略。

伪代码
initialize priority replay memory D
for each minibatch sample (s, a, r, s'):
    calculate TD error: δ = |r + γ * max_a' Q(s', a') - Q(s, a)|
    update priority of (s, a, r, s') in D based on δ
    update Q using gradient descent

缺陷:直接使用TD误差作为优先级存在一些问题。首先,考虑到算法效率问题,我们在每次更新时不会把经验回放中的所有样本都计算TD误差并更新对应的优先级,而是只更新当前取到的一定批量的样本。这样一来,每次计算的TD误差是对应之前的网络,而不是当前待更新的网络。

所以引入了额外的技巧:随机采样和重要性采样。

NoisyDQN

增加噪声层(炼丹的通用操作),提高模型泛化性,避免陷入局部最优解。文章来源地址https://www.toymoban.com/news/detail-809492.html

伪代码
initialize Q network with noisy layers
for each minibatch sample (s, a, r, s'):
    select action a using Q with noise
    execute action a, observe r, s'
    store transition, sample minibatch
    update Q using gradient descent
应用范围
  • 适用于探索性任务和非稳态环境。
  • 动态调整探索策略,适合于需要适应性探索的复杂场景。

到了这里,关于DQN、Double DQN、Dueling DQN、Per DQN、NoisyDQN 学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Pytorch实现强化学习——DQN算法

    目录 一、强化学习的主要构成 二、基于python的强化学习框架 三、gym 四、DQN算法 1.DQN算法两个特点 (1)经验回放 (2)目标网络 2.DQN算法的流程 五、使用pytorch实现DQN算法 1.replay memory 2.神经网络部分 3.Agent 4.模型训练函数 5.训练模型 6.实验结果 六、补充说明 强化学习主要由

    2023年04月20日
    浏览(32)
  • 基于深度强化学习(DQN)的迷宫寻路算法

    QLearning方法有着明显的局限性,当状态和动作空间是离散的且维数不高时可使用Q-Table存储每个状态动作的Q值,而当状态和动作时高维连续时,该方法便不太适用。可以将Q-Table的更新问题变成一个函数拟合问题,通过更新参数θ使得Q函数逼近最优Q值。DL是解决参数学习的有效

    2023年04月22日
    浏览(58)
  • 【深度强化学习】(1) DQN 模型解析,附Pytorch完整代码

    大家好,今天和各位讲解一下深度强化学习中的基础模型 DQN,配合 OpenAI 的 gym 环境,训练模型完成一个小游戏,完整代码可以从我的 GitHub 中获得: https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model DQN(Deep Q Network) 算法由 DeepMind 团队提出,是深度神经网络和 Q-Learning 算

    2023年04月08日
    浏览(33)
  • 【机器学习】强化学习(六)-DQN(Deep Q-Learning)训练月球着陆器示例

    概述 Deep Q-Learning(深度 Q 学习)是一种强化学习算法,用于解决决策问题,其中代理(agent)通过学习在不同环境中采取行动来最大化累积奖励。Lunar Lander 是一个经典的强化学习问题,其中代理的任务是控制一个着陆舱在月球表面着陆,最小化着陆过程中的燃料消耗。 以下

    2024年01月25日
    浏览(50)
  • DQN,DDPG,PPO 等强化学习算法在人工智能中的未来发展方向:从大规模到小规模部署

    作者:禅与计算机程序设计艺术 随着近年来人工智能领域的蓬勃发展,强化学习(Reinforcement Learning, RL)被越来越多的人认可并应用于人工智能领域。如今,RL已经可以处理许多复杂的问题,如自动驾驶、机器人控制等。在过去的一段时间里,我一直想和各位分享一下RL在人工

    2024年02月09日
    浏览(33)
  • 人工智能课程笔记(7)强化学习(基本概念 Q学习 深度强化学习 附有大量例题)

    强化学习和深度学习都是机器学习的分支,但是两者在方法和应用场景上有所不同。 强化学习 : 强化学习概述 :强化学习是一种通过智能体与环境进行交互来学习最优行动策略的算法。在强化学习中,智能体与环境不断交互,观察环境的状态并采取不同的行动,从而获得奖

    2024年01月17日
    浏览(40)
  • 安全强化学习笔记

    TRPO 如何看懂TRPO里所有的数学推导细节? - 小小何先生的回答 - 知乎 安全/约束强化学习路线图(Safe RL Roadmap)编辑于 2023-05-06 知乎 南山张学有 Safe RL 的一点点总结编辑于 2021-04-25 1.CPO 2.RCPO 3.CPPO-PID 4.SafeLayer+DDPG 5.Safety-Gym 【安全强化学习· 一】Safe Reinforcement Learning(一)2020

    2024年02月02日
    浏览(23)
  • 强化学习价值函数方法笔记

    在强化学习中,价值函数(Value Function)是一个核心概念,它用于衡量在不同状态或状态-动作对下,一个智能体(agent)可以获得的预期累积奖励。价值函数对于智能体做出决策和学习行为策略非常重要。 价值函数可以分为两种类型: 状态价值函数(State Value Function):记作

    2024年02月15日
    浏览(26)
  • 强化学习快速复习笔记--待更新

    蒙特卡洛方法 求解价值函数和状态价值函数,可以使用蒙特卡洛方法和动态规划。首先介绍一下蒙特卡洛的方法,这个方法是统计模拟方法,基于概率统计来进行数值计算。 优点: 不需要知道环境模型,直接从交互中学习 缺点: 每一次更新都需要完整的轨迹,使用一些具

    2024年02月15日
    浏览(28)
  • 迁移强化学习论文笔记(一)(Successor Features)

    M ≡ ( S , A , p , R , γ ) M equiv(mathcal{S}, mathcal{A}, p, R, gamma) M ≡ ( S , A , p , R , γ ) S cal S S :状态空间 A cal A A :行动空间 p p p : p ( ⋅ ∣ s t , a t ) p(cdotmid s_t,a_t) p ( ⋅ ∣ s t ​ , a t ​ ) 状态转移概率 R R R : R ( s t , a t , s t + 1 ) R(s_t,a_t,s_{t+1}) R ( s t ​ , a t ​ , s t + 1 ​ ) 奖励

    2024年04月17日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包