作为人工智能工作者,不同领域的知识都多少需要了解点,本文记录作者如何从对强化学习一知半解,由浅入深,一步一步进阶的学习路线。目前作者在研究的相关项目,包括, 等,有机会和大家一起交流学习。
谈起强化学习,我是在研究如何对深度网络模型进行优化时触碰到它的,我们知道,对一个模型优化的方法众多,比如模型剪枝、模型量化、模型压缩等,还有对模型本身结构的优化,比如借鉴一些开源模型结构,比如中的等,除此之外,还有一个研究方向,那就是NAS,即 ,它是使用强化学习的思想,在一定的搜索空间中去迭代寻找最优的网络模型。当接触NAS时,确实不是懂,因为对强化学习没有什么概念,只知道2016年即阿尔法狗之后的同门师弟阿尔法元在没有任何人类指导的前提下,自学了3天就把它师兄阿尔法狗拍死在沙滩上,感觉好NB的样子,官方也说了,其主要使用强化学习技术,更是激起我对强化学习的兴趣,说干就干,于是开始了各种强化学习探究之路。
像强化学习这种领域知识,网上各种技术贴呈现的内容比较零碎,不容易形成系统地知识体系,作者比较倾向于系统地学习它,经过筛选和甄别,找到了一个叫《强化学习导论》的书,感觉挺不错的,强烈推荐,该书原著是英文版的(有需要的可以下方留言我发给你),好在有人已经把它翻译成中文的了,而且还整成网页的形式,如下
第1章 简介 – 强化学习导论 0.0.1 文档
选择该书的最重要的一个原因是该书中所有例子都有配套源码,供参考学习,这样就极大地方便对书中知识的理解,源码路径为
– /–an-: of : An
粗略地讲一下该书的内容,书中先是通过k臂赌博机引入强化学习中个体、环境、状态、价值等基本概念,继而引出有限马尔可夫决策,然后是贝尔曼方程、动态规划、蒙特卡洛方法、时序差分学习、n步引导等。
我当时在看这本书时可是每个公式都自己亲自推导一遍,书中每个源码都啃了好多遍,反复推敲,然后内化成自己的知识,在调试这些脚本时,有时为了测试自己是否掌握了知识点,我先是自己思考,并先实现一遍源码,调试,然后再看配套源码是怎么实现的,跟上学那会做作业一样,先是自己试着解题,然后再看答案,再总结自己的做法和答案优缺点,每次都会有不一样的收获。
相信我,只要你能耐着性子把这本书前3章读完,同时把源码啃完,强化学习你就算入门了。我当时为了把这本书看完,每天提前2个小时到公司,边看书边调试书中例子代码,也是花了好几个月才啃完,因为看的比较细,花的时间有点长,但收获很多。
除了这个《强化学习导论》,还有一个学习资料挺不错的,叫《深度强化学习研究者资料》
深度强化学习研究者资料 – Up 文档
还有《深度强化学习的核心论文》
深度强化学习的核心论文 – Up 文档
如果你富有余力,可以研究研究它们,都是不错的资料。
讲了这么多,在看书之前可能你还对强化学习没有比较直观的概念,下面就再花些文字简短地介绍下强化学习的概念。
1.定义
强化学习是机器学习的一个重要分支,是多学科多领域交叉的一个产物,它的本质是解决 问题,即自动进行决策,并且可以做连续决策。
它主要包含四个元素,agent,环境状态,行动,奖励, 强化学习的目标就是获得最多的累计奖励。
让我们以小孩学习走路来做个形象的例子:
小孩想要走路,但在这之前,他需要先站起来,站起来之后还要保持平衡,接下来还要先迈出一条腿,是左腿还是右腿,迈出一步后还要迈出下一步。
小孩就是 agent,他试图通过采取行动(即行走)来操纵环境(行走的表面),并且从一个状态转变到另一个状态(即他走的每一步),
当他完成任务的子任务(即走了几步)时,孩子得到奖励(给巧克力吃),并且当他不能走路时,就不会给巧克力。
2. 强化学习和监督式学习的区别
监督式学习就好比你在学习的时候,有一个导师在旁边指点,他知道怎么是对的怎么是错的,但在很多实际问题中,
例如 chess,go,这种有成千上万种组合方式的情况,不可能有一个导师知道所有可能的结果。
而这时,强化学习会在没有任何标签的情况下,通过先尝试做出一些行为得到一个结果,通过这个结果是对还是错的反馈,调整之前的行为,就这样不断的调整,算法能够学习到在什么样的情况下选择什么样的行为可以得到最好的结果。
就好比你有一只还没有训练好的小狗,每当它把屋子弄乱后,就减少美味食物的数量(惩罚),每次表现不错时,就加倍美味食物的数量(奖励),那么小狗最终会学到一个知识,就是把客厅弄乱是不好的行为。
两种学习方式都会学习出输入到输出的一个映射,监督式学习出的是之间的关系,可以告诉算法什么样的输入对应着什么样的输出,强化学习出的是给机器的反馈 ,即用来判断这个行为是好是坏。
另外强化学习的结果反馈有延时,有时候可能需要走了很多步以后才知道以前的某一步的选择是好还是坏,而监督学习做了比较坏的选择会立刻反馈给算法。而且强化学习面对的输入总是在变化,每当算法做出一个行为,它影响下一次决策的输入,而监督学习的输入是独立同分布的。
通过强化学习,一个agent可以在探索和开发( and )之间做权衡,并且选择一个最大的回报。
会尝试很多不同的事情,看它们是否比以前尝试过的更好。
会尝试过去经验中最有效的行为。一般的监督学习算法不考虑这种平衡,就只是。
3.强化学习和非监督式学习的区别
323AI导航网发布