From:

http://wanghaitao8118.blog.163.com/blog/static/13986977220153811210319/

accessed 2016-03-10

深度强化学习(Deep Reinforcement Learning)的资源

Google的Deep Mind团队2013年在NIPS上发表了一篇牛x闪闪的文章,亮瞎了好多人眼睛,不幸的是我也在其中。前一段时间收集了好多关于这方面的资料,一直躺在收藏夹中,目前正在做一些相关的工作(希望有小伙伴一起交流)。

一、相关文章

关于DRL,这方面的工作基本应该是随着深度学习的爆红最近才兴起的,做这方面的研究的一般都是人工智能领域的大牛。最早(待定)的一篇可以追溯到2010年,Lange[1]做的相关工作。 提出了Deep auto-encoder用于基于视觉的相关控制,和目前的架构其实已经很相似了。接下来,在2011年,Cuccu等人[2](Jurgen Schmidhuber课题组的),做了一些相关的工作(有和DRL靠近的意思)。关于这位瑞士的大牛Jurgen先生,他去年写了一篇关于DL的综述,这不是关键,关键是这货引用了888篇参考文献,这货必定受了中国高人指点(因为中国人很喜欢的),事实上他也做中文识别(我都惊呆了)。还是2011年,Abtahi等人[3]用DBN替代传统的强化学习中的逼近器(做RL的人是不是很亲切,和Deep mind就差一点儿额!有木有觉得很可惜,几乎都摸到Nature的门上了), 。2012年的时候,Lange[4]这人更进一步开始做应用了,提出Deep Fitted Q学习做车辆控制,不过效果不咋地。后来2012年的时候,就有人开始写深度强化学习的相关应用前景和综述了,比如Arel[5](大牛们还是看的比较远的)的。然后时间就到了2013年,Deep Mind团队在nips上发表了他们的文章[6],业界都惊呆了,(RL和DL还可以这样玩儿)。但是,刚出来的时候,他们不给代码,各路牛人震惊之余开始搞逆向工程,最后真有一帮人把代码写出来了(囧啊!我为什么写不出来呢?)后来更给力的就是Deep mind[7]居然又更进一步发到nature上去了。 反正我当时知道后都惊呆了,人工智能领域的人开始狂欢了,各种摇旗呐喊的人,然后现在这东西开始变得炙手可热,不知道会不会像Google眼镜一样。关于DRL的发展就是这个样子,接下来就看看那些个人怎么给呐喊的吧!
 
二、科学评论

看看人家外国人怎么说吧!

还有很多很多就不一一列举了。

三、相关代码

这部分应该是大家最关心的,我想大部分看到文章的第一想法是代码呢!擦,其实我也是这么想的,谁叫自己的coding能力不够呢!没办法,本人在网上(github.com)深挖了好久,没想到大牛真的好多好多啊!

  1. 排在第一的当然是google自己公布的代码啊!真是业界良心啊!https://sites.google.com/a/deepmind.com/dqn/ 。可惜注释好少。。。。。是基于Torch 7的代码,本人又硬着头皮学了lua。话说我这几个月我就在和各种脚本语言打交道,都是泪啊!备注,deep mind的git地址https://github.com/deepmind 。话说没有GPU的电脑真心不要跑了,我跑了13个小时才跑了大概1/20~~~建议在ubuntu下面跑,最好版本高一些;
  2. 然后就是各路人马(大牛们)的逆向工程。https://github.com/spragunr/deep_q_rl ,作者Spragunr公布的基于python各种工具的代码,这位大牛利用外界工具的能力真实吊炸天,好多工具啊!opencv、cython、rl-glue、theano等等。我表示在ubuntu14.04LTS上面配置了好久,发现电脑没有GPU,跑不起来,整个人都不好了,还有一个貌似是其学生的https://github.com/brian473/neural_rl ,里面也需要配置python的库,theano之类的,步骤比较多~不过大牛的学生都是大牛。
  3. https://github.com/kristjankorjus/Replicating-DeepMind ,这里Kristjankorjus大牛基于convnet的东东,发布了这一代码,也是基于python的,我表示没有跑过,不清楚状况,貌似也要GPU,也要配置一堆库。
  4. Stanford的Karpathy等人复现了DQN,但是是用的js,开始真是吓尿了,在浏览器里面跑额!https://github.com/karpathy/convnetjs ,这个demo不错,可惜只能show一下没啥价值,网页可见http://cs.stanford.edu/people/karpathy/convnetjs/ 。还有一点,这人学生更牛,直接用Torch 7给实现了,(阅读了代码之后发现结构和Google给的几乎一模一样,而且注释相当详细),https://github.com/fangzai/DeepQLearning 。忘了源地址在哪儿了,我把这个到我的git上了,有点儿对不起原作者了。
  5. 也有人用caffe实现了,是个日本人。目前有两个地址,https://github.com/chiggum/AI/tree/master/rl/atari_agent,和https://github.com/muupan/dqn-in-the-caffe 第二个是日本人写的(还真牛)。好多人喜欢用caffe,不过貌似是没有torch 7方便,有一个好处就是直接是C++,效率比较高。不过,这两个程序我都没有跑过,看作者给的结果,挺不错的。
  6. 上面说的搞逆向的人爱沙尼亚Ilya Kuzovkin的关于google源码的改进,还有相关电脑的配置信息。https://github.com/kuz/DeepMind-Atari-Deep-Q-Learner 。这里跟一下他们的报告https://courses.cs.ut.ee/MTAT.03.291/2014_spring/uploads/Main/Replicating%20DeepMind.pdf ,赶脚特别专业,和这个作者联系过,人特别很nice。
  7. 还有一些基本都是他们的fork出来改进的,读者自己去挖吧!

基本上重要的就是这么多了,然后外围的关于Torch 7和其他东西的安装就不提了。

三、论坛

这是google上的一个小组,里面有不少人讨论DQN的算法以及代码使用心得,有兴趣的可以加入。

https://groups.google.com/forum/#!topic/deep-q-learning

最后用Deep Mind的主页镇楼http://deepmind.com/ 。

四、补充

在跑Deep Mind的程序的时候,可能会遇到一些问题

问题1

在convnet.lua的22行中报错,返回nill value,这个地方对于torch的设置有问题,请看如下网址。

http://stackoverflow.com/questions/29564360/bug-encountered-when-running-googles-deep-q-network-code

  PS:欢迎各位大小牛牛补充~~~

[1] S. Lange and M. Riedmiller, "Deep auto-encoder neural networks in reinforcement learning," in IJCNN, 2010, pp. 1-8.

[2] G. Cuccu, M. Luciw, J. Schmidhuber, and F. Gomez, "Intrinsically motivated neuroevolution for vision-based reinforcement learning," in Development and Learning (ICDL), 2011 IEEE International Conference on, 2011, pp. 1-7.

[3] F. Abtahi and I. Fasel, "Deep belief nets as function approximators for reinforcement learning," RBM, vol. 2, p. h3, 2011.

[4] S. Lange, M. Riedmiller, and A. Voigtlander, "Autonomous reinforcement learning on raw visual input data in a real world application," in Neural Networks (IJCNN), The 2012 International Joint Conference on, 2012, pp. 1-8.

[5]  I. Arel, "Deep Reinforcement Learning as Foundation for Artificial General Intelligence," in Theoretical Foundations of Artificial General Intelligence, ed: Springer, 2012, pp. 89-102.

[6] V. Mnih, K. Kavukcuoglu, D. Silver, A. Graves, I. Antonoglou, D. Wierstra, et al., "Playing Atari with deep reinforcement learning,"arXiv preprint arXiv:1312.5602, 2013.

[7] V. Mnih, K. Kavukcuoglu, D. Silver, A. A. Rusu, J. Veness, M. G. Bellemare, et al., "Human-level control through deep reinforcement learning," Nature, vol. 518(7540), pp. 529-533, 2015.

repost: Deep Reinforcement Learning的更多相关文章

  1. (转) Playing FPS games with deep reinforcement learning

    Playing FPS games with deep reinforcement learning 博文转自:https://blog.acolyer.org/2016/11/23/playing- ...

  2. (zhuan) Deep Reinforcement Learning Papers

    Deep Reinforcement Learning Papers A list of recent papers regarding deep reinforcement learning. Th ...

  3. Learning Roadmap of Deep Reinforcement Learning

    1. 知乎上关于DQN入门的系列文章 1.1 DQN 从入门到放弃 DQN 从入门到放弃1 DQN与增强学习 DQN 从入门到放弃2 增强学习与MDP DQN 从入门到放弃3 价值函数与Bellman ...

  4. (转) Deep Reinforcement Learning: Playing a Racing Game

    Byte Tank Posts Archive Deep Reinforcement Learning: Playing a Racing Game OCT 6TH, 2016 Agent playi ...

  5. 论文笔记之:Dueling Network Architectures for Deep Reinforcement Learning

    Dueling Network Architectures for Deep Reinforcement Learning ICML 2016 Best Paper 摘要:本文的贡献点主要是在 DQN ...

  6. getting started with building a ROS simulation platform for Deep Reinforcement Learning

    Apparently, this ongoing work is to make a preparation for futural research on Deep Reinforcement Le ...

  7. (转) Deep Reinforcement Learning: Pong from Pixels

    Andrej Karpathy blog About Hacker's guide to Neural Networks Deep Reinforcement Learning: Pong from ...

  8. 论文笔记之:Asynchronous Methods for Deep Reinforcement Learning

    Asynchronous Methods for Deep Reinforcement Learning ICML 2016 深度强化学习最近被人发现貌似不太稳定,有人提出很多改善的方法,这些方法有很 ...

  9. 论文笔记之:Deep Reinforcement Learning with Double Q-learning

    Deep Reinforcement Learning with Double Q-learning Google DeepMind Abstract 主流的 Q-learning 算法过高的估计在特 ...

随机推荐

  1. LOJ#6229. 这是一道简单的数学题(莫比乌斯反演+杜教筛)

    题目链接 \(Description\) 求\[\sum_{i=1}^n\sum_{j=1}^i\frac{lcm(i,j)}{gcd(i,j)}\] 答案对\(10^9+7\)取模. \(n< ...

  2. A`>G?~C009

    A`>G?~C009 这场怎么才5题...看完猫的提交记录以为猫猫没写这场F A Multiple Array 直接做 B Tournament 直接树d C Division into Two ...

  3. K8s无状态控制器原理介绍

    Pod控制器: ReplicationController:早期K8s只有这一个控制器,但后来发现让这一个来完成所有任务,太复杂.因此被废弃. ReplicaSet: 它用于帮助用户创建指定数量的Po ...

  4. FPGA综合的约束

    近日发现,有些逻辑电路的综合时间约束和布局布线约束相差太大时,难以布通.此时,应该选择尽量接近的时钟约束.

  5. 一种SpaceClaim抽取流道的方法——利用缺失的面功能

    针对不干净的几何,内部存在诸多碎面小缝隙,采用此方法可能会有较好的效果,不过需要耐心. 测试几何需要SpaceClaim19.0以上软件可以打开,下载链接: https://pan.baidu.com ...

  6. js对象属性名以数字开头如何获取、js属性名以数字开头、missing ) after argument list

    js对象中属性名以数字开头引发的报错 :missing ) after argument list var ChineseDistricts = { : { : '北京市', : '天津市', : ' ...

  7. WIN10 删除此电脑7个文件夹-REG运行代码

    Windows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ ...

  8. git 相关流程和报错解决

    git 相关流程: 预先配置: gitroot $ git config user.name XXXgitroot $ git config user.email XXX@XXX.com git re ...

  9. MQTT研究之EMQ:【EMQX使用中的一些问题记录(2)】

    我的测试环境: Linux: CentOS7 EMQX:V3.2.3 题外话: 这里主要介绍Websocket的支持问题. 对ws的支持比较正常,但是对wss的支持,调了较长的时间,没有成功. Jav ...

  10. 执行redis命令redis-trib.rb查看集群信息报错cannot load such file -- redis (LoadError)

    问题描述: 在执行redis-trib.rb命令查看集群状态的时候,报错: [aiprd@hadoop1 ~]$ redis-trib.rb check Traceback (most recent ...