强化学习基本简介
在19年4月,有写过一篇强化学习的入门直观简介。强化学习通俗入门简介(一)。感兴趣的可以看一下,如果知道一些基本概念的话,也就没啥必要了,都是些很通俗的理解。
强化学习智能体通过与环境交互,为了获取整个交互过程中的收益最大,不断自我调整优化。就像你的整个人生过程一样,算法的原理上是不计较一实的得失,目光也比较长远,不会为了眼前利益,而丢失了之后更大的回报。
但是在实际操作过程中,强化学习还是很容易被当前的及时奖励所蒙蔽。我们把这种问题称之为奖励延迟。就像司马懿一样忍辱负重数十载,最终夺取政权,这样长的奖励延迟,人能处理,那强化学习能不能呢?我们以后再讲好了。
在强化学习算法里面,没有人告诉你你应该怎么做,给你的只有你做的好不好。就像你写论文一样,你这个方向是不是好,这个方向的论文是不是好中。那只有做了之后,评审专家才会告诉你你做对了做错了,并且他还不会告诉你对的是什么,全程靠自己悟。
悟性越强,你就越厉害。强化学习也是这样,越强的算法就越快能找到正确的道路通往奖励最大的地方。
说到这,我其实就是想表示,顶会的思想论文其实就是你我每天都在做的事情,我还没有发过,哭了,我太难了!扯远了,嘻嘻嘻嘻,有经验的加我好友,带带我吖。
什么是强化学习
想想训练一条小狗,你不会告诉他该做什么,因为它听不懂。他做对了你给他奖励,做错了给惩罚。慢慢它就知道你啥意思了。强化学习也是一样。而你把这个小狗看成一个机器人,用这个相同的思想来训练的话,那就是强化学习了。
当你训练到一定程度之后,就需要思考一个问题。遇到相同的情况,你是选择探索(explore)还是利用(exploit)?啥意思呢?
就是,假设你来到一个新的城市,你刚开始选择去哪吃饭可能随机选一选,你大概会知道哪些店比较符合你的口味。当你有了一些基本的判断之后,你是会选择吃原来觉得好吃的店呢?还是探索你从来都没有去过的店呢?从来都没有去过的店你可能会觉得更好吃,也有可能不会。人的选择一般都是探索一点点,大部分时候都会选择以前觉得还可以的店。这中间就有个度的问题。在计算机中怎么量化这个度呢,其实还是蛮难的。这也是强化学习的一个研究难点。平衡这个度。
强化学习算法步骤
典型强化学习的算法步骤主要如下所示:
- 智能体通过动作(action)与环境进行交互;
- 而这个动作将会改变智能体现在所处的处境,智能体会从现在这个状态,移动到下一个状态去,我们一般称之为状态转移。
- 智能体在这个过程中会得到一个奖励,这个奖励是由状态所决定的而不是动作。
单纯的动作是没有好坏之分的,只有状态与动作结合起来才会有,因为你在当前这个状态执行这个动作,你的下一个状态基本也就定下来了。这个时候可能就有同学会问了,那要是跳变系统(就是这个系统的参数会发生跳变,有些是有规律的,有些是没有规律的)呢?你在相同的状态下执行相同的动作转移到下一个状态也不一定会相同呀。是不一定会完全相同,但是好的动作所能带来的期望收益是不一样的。
关于这个跳变系统,这里我推荐两篇文章:
一个是东北大学张化光老师团队的强化学习应用在马尔可夫跳变系统上;Optimal tracking control for completely unknown nonlinear discrete-time Markov jump systems using data-based reinforcement learning method。
一个就是强化学习应用在跳变速度伺服系统上文章:Control Strategy of Speed Servo Systems Based on Deep Reinforcement Learning。
第一篇呢我觉得是开创性的,解决了所有的跳变系统。文章采用的系统就是Markov jump systems。所谓的马尔可夫跳变系统,我百度一下:马尔科夫跳变系统是一种具有多个模态的随机系统,系统在各个模态之间的跳变转移是由一组马尔科夫链来决定的。
第二篇是我之前做的速度伺服跳变系统,主要是其实验部分的数据是绝对真实的,以及网络、奖励参数的设置说地比较详细,对复现有很大帮助。自己写的代码太垃圾了,不敢放出来,但是是真实的。
- 基于这个奖励,这个智能体就能够知道自己的动作是好还是坏。好的话,当你下次在相同或者类似的情况下,采取这个动作的概率就要被增大。而怎么来实现这一点就是算法更新那一步的核心思想了。
强化学习与其他机器学习的区别
一些基本的不同在上一篇文章里面好像有介绍与监督学习的不同点,这里说点不一样的。在监督学习里面,神经网络学习一个数据分布,然后应用于满足这个数据分布,但是却没有出现过的数据点上。在强化学习里面更倾向于是学习一种知识,或者说是一种思想,然后将学到的知识、思想用于解决一个任务(task)。
这里是存在一些问题的,比如说我们小学学到的知识到了大学会不会忘记呢?人类当然是不怎么会忘记的,但是对于机器而言就不一定了。因为机器不能找到知识之间的逻辑关系,它们只是学到知识的输入输出的基本模式,并不是知识本身,就像刷题怪一样,可能对知识的理解不多,但是做题贼强。强化学习就有点类似刷题怪,所以它们很容易忘记以前所学的东西。其实这也是这两年顶会比较喜欢的东西。
那怎么办呢?想想想让刷题怪还能不忘记以前的题目是怎么刷的咋整。就是再刷新的题目的时候刷少量以前的题目相当于温习一遍。AI也是这么干的,训练新数据的时候拿以前的数据拿过来再训练一下子。这样的话也会存在问题,就是随着任务的增多,你需要存放的数据也越来越多,就是需要刷的题目量越来越多。而当前的一种解决方法就是我们存一个模型,这个模型能够产生之前的数据,用这个模型产生以前的数据。
或者我们做Konwledge Transfer
,希望机器能够触类旁通。它与迁移学习不一样,迁移学习Transfer Learning
不需要会以前的知识,而Konwledge Transfer
需要。还有一种办法就是我训练新的数据的时候模型只做一小部分调整,相当于人类的固执。
与无监督学习的区别:无监督学习是学习数据本身的规律、模式。强化学习是最大化期望收益。就像你去看电影,无监督学习学习你以前的观影记录,然后开始分析,给你推荐电影。强化学习相当于从用户那获得反馈,学习的是用户偏好,而不是数据本身,然后建立自己的知识框架,再来给你推荐电影。
机器学习中还有另外一种学习方法,叫作半监督学习(semi-supervised learning),半监督学习是具有部分标签的。可能你会先聚类一下,然后看看哪些标签都再哪些类里面,再来进行划分。因此强化学习与它们是完全不同的。
我的微信公众号名称:深度学习与先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究强化学习、计算机视觉、深度学习、机器学习等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!