zoukankan      html  css  js  c++  java
  • 强化学习总结(0)—RL基本介绍

    本人硕士期间就对RL比较感兴趣,当时AlpahGo还没火,可能更多是对于Strong AI的前景和未来有着较大期待吧,后来随着AlphaGo--Master---zero版本的不断更新,再加上OpenAI的星际争霸等,RL逐步焕发出了新的生机。因此,自从2016年下半年开始断断续续地学习强化学习到现在,中间因为要发各种paper,断断续续地看了一遍,只有一个大致印象,但了解不够深入,仅停留在表面。现在静下心来,开始第二遍系统学习,打算借着博客来对所学进行总结,争取有更深入的理解吧,也希望能和大家多多交流、相互学习,中间的见解可能比较浅显,还希望各位大神、大牛能多多批评指正,促进自己更好地学习。

    自从2015年以来,关于RL的资料、教程越来越多,有些写的非常不错,比如莫凡python、天津包子馅的知乎专栏、其他一些博客等,还有一些视频课程也非常多,比如Divid silver在UCL的授课、优达学城的课程、伯克利、斯坦福的大学课程等,考虑到本人的实际,不习惯英文课程,看不到一半就坚持不住了,还是比较喜欢看教材、博客和代码,经过一番对比考量,本人此次RL学习的主要参考资料如下:

    1.Reinforcement Learning: An Introduction.Second edition, in process.(2017 Draft). 这是自己的主要参考教材,也建议大家多看几遍,书里面有全套的对应github代码(matlab、C、python版本都有,网上很方便可以找到)。RL经典教材,现代强化学习之父sutton的著作,非常详细,由浅入深、娓娓道来,感觉入门是非常合适的。本人英语水平及其一般(CET6 < 500),但读起来并不觉得特别费劲儿,每次读感觉收获都很多。

    2.莫凡python系列教程。对于python、机器学习、神经网络等都有介绍,建议整个教程都可以反复读看几遍,RL部分虽然都是一些基本算法,但手把手教的可不多,小白入门必备,自己也打算再多看几遍。

    3.已有的博客系列:(这里只列举几个自己收藏的,配合上面的书和视频,对比着看效果会更好)

        a).http://www.cnblogs.com/steven-yang/p/6481772.html 

        b).http://www.cnblogs.com/jinxulin/p/3511298.html

        c). http://www.algorithmdog.com/ml/rl-series

        d).https://zhuanlan.zhihu.com/p/28563483

    其他还有一些比较好的进阶版教材,比如Reinforcement Learning State-of-Art (Wiering M.A.)、强化学习原理及应用(王雪松2014版,介绍感觉比较全,但感觉不适合当作教材学习,适当看看就行)还有其他一些国外近几年的博士论文、各种顶会、期刊论文等,难度层次也略大,这些就因人而异,毕竟RL的方向很多,不是每一个都适合自己,但建议多读读多涉猎一些,每个论文都有自己看RL的角度,或许从别人的论文中看你能发现一些属于自己的东西,这应该是多读论文的意义吧。这些进阶版内容后续会找时间分享总结吧。

    RL基本介绍

    既然是总结,那就不能长篇大论的描述,否则不是抄书么,干脆把sutton的书翻译一遍得了,其实是自己一度想翻译的,但工作量是在太大了~~不说废话,只把自己总结出来的干货展现出来就行了。

    1. What is RL? Why learn RL?

    答:RL是一种以目标为直接导向、基于马尔科夫的序列决策方法,本质就是追求最大回报,寻找对应的最优策略。现代RL方法大体可分为三个分支:Trial and error 分支(1980s前后)、基于值函数和动态规划的优化控制(包括现在还很火的ADP,基本都算是RL的分支)、以sutton为代表的TD算法及后续系列(也是现在RL的主流方法)。RL是机器学习的四个组成部分之一(其他为监督学习、无监督学习、迁移学习)。

            RL的思想决定了它是通往Strong AI的必经之路,这也是为什么国外很多大牛愿意将其作为博士课题的原因。尽管RL已经发展了近三十年,并且这几年做的工作也非常多,但这些都只是皮毛而已,离Strong AI还非常远,自身发展也远远没有什么大的突破(包括AlphaGo系列,并没有理论上的大创新,还是以前的算法和思想,只是工程实现做的非常好,当然这也很了不起了),可以继续做的内容也是非常多的。 RL的学习过程其实很奇怪,你可以跑几个算法如Q-learning、sarsa、DQN等的程序,做几个不一样的应用就说我会RL了(这是我学习初期的表现),但当自己开始设计一些算法,实际做一些东西的时候,会发现还是啥也不会。这也使得我总感觉自己并没有真正入门,但又说不上来,因此就打算重新从头开始学习,希望自己不只是懂那些基本算法,更能深入地了解RL,厚积薄发,由基础看到前沿吧。

    2.RL---个人看法。

        a.相比于其他领域,机器学习的发展可以说是非常缓慢的(指基础研究领域,个人看法,仅供参考),RL也是如此,虽然你可以说现在围棋都被攻破了,这是多么大的成就,但懂行的都知道,这个过程中,RL的基础研究取得的进展并不大,更多的依赖于深度网络和很多工程实现的技巧,本身算法研究并没有大的进步。

        b.RL的训练样本也是非常巨大的,尤其是面对一些复杂问题,这个难题现在依然无法彻底解决。

        c.当状态过多时,维数灾难问题依然可怕。

    3.RL的几个主要研究方向

        a.多智能体强化学习。

        b.带有迁移属性的强化学习.

        c.元强化学习。

        d.分层强化学习。

        e.强化学习与神经生物学的联系。

  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/xiachongkun/p/7698717.html
Copyright © 2011-2022 走看看