强化学习 - 机器人走迷宫
通过这篇文章,分享基于Udacity的机器人走迷宫项目,使用强化学习实现;
问题描述
规则、需求如下:
- 智能机器人显示在右上角,在迷宫中,有陷阱(红色炸弹)及终点(蓝色的目标点)两种情景,机器人要尽量避开陷阱、尽快到达目的地;
- 机器人可执行的动作包括:向上走 u、向右走 r、向下走 d、向左走 l;
- 执行不同的动作后,根据不同的情况会获得不同的奖励,具体而言,有以下几种情况;
- 撞到墙壁:-10
- 走到终点:50
- 走到陷阱:-30
- 其余情况:-0.1
- 通过修改 robot.py 中的代码,来实现一个 Q Learning 机器人,实现上述的目标;
算法Q-Learning
QLearning是强化学习算法中value-based的算法,Q即为Q(s,a)就是在某一时刻的 s 状态下(s∈S),采取 动作a (a∈A)动作能够获得收益的期望,环境会根据agent的动作反馈相应的回报reward r,所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作;
项目截图
项目总结
强化学习也是目前比较热门的方向,与传统ML不同的是,强化学习并不是数据贪婪性算法,即不需要预置大量的历史数据,而是通过不断的探索、更新、探索、更新的方式来不断的优化自身的策略,这一点相信在类似游戏AI的领域的应用是广泛的,当然,本文只是抛砖引玉,以QLearning这样一个简单易于理解的算法作为引导,更多的是想展示强化学习的应用场景、领域,为大家打开思路,如果大家需要完整浏览整个项目,可以直接在下面的项目链接找到,可以通过nbviewer浏览或者通过github直接下载下来运行,并调试各个参数看动态效果,相信动手后,会有更多体会;
项目地址
因为项目使用Jupyter写的,而目前博客园不支持iframe元素,因此无法很好的展示,大家可以直接生成的页面查看:
https://nbviewer.jupyter.org/github/NemoHoHaloAi/qlearning_maze/blob/master/robot_maze.ipynb
当然也可以直接去Github上找到:
https://github.com/NemoHoHaloAi/qlearning_maze
如果可以顺便Follow、Fork、Start,那就感激不尽了,后面会持续分享自己的一些工作、生活、学习上的收获,如果能对大家有一点点的帮助,那是最好不过的;