强化学习从基础到进阶 - 案例与实践 [4.2]:深度 Q 网络 DQN-Cart pole 游戏展示
强化学习从基础到进阶-案例与实践[4.2]:深度 Q 网络 DQN-Cart pole 游戏展示
强化学习(Reinforcement learning,简称 RL)是机器学习中的一个领域,区别与监督学习和无监督学习,强调如何基于环境而行动,以取得最大化的预期利益。
基本操作步骤:智能体
agent
在环境environment
中学习,根据环境的状态state
(或观测到的observation
),执行动作action
,并根据环境的反馈reward
(奖励)来指导更好的动作。
比如本项目的 Cart pole 小游戏中,agent
就是动图中的杆子,杆子有向左向右两种action
。
1.经验回放部分
经验回放主要做的事情是:把结果存入经验池,然后经验池中随机取出一条结果进行训练。
这样做有两个好处:
减少样本之间的关联性
提高样本的利用率
之所以加入 experience replay 是因为样本是从游戏中的连续帧获得的,这与简单的 reinforcement learning 问题相比,样本的关联性大了很多,如果没有 experience replay,算法在连续一段时间内基本朝着同一个方向做 gradient descent,那么同样的步长下这样直接计算 gradient 就有可能不收敛。因此 experience replay 是从一个 memory pool 中随机选取了一些 expeirence,然后再求梯度,从而避免了这个问题。
2.DQN
DQN 算法较普通算法在经验回放和固定 Q 目标有了较大的改进,主要原因:
经验回放:他充分利用了 off-colicp 的优势,通过训练把结果(成绩)存入 Q 表格,然后随机从表格中取出一条结果进行优化。这样子一方面可以:减少样本之间的关联性另一方面:提高样本的利用率 注:训练结果会存进 Q 表格,当 Q 表格满了以后,存进来的数据会把最早存进去的数据“挤出去”(弹出)
固定 Q 目标他解决了算法更新不平稳的问题。 和监督学习做比较,监督学习的最终值要逼近实际结果,这个结果是固定的,但是我们的 DQN 却不是,他的目标值是经过神经网络以后的一个值,那么这个值是变动的不好拟合,怎么办,DQN 团队想到了一个很好的办法,让这个值在一定时间里面保持不变,这样子这个目标就可以确定了,然后目标值更新以后更加接近实际结果,可以更好的进行训练。
3.模型 Model
这里的模型可以根据自己的需求选择不同的神经网络组建。
DQN
用来定义前向(Forward
)网络,可以自由的定制自己的网络结构。
4.智能体 Agent 的学习函数
这里包括模型探索与模型训练两个部分
Agent
负责算法与环境的交互,在交互过程中把生成的数据提供给Algorithm
来更新模型(Model
),数据的预处理流程也一般定义在这里。
5.模型梯度更新算法
6.训练函数与验证函数
设置超参数
filling memory...filling memory donestart training...episode:50 e_greed:0.0992949999999993 test_reward:9.0episode:100 e_greed:0.0987909999999988 test_reward:9.8episode:150 e_greed:0.09827199999999828 test_reward:10.0episode:200 e_greed:0.09777599999999778 test_reward:8.8episode:250 e_greed:0.09726999999999728 test_reward:9.0episode:300 e_greed:0.09676199999999677 test_reward:10.0episode:350 e_greed:0.0961919999999962 test_reward:14.8
项目链接 fork 一下即可运行
https://www.heywhale.com/mw/project/649e7d3f70567260f8f11d2b
更多优质内容请关注公号:汀丶人工智能
版权声明: 本文为 InfoQ 作者【汀丶人工智能】的原创文章。
原文链接:【http://xie.infoq.cn/article/b466479bdcd9452d292a42eb7】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论