QLearning

QLearning是强化学习中的一种Value-Based算法,通过计算出一张Q-Table表,用来记录每种状态下采取每个动作能够获得的最大奖励,然后通过这张表就能找到每个状态下的最优动作,从而保证最后的收益最大化
参数:
actions:所有动作集合
learning_rate:学习率, 位于[0,1]之间,值越小,意味着旧的信息越重要
discount_factor:折扣因子,位于[0,1]之间,表示远见程度,值越小,意味着当下的奖励越比未来的奖励重要
epsilon:贪婪系数,位于[0,1]之间,采用贪心策略的概率
q_table:Q-Table表,用来记录每种状态下采取每个动作能够获得的最大奖励,初持状态全部为0

DQN(Deep Q Network)

QLearning问题:Q-Table的大小等于状态数量*动作数量。当状态和动作数量很多的时候,Q-Table就会变的很大,查找和存储都会消耗大量的时间和空间。
QLearning本质上是建立了个(状态+动作)与(在该状态下执行该动作所获得最大奖励)之间的映射关系,抽象来看就是在输入参数和输出参数之间建立了一种映射关系,而这恰好就是神经网络所擅长的,于是自然而然的想到能不能利用神经网络来取代Q函数的计算,进一步的,我们计算出Q-Table后还需要根据Q-Table来选择当前状态下的最优动作,那能不能直接实现当前状态到最优动作之间的端到端映射呢?这种方法就叫做Deep Q Network。

具体:
QLearning:Q(s,a)=Q(s,a)+alpha*[r+gammamaxQ(s’,a’)-Q(s,a)]
求解出一个函数来近似Q函数
f(s,a,w)≈Q(s,a),w是一个参数矩阵,比如最简单的线性函数:
Q(s,a) ≈f(s,a,w)= w1
s+w2a+w3
实际不可能这么简单,f应该是一个非常复杂的函数,所以可以采用神经网络来表示这个函数,神经网络可以从大量的样本数据中拟合出一个最相似的f来表示Q,而这需要一个前置条件:确定损失函数(判定f接近Q的标准)
借鉴QLearning的算法,利用r+gamma
maxQ(s’,a’)-Q(s,a)来作为损失函数(因为我们的目标也是为了让Q值逼近目标Q值),即
r+gammamaxQ(s’,a’,w)-Q(s,a,w)
为了方便后期数学计算的方便,取个平方,最终
L(w)=E[(r+gamma
maxQ(s′,a′,w)−Q(s,a,w))^2]
有了损失函数,那么就可以开始训练神经网络了

DQN与QLearning算法的不同点

  • 用神经网络取代Q-Table来计算Q值,解决维度爆炸的问题
  • 记忆库 ,用于存储过去的经验,记忆库有两个特点
    1. 随机抽取,可以移除数据之间的相关性。如果我们采用的不是随机抽取,有可能我们获取到的数据都是连续相关的,那么就可能出现训练的数据都是某个状态下的数据,那么训练就会失败,通过随机抽取,可以切断这种相关性,保证训练数据样本分布的均匀。
    2. 滚动更新,即用最新的记忆替换掉最老的记忆,因为我们的记忆库肯定是有限的,不可能无限存储记忆,因此需要对记忆进行更新,而正常的逻辑里面,新的记忆会比老的记忆更有价值(当然,这个并不是绝对的,也有可能老的记忆里面也有重要的经验,这个属于DQN后期的优化内容)
  • 暂时冻结 q_target 参数 ,让目标固定,使神经网络更好的收敛

学习记录–引用自学长的微信朋友圈笔记加上自己的理解

QLearning和DQN相关推荐

  1. 【深度学习】强化学习Q-Learning和DQN的应用(迷宫)

    [深度学习]强化学习Q-Learning和DQN的应用(迷宫) 文章目录 1 Q-Learning 2 例子 3 用 network 解决 4 DQN机器人走迷宫代码4.1 基础搜索算法介绍(广度优先 ...

  2. 强化学习(八) - 深度Q学习(Deep Q-learning, DQL,DQN)原理及相关实例

    深度Q学习原理及相关实例 8. 深度Q学习 8.1 经验回放 8.2 目标网络 8.3 相关算法 8.4 训练算法 8.5 深度Q学习实例 8.5.1 主程序 程序注释 8.5.2 DQN模型构建程序 ...

  3. 强化学习扫盲贴:从Q-learning到DQN

    本文转载自知乎专栏「机器学习笔记」,原文作者「余帅」,链接 https://zhuanlan.zhihu.com/p/35882937 1 本文学习目标 1. 复习Q-Learning: 2. 理解什 ...

  4. 一文读懂Q-Learning,DQN,DDPG的连接关系

    最近几个月一直在看强化学习,把强化学习导论(Reinforcement Learning:An Introduction)跟着b站视频看了一遍,发现书上的大部分是理论,实践代码并不多,所以可以看看知乎 ...

  5. 强化学习——从Q-Learning到DQN到底发生了什么?

    1 学习目标 1. 复习Q-Learning: 2. 理解什么是值函数近似(Function Approximation): 3. 理解什么是DQN,弄清它和Q-Learning的区别是什么. 2 用 ...

  6. 对Q-Learning算法的改进:Deep Q-Learning(DQN)

    本篇主要讲述Q-Learning的改进算法,Deep Q-Learning,首先了解一下Q-Learning算法咯 Q-Learning算法 众所周知,Q-Learning是解决强化学习问题的算法.解 ...

  7. Deep Q-Learning(DQN)

    文章目录 1.绪论 2.公式定义 3.深度强化学习 4.DQN算法伪代码 5.预处理和模型架构 6.实验 1.绪论 论文<Playing Atari with Deep Reinforcemen ...

  8. 强化学习(Reinforcement Learning)中的Q-Learning、DQN,面试看这篇就够了!

    文章目录 1. 什么是强化学习 2. 强化学习模型 2.1 打折的未来奖励 2.2 Q-Learning算法 2.3 Deep Q Learning(DQN) 2.3.1 神经网络的作用 2.3.2 ...

  9. 强化学习——从Q-Learning到DQN

    1 学习目标 复习Q-Learning: 理解什么是值函数近似(Function Approximation): 理解什么是DQN,弄清它和Q-Learning的区别是什么. 2 用Q-Learnin ...

最新文章

  1. OpenCV知识和项目列表
  2. Boost::context模块callcc的stack测试程序
  3. docker添加jar包_docker配置容器运行jar包
  4. 小白开学Asp.Net Core 《八》
  5. 重学TCP协议(5) 自连接
  6. mysql 加入系统服务_添加Mysql到Windows系统服务
  7. Codeforces Round #202 (Div. 1): D. Turtles(Lindström–Gessel–Viennot lemma定理+DP)
  8. java基础代码实例_全网都在找的Python简单基础小程序的实例代码
  9. 【学习笔记】cs231n-assignment1-two_layer_net
  10. 全球及中国阻力带行业市场前瞻及投资竞争力分析报告2022-2027年
  11. 20行代码教你如何批量提取图片中文字
  12. 数学基础之代数学(6)——群
  13. 深入理解二叉搜索树(BST)
  14. R语言绘制不一样的韦恩图
  15. 壳聚苯乙烯/单分散核-壳结构/中空/介孔二氧化硅微球的研究
  16. 《比尔总动员》今日敞开测验 激活码炽热发放
  17. anaconda完全卸载方法
  18. vs2015下openGL freeglut+glew+gltools64位傻瓜式环境配置
  19. apache camel 相关配置_Apache Camel Spring Boot
  20. 分治法实验-寻找第k小元素

热门文章

  1. [转载备用]极酷SevenColorPlayer网页播放器(炫彩广告版),最强播放器定制
  2. win8 php 64位下载地址,万能驱动win8/win8.1下载 64位32位
  3. [附源码]java毕业设计宠物店管理系统
  4. 图片无损放大,让图片放大不模糊不失真
  5. python 生成异教徒头像
  6. office 2010安装
  7. 高通平台使用64位win7系统无法安装驱动的解决方法
  8. springboot项目登录+注册
  9. PMP第六版_1~3章
  10. 【BP数据预测】布谷鸟算法优化BP神经网络数据预测【含Matlab源码 1121期】