DNQ(1)

什么是DQN

强化学习和神经网络

DQN(Deep Q Network)是一种用Q Learing和神经网络结合的一种强化学习的方法,相比于传统的Q Learning运用了神经网络的方法。

神经网络的作用

神经网络和Q learning

对比于传统的Q Learning,DQN还额外附加了一个NN(Neural Network),它的通过输入的状态S得到各个不同的动作Actions的Q值**(注意:Q值和奖励Reward不同)**。

另一个作用,在DQN中存在一个存储器,存储了模型在自我学习过程中的S(当前状态),A(采取的某一个行动),R(该动作的奖励),S_(下一状态),(i.e,记作[S,A,R,S_])。

算法更新

Q-learning简介

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NBYn4Nj0-1620993575475)(https://mofanpy.com/static/results/ML-intro/q3.png)]

简单说明一下传统的Q Learning:Q-Learing中的Q值分为两种Q_predict(Q估计值)和Q_target(Q现实值),在上图中显示很清楚,Q现实值需要通过下一个状态(S_)和奖励R通过公式计算得到,而Q估计值是指当前转态S要采取某一个动作的值。(注意:一定要明白这一点,图中这个更新过程只是对Q(s1,a2)的更新)
其中,gamma,alpha都是超参数(也就是自己设定的值)
算法

DQN算法

DQN算法

有了Q Learning的一点基础后,相对来说,DQN只是多了一个卷积神经网络(或者其他神经网络),神经网络的作用上面已经说过了。DQN并没有像Q learning一样的Q值表(Q_table),但是它的Q值都是通过神经网络来计算得出的,如果确定了神经网络的参数,那么也就确定了各个状态S对应的动作Actions的Q值,也就相当于确定了一个Q值表。这样对于一个有大量状态和大量动作的模型来说就方便了太多太多。

神经网络参数更新

参数更新

注意,以上的Q值都是通过神经网络的过程计算得到的,并不是查询Q值表得到的。我们通过公式得到Q现实和Q估计,有了这两个数据,就能通过神经网络的方法来更新神经网络的参数,也就间接的相当于更新Q值表。

DQN算法更新

DQN两大利器

DNQ两大利器

我们可以把DNQ想成两条主线,一条主线负责行动(例如在下围棋时,就是负责下围棋),另一条主线则是通过之前的动作来对神经网络进行学习训练。

Q learning 是一种 off-policy 离线学习法, 它能学习当前经历着的, 也能学习过去经历过的, 甚至是学习别人的经历. 所以每次 DQN 更新的时候, 我们都可以随机抽取一些之前的经历进行学习. 随机抽取这种做法打乱了经历之间的相关性, 也使得神经网络更新更有效率. Fixed Q-targets 也是一种打乱相关性的机理, 如果使用 fixed Q-targets, 我们就会在 DQN 中使用到两个结构相同但参数不同的神经网络, 预测 Q 估计 的神经网络具备最新的参数, 而预测 Q 现实 的神经网络使用的参数则是很久以前的. 有了这两种提升手段, DQN 才能在一些游戏中超越人类.

简单例子描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EXQbrUCy-1620993575483)(https://mofanpy.com/static/results/ML-intro/q3.png)]
我们以之前的Q learning为例,我们的目标是更新神经网络参数(在Q learning中为Q值表),假设我们已经记录了2个数据,为S1和S2就是图中这个表,我们将这两个状态输入当前的神经网络中,会得到一组全新的Q值表,这就是Q估计值,那么Q现实值是什么呢?

在我们的记录中也记录这某状态下采取某行动的奖励R,例如(S1,a2)状态的奖励,通过各个奖励R和S_的Q值,在通过图中公式,能够得到Q现实值,之后再更新神经网络的参数,这样一次也就完成了。
之后就是循环往复的过程。

参考文献

该文章只是个人简短理解,如果想了解更多和具体代码例子,建议点击下面链接

https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/intro-DQN/

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DNQ代表的是"Did Not Qualify"(未能取得资格)的意思,是一种在比赛或竞赛中常见的术语。Matlab是一种用于科学计算和数值分析的编程语言和环境。 DNQ Matlab则可以理解为在使用Matlab进行科学计算和数值分析时,出现了未能取得资格或者未能达到预期结果的情况。 这种情况可能有多种原因。首先,可能是由于代码错误或者编程技巧不足导致的。Matlab是一种强大的工具,但也需要一定的编程能力和经验才能正确使用。如果代码中出现了错误或者使用了不适当的算法,就可能导致结果不符合预期。 另外,DNQ Matlab也可能是由于问题本身的复杂性或者输入数据的不准确性导致的。有些科学计算和数值分析问题非常复杂,需要深入理解问题的本质和使用适当的方法才能得到准确的结果。同时,输入数据的准确性也是影响结果的重要因素,如果输入数据有误或者不准确,得到的结果就可能不符合预期。 为了避免DNQ Matlab的情况发生,我们可以采取一些措施。首先,可以提高自己的编程技能和对Matlab的理解,学习更多的编程技巧和数值计算方法。同时,应该仔细分析问题,并选择适合的算法和方法来解决。此外,对输入数据进行仔细检查和验证,确保其准确性。 总之,DNQ Matlab是在使用Matlab进行科学计算和数值分析时可能遇到的问题,需要我们提高编程技能、合理选择算法和方法,并确保输入数据的准确性来避免这种情况的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值