DQN学习笔记

DQN是一种深度强化学习算法,它将卷积神经网络与Q学习相结合,处理高维度状态空间。Q学习依赖Q表,但在状态动作空间大时效率低。DQN通过神经网络拟合Q函数,使用经验回放缓冲区和固定Q目标技术来优化学习过程。该文是作者的学习笔记,包括Q学习的基本概念和DQN的核心思想。
摘要由CSDN通过智能技术生成

DQN学习笔记

作为新手了解DQN的学习笔记,仅为自用,欢迎交流,不喜勿喷


一、DQN是什么?

DQN是DRL的其中一种算法,它要做的就是将卷积神经网络(CNN)和Q-Learning结合起来,CNN的输入是原始图像数据(作为状态State),输出则是每个动作Action对应的价值评估Value Function(Q值)。

所以可以这么理解,DQN是Q学习的升级版,那么我们首先就得理解,什么是Q学习。

1.1 Q学习

参考文献:强化学习基本概念

Q学习需要Q表,如图
关于什么是Q表,以及Q表的状态动作,可以参考:莫烦大神讲Q-learning

在这里插入图片描述
上面这个图,左边表格就是Q表,s1、s2…表示不同状态(state),a1、a2表示该状态下选取的不同动作(action),中间的数值就表示在该状态下选取该动作得到的奖励值(reward),也称为Q值。

机器学习的一般思想就是在当前状态s1下选取Q值最大的对应动作a1,得到奖励r1,动作a1又使得状态s1变成s2,如此循环,最终使得总奖励total_reward最大。

Q表在一个状态值、动作值很少的时候很高效,但是当状态-动作空间较大时,让机器每次去Q表里面一个一个找是很麻烦的,所以就提出DQN的概念。

Q学习伪代码如下:
在这里插入图片描述
可能很多人看不懂这个伪代码,我放莫烦大神的讲解视频,我一个纯小白都秒懂 莫烦Q-learning 一定要看他下一个例子讲解视频。他代码有些地方略过了,而且我接触python不多,所以附上我对他“探索者游戏”的代码注解,小白应该也能看懂。

此外,Q学习有几个要点需要注意:
1、Q学习是off-police,Sarsa是on-poloce。关于两者区别,请观看:莫烦讲Sarsa
2、Q学习根据当前环境S计算得到最优动作A,根据该动作A得到下个环境S_;
Sarsa流程同上,但是得到下个环境S_后,还要根据下个环境S_得到下个动作A_,并且A_就是要采取的动作

2、Q学习的代码实现

1.2 DQN基本思想

既然一个一个找很麻烦,我们能不能把Q表拟合成一个函数。还是上面这个图,我们看下面两个流程图
在这里插入图片描述
NN表示神经网络,通过神经网络生成Q值,就相当于一个拟合的Q函数(这个拟合函数需要不断更新)

左边这个,输入是状态和动作,输出是Q值
右边这个,输入是当前状态,输出是不同动作和对应的Q值。我们主要用右边这个思想编程。

1.3 DQN的两个重要技术

1.3.1 experience replay

1.3.2 fixed Q-targets

1.4 DQN实现

机器学习,顾名思义,得让机器自己来学习,自己提高拟合水平,因此下面这个图里面的NN(神经网络)是不断更新的。
在这里插入图片描述
其实就是
在这里插入图片描述

只把状态s作为输入,但是输出的时候输出每一个动作的Q值,也就是输出一个向量
[公式],

记住这里输出是一个值,只不过是包含了所有动作的Q值的向量而已。这样我们就只要输入状态s,而且还同时可以得到所有的动作Q值,也将更方便的进行Q-Learning中动作的选择与Q值更新
(每次学习从记忆库memory中抽取一定量的训练数据batch_memory,根据batch_memory中的 s 和 s_ 分别输入到eva-net和target-net神经网络中,计算得到q-eval和q-next,然后根据dqn的q现实更新公式:
在这里插入图片描述
计算得到q-target,计算损失函数,使用优化器最小化误差
在这里插入图片描述

看这篇文章:dqn算法详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值