最近研究了下RL,挺有意思的,在这里把心得写下来。
学习方式:
1,学习 MIT出的这本书《Reinforcement Learning: An Introduction》
非常不错的一本书,非常是和RL初学者,所讲概念清晰易懂、深入浅出。
关键概念:
Reward, Action, Value Function, Markov Decision Process, TD, Q-learning
2,阅读RL相关论文
* Playing Atari with deep reinforcement learning (这篇论文是下一篇的原型)
本文利用RL的方法来玩一种电子游戏:atari 2600(一种我们小时候玩的游戏,比如里面有一个是坦克大战, 可以操纵坦克转向并发射炮弹)
其训练出来的网络,在很多游戏中,能够比人玩得更出色!
关键点:
RL里其实最麻烦也是最关键的是Value Function的计算,这篇文章中作者通过function approximation来近似Value Function;
Value Function的输入是一帧图像,输出是不同Action下Reward的期望值;(这个Value Function用的是DNN网络)
采用memory-replay方式进行训练;(将近期的experience缓存起来,每次训练网络的时候,从这个缓存里sample一些样本进行训练)
* Human level control through deep reinforcement learning (发表在nature上的一篇paper,内容与上一篇基本相同)
思想同上一篇
这篇文章有对应的源码,基于torch实现。
程序运行起来会占用较大内存(实际测试达到9G左右内存);
程序比较耗计算资源,最好用GPU,全部训练完也要十几天,实际发现训练两天左右后(大概1千万次迭代),能够达到一个比较好的状态(目测是这样的);