http://www.woshipm.com/ai/2529645.html
本文笔者将与大家讲述:强化学习的基本原理、两个基本类型,以及基于这两个类型下的相关算法。
一般地,我们认为,机器学习领域最基本的三个方向就是“监督学习”“无监督学习”和“强化学习”,而深度学习、半监督学习、元学习都是由它们在某些方面迭代衍生出来的优化后的模型。
经过前两篇的笔记,我们已经对监督学习和无监督学习有了一个基本的了解,这次我们就来了解一下:神秘而强大的强化学习(Reinforcement Learning)是什么?
与一些新兴的算法流派相比,强化学习算是有着悠久的历史,早在几十年前就有相关的算法诞生。
我们都知道了,监督学习基于给定的数据和相应的标注,能够完成一系列的分类、回归问题;无监督学习基于无标注的数据,能够以比较低的人力成本解决聚类问题。而强化学习,则主要解决决策问题(Decision-Making),尤其是对于连续决策问题很是拿手。
这个图简单地展示了强化学习的基本模型,里面的五个单词也就是强化学习的几个基本元素,他们分别是:
- 学习主体(Agent)——强化学习体系中的“学习者”。
- 环境(Environment)——主体的行为在环境中产生、环境对主体产生影响。
- 状态(State)——环境反馈给主体的状态的集合。
- 奖赏(Reward)——环境对主体行为的反馈的集合。
- 行为(Action)——主体在环境中的行动的集合。
怎么去理解这几个词呢,又到了举栗子时间。
在上图的情境里,小陈就是我们的学习主体,他的“行为”是一个集合,这个集合里有两个元素“运动”和“偷懒”,运动将获得表扬,偷懒将遭受批评。
小本是小陈行为的监督者和见证人,在这个情境里小陈的“状态”由小本说了算,所以小本即是“环境”。
小本对小陈的“奖赏”也是一个集合,集合中也是两个元素“表扬”和“批评”,而这两个元素对应着小本对小陈的评价——“状态”,胖了就批评,瘦了就表扬。
那小陈如何对小本的评价做出反应呢?
在文章的开头我们就提到了,强化学习主要解决决策问题,这里的决策比较简单,只有“运动”和“偷懒”,而小本对小陈的奖赏则决定了小陈会做出什么决策。
在一个强化学习的系统里,一般会根据最终目的来制定奖赏的机制,比如:在上面的系统里,我们希望最终的结果是小陈能够减肥,那么我们就会给小本的“奖赏”赋值,表扬是+1,批评是-1,而系统的整体目标则是获得更高的分数。这样一来,小陈就会在每一次的奖赏中明白,“运动”是更好的选择,也就慢慢地减下了肥~
在上面的栗子里,我们了解了强化学习的基本原理,接下来我们一起简单地了解一下它的两个基本类型和基于这两个类型下的相关算法:
- 基于模型的强化学习(Model-based RL)
- 无模型的强化学习(Model-free RL)
“Model-based 尝试model这个环境,最终基于这个环境选择最优的策略。 Model-free 则一直在每一步中去尝试学习最优的策略,在多次迭代后就得到了整个环境最优的策略(e.g:Q-learning)。”
这段话引用自quora的一个回答,可能看起来还是不太容易理解,那么又到了栗子时间。
现在小曹要学习打乒乓球,他花了大量时间观看乒乓球教学视频,通过看书研究了乒乓球拍的各种不同的握持发力方式,在网上学习了各种类型的发球方式,还了解了空气动力学、人体解刨学等知识,力求将每一个球打得完。然后终于有一天小曹叫上朋友走到了乒乓球桌前,发现自己一个球也接不到。
这种学习方式就是Model-based,核心是:通过学习先验知识对现有的环境有了一个大概的了解,能够对未来的状态和回报做出预测。
但显然,小曹学习乒乓球这个过程,更好的方法是直接拿其球拍进行实践,也就是通过Model-free的方式来学习乒乓球。
那什么时候该使用model-based呢?
现在小曹终于通过model-free的方式学会了乒乓球,他发现这个方法真好,所以小曹在去打球的路上决定使用model-free的方法来找到去乒乓球室的路。
半天过去了,小曹在某不知名小巷里认识到了model-free不是万能的,于是他掏出了手机打开了高达导航,找到了他现在的位置和乒乓球室所在的位置,并规划好了路线,model-based最终帮助小曹找到了正确的路线。
在z我们讲到了Model-free和Model-based,这其实只是强化学习方法中针对学习主题理不理解环境所做的一种分类。而实际上强化学习的应用环境更加复杂,这一种分类方法可能不足以帮助我们对所有的情况进行判断,我们还需要更加深入地了解强化学习的更多分类和算法以及相关栗子。
按照不同的判断标准,强化学习的方法可以按如下几种方式来分类:
- Model-free & Model-based:基于模型和 不基于模型
- Policy-based & Value-based:基于策略(概率) 和 基于价值
- Monte-carlo update & Temporal-Difference update:回合更新和 单步更新
- On-Policy & off-Policy:在线学习和 离线学习
第一个在上面已经说过了,我们就从第二个,Policy-based & Value-based开始。
好了,又到了栗子时间。
我们把上次小陈跑步的系统里的一部分拿出来,上图就是说小陈正在使用Policy-based的方式选择策略,看起来很好理解,也就是根据做出某项行为的概率来选择下一步行为。
那么,按照一样的逻辑,基于价值也就很好理解啦:
这就是一个最简单的value-based的决策模型,小陈会毫不犹豫地根据每项行为的价值来决定选择怎么做,不带一点主观色彩~
除了判断方式以外,两种方法的区别,以及相应的优劣势是什么呢?
就让我们用它们所对应的两种标志性的算法:大名鼎鼎的Q-learning和Policy Gradients
来做讲解吧~
先从有名的Q-learning说起:它是value-based模型下的一个经典算法,上面已经有提到,value-based的核心思想是根绝每项行为的价值来选择下一步行为,那么Q-learning也是如此,让我们再次祭出小陈作栗子。
可以看到,小陈在这个图里有两个选择,跑步或是偷懒。我们和小陈在之前的栗子中都已经知道了,小陈如果选择偷懒,就会受到来自小本的批评,反之,则受到表扬。
在Q-learning的模型中,这个情境变成了“连续的”。小陈选择一个行为之后将获得一个行为对应的状态,然后在新的状态下继续做选择。
如图所示,在S1时,小陈通过之前积累的经验知道了跑步将会获得小本的表扬,偷懒则会受到批评,所以小陈选择了跑步(a1),小陈的状态也就从S1变化为了S2。
那么每一步的行为具体是怎么选取呢?小陈是如何判断每一个选择的价值的呢?
这里就需要引入Q-table,也可以叫做Q表,Q-table的内容实际上就是每一个状态和选择对应的值,也就是在每一个状态下对不同行为的反馈期望。
小陈通过Q-table就可以知道:在S2的时候,选择a1,也就是跑步,将获得更大的收益,这是不需要通过实际行动就可以得知的。
是不是觉得这个表述很熟悉?
没错,Q-learning除了是value-based的代表性算法以外,它也同样属于model-based下的一种算法,小陈通过先验知识得知了他该如何做出选择,这是model-free做不到的。
总结一下,Q-learning的步骤如下:
我们已经了解了前面四个步骤,但我们还不知道最后一步,Q表中的值是如何更新的,现在让我们看看Q-learning 的核心方程(这是一个贝尔曼方程,也叫动态规划方程)。
Q(s,a)代表的是算法对某一个状态的行为的估计值,比如Q(S1,a1)就是1。
后面括号里的东西代表我们估计出来的值与实际值之间的误差,R(s,a)指的是某个状态下做出某个行为得到的奖励(注意这个奖励是实际执行后从环境得到的一个反馈,而Q(s,a)只是通过想象得到的一个值,一个是实际值,一个是想象值),γ是一个衰减系数,γmaxQ’(s’,a’)就是未来某个状态行为奖励的衰减值。
括号外的α指的是学习率,也就是这次的误差有多少要被学习,它是一个小于1的数。
其实Q-learning本质就是一种动作值函数的算法,输入“状态”和“行为”,得到一个“奖励”,也就是一个具体的值。agent根据最大的值对应的行为做出选择,而选择得到的结果又会反向传递,对Q-table的值进行更新。
希望大家看到这里还没有进入懵逼状态,因为我们接下来就要了解Policy Gradients是怎么一回事了。不过别担心,理解了Q-learning再来看Policy Gradients就很简单啦!
在上面的学习中,我们知道了value-based方法是计算不同动作的值来判断更好的选择,那么现在让我们来看看如果情境变成了这样:
小陈在操场跑步,并且小陈可以选择360°任意一个方向作为前进的方向。
操场上可能捡到钱(矩形),也可能踩到狗屎(三角形),小陈该如何针对这个情况制订合适的行动方案呢?
相较于value-based中的栗子,小陈的选择从有限的(跑步和偷懒),变成了无限的(任意一个方向)。在这个时候,value-based就变得无力了,Q-learning可以通过动作值函数计算出某个状态下某个动作的期望值,但它无法在无穷多个选择中求解。
而policy-based方法也就在这种情况下应运而生啦!
Policy-based不同于value-based先得出值再选择动作,它根据对状态的观测直接给出一个具体的策略。
与value-based的相比,policy-based主要有三个优点:
- 更容易收敛
- 可以在高维&连续的动作空间工作
- 可以学习出带有随机性的策略
Policy Gradients(策略梯度算法)是Policy-based中的一类经典算法,其核心思想也包含在了它的名字中——基于策略来做梯度下降。
什么叫梯度下降(Gradient descent)呢?
这是一个简单的一元二次方程y=x²+1,途中的两个梯度方向实际上就是在这两个点时y=x²+1的导数方向。而梯度下降法是一个求解最小值的方法,比如在上图中,梯度方向一个向左上,一个向右上。我们可以确定这两个点中间一定有更小的值,而不断地对这个区间内的函数求导,最终就可以将我们的结果收敛到最小值。
那么,Policy Gradients是如何做梯度下降的呢?
再看回这张图,假设小陈在一开始通过观测得出的概率进行了这样的行动,得到了钱,我们就给他一个相应的奖励。而策略梯度算法的核心,就是将根据这个奖励/惩罚进行一个反向传递,让这个方向(得到奖励的策略)在下一次被选中的概率提升。反之,则让这个方向在下一次被选中的概率降低。
Policy Gradients的思想就是这样,很简单吧!
公式的推导和参数的更新如果感兴趣的话可以在下面的参考资料中自行学习,这里再赘述可能反而会影响大家对它的理解,这一期的强化学习就到这里啦。下一次让我们了解一下集成了两种方法的Actor-critic算法和一些其他没有提到的分类方式~
参考资料