DQN的e-greedy策略理解
阅读蘑菇书源码时,在写DQN网络的智能体是这样写的:
class DQN:def __init__(self, state_dim, action_dim, cfg):self.action_dim = action_dim # 总的动作个数self.device = cfg.device # 设备,cpu或gpu等self.gamma = cfg.gamma # 奖励的折扣因子# e-greedy策略相关参数self.frame_idx = 0 # 用于epsilon的衰减计数self.epsilon = lambda frame_idx: cfg.epsilon_end + \(cfg.epsilon_start - cfg.epsilon_end) * \math.exp(-1. * frame_idx / cfg.epsilon_decay)self.batch_size = cfg.batch_sizeself.policy_net = MLP(state_dim, action_dim, hidden_dim=cfg.hidden_dim).to(self.device) # 定义一个深度学习网络self.target_net = MLP(state_dim, action_dim, hidden_dim=cfg.hidden_dim).to(self.device) # 目标深度学习网络for target_param, param in zip(self.target_net.parameters(),self.policy_net.parameters()): # copy params from policy nettarget_param.data.copy_(param.data)self.optimizer = optim.Adam(self.policy_net.parameters(), lr=cfg.lr)self.memory = ReplayBuffer(cfg.memory_capacity)
对于衰减函数,可以描述成:
ε=εend+(εstart−εend)×e−indexεdecay\varepsilon = {\varepsilon _{end}} + ({\varepsilon _{start}} - {\varepsilon _{end}}) \times {e^{ - \frac{{index}}{{{\varepsilon _{decay}}}}}}ε=εend+(εstart−εend)×e−εdecayindex
利用MATLAB编程看一下这个函数的特点:
frame_idx=1:10000;
epsilon_end=0.01;
epsilon_start=0.90;
epsilon_decay=500;
epsilon=epsilon_end+(epsilon_start-epsilon_end).*exp(-frame_idx./epsilon_decay);
plot(frame_idx,epsilon)
hold on
scatter(500,epsilon(500))
绘图为:
可以看到,随着迭代次数frame_idx逐渐增大,最终的epsilon会越来越小,从初始的epsilon_start逐渐递减无限逼近epsilon_end实现策略收敛。
图中红色圆圈为迭代次数等于epsilon_decay时的位置,大概从这个位置开始放缓递减速度,之后逐渐收敛,达到策略稳定的效果。
这个策略在Q-learning里也是一样的。
DQN的e-greedy策略理解相关推荐
- greedy策略求解活动选择问题 ActivitySelectProblem
活动选择问题:有N个活动,仅安排一个人去完成,求一个人在不限时的情况下最多能完成几个活动,要求:活动包含开始时间和结束时间,活动的时间点不能变,就是说到时了,到点的活动必须开始. 这个问题为什么能够用 ...
- 强化学习の学习笔记(一)——多臂老虎机、ε-greedy策略、乐观初始值、增量式实现、梯度赌博机
文章目录 前言 符号约定 多臂老虎机 基于平均学习Q函数 ε-greedy策略 乐观初始值 增量式实现 梯度赌博机 前言 因为毕设的关系,要学习点强化学习的内容.我采用的教材是Richard S. S ...
- 强化学习之迷宫Q-Learning实践笔记——入门篇
众所周知,在2016年,当AlphaGO战胜了世界围棋冠军李世石之后,整个业界都为之振奋,越来越多的学者意识到强化学习在人工智能领域将是更趋近人类智能的研究方向,非常令人激动.强化学习是一个非常有趣且 ...
- 强化学习(八) - 深度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模型构建程序 ...
- PaddlePaddle版Flappy-Bird—使用DQN算法实现游戏智能
刚刚举行的 WAVE SUMMIT 2019 深度学习开发者峰会上,PaddlePaddle 发布了 PARL 1.1 版本,这一版新增了 IMPALA.A3C.A2C 等一系列并行算法.作者重新测试 ...
- 论文趣读:人工智能里程碑?回顾2015年登上Nature的DQN(全文翻译+批注)
简介: 你有多久没读过学术论文了?高水平论文多为英文,笔者翻译了一篇 2013 年 Google 的 DeepMind 的深度强化学习论文,这篇文章被视为 强化学习+深度学习 的里程碑之作,其成果于 ...
- 第1期技术: DQN算法原理及实现过程
深度强化学习实验室(DeepRLhub) 访问官网: http://deeprlhub.com 特别声明:本文是作者在充分知晓著作权细则的情况下,经过个人付出或者翻译他人著作内容,并已注明翻译原文来源 ...
- 深度强化学习系列(6): DQN原理及实现
利用神经网络近似值函数的方法表示为: V ^ ( s , w ) ≈ V π ( s ) q ^ ( s , a , w ) ≈ q π ( s , a ) \hat{V}(s, w) \approx ...
- 深度强化学习(DRL)简介与常见算法(DQN,DDPG,PPO,TRPO,SAC)分类
简单介绍深度强化学习的基本概念,常见算法.流程及其分类(持续更新中),方便大家更好的理解.应用强化学习算法,更好地解决各自领域面临的前沿问题.欢迎大家留言讨论,共同进步. (PS:如果仅关注算法实现, ...
- DRN: A Deep Reinforcement Learning Framework for News Recommendation理解
这篇文章是微软18年发的基于强化学习来做推荐系统的文章. 研究推荐系统一个月有余,总觉得自己的模型过分简单,单纯的无脑过FC把人都整的蠢蠢的,于是就搜寻了一下有没有别的方式来做推荐,就发现了这一篇文章 ...
最新文章
- MS SQL Server查询优化方法
- Cloudify — Blueprints
- 【每日算法】桶排序算法
- change事件判断ajax,jquery中change事件里面if语句失效
- Leet Code OJ 202. Happy Number [Difficulty: Easy]
- 如何编写 Cloud9 JavaScript IDE 的功能扩展
- 9.1-微操作命令的分析(学习笔记)
- eclipse查看android源码包(eclipse导入android源码包)
- bytebuf池_netty源码解析(4.0)-26 ByteBuf内存池:PoolArena-PoolSubpage
- 四种依恋类型_“我值得被爱吗?”| 如何在亲密关系中培养安全型依恋
- R语言统计分布及模拟
- Android 手机成监控:仍在“逃亡”的斯诺登开发了款反间谍应用
- UVA10473 Simple Base Conversion【进制转换】
- session放入缓存(redis)、DB
- maven安装oracle驱动,maven 安装 Oracle 驱动 ojdbc14.jar
- 手眼标定,我的结果显示手和眼相距上千米!手眼标定结果准确率如何提高?
- 二叉树前中后序遍历及查找
- opencv python 人脸识别 相似度_OpenCV+python 人脸识别
- bulma css 中文,Bulma CSS - CSS类
- 夜雪潇潇,飘如落羽,一片片一朵朵