什么是强化学习?
摘要:本文尝试以一种通俗易懂的形式对强化学习进行说明,将不会包含一个公式。
本文分享自华为云社区《强化学习浅述》,作者:yanghuaili。
机器学习可以大致分为三个研究领域:监督学习,无监督学习和强化学习(Reinforcement Learning,RL)。监督学习是大家最为熟知的一种机器学习方式,我们经常遇到的图片分类、人脸识别、回归预测等任务都属于监督学习。简而言之,监督学习处理的任务是根据给定的输入-标签对,构建模型,实现对新输入的标签进行预测。无监督学习,顾名思义,在模型学习阶段不需要标签(往往是因为标签标注成本高或标签划分标准模糊等原因无法得到输入的标签),最典型的场景就是聚类。而强化学习与上述两种学习方式有较大的差别,它通过智能体与环境的交互,学习得到一个策略,使得使用该策略与环境进行交互,可以得到最大化的期望收益。相信大家看了上面这一句话对强化学习还是没有建立明晰的概念,本篇博客将会在接下来的篇幅里尝试以一种通俗易懂的形式对强化学习进行说明,本文将不会包含一个公式。
假设你穿越到了战火纷飞的三国时代,成为蜀国诸葛武侯手下的一员将领,丞相给你一支 1 万人的军队,给你定下目标:到魏国攻城拔寨,取得尽可能多的城池,最好能攻下魏国都城。这时你想,自己从来没有真正地打过仗,怎么才能赢呢?使用监督学习?那就得有足够多而丰富的实战案例供自己学习,以及看兵书,但战场形势瞬息万变,兵书又怎能覆盖所有?如果再遇上不按套路出牌的敌将,兵书岂不是也不管用?那使用无监督学习?想到这你苦笑了一下,还不如看兵书呢。于是你愁眉苦脸,抓耳挠腮,无限报国志无法实施。这时你想,只能上强化学习了!于是,你铺开一页纸,开始整理自己的思路……
环境(Environment):也就是你在战场上面临的场景了,比如周围地形,敌方位置,敌方军队规模,敌军主帅,我方位置等信息。也就是你做决策所依据的信息;另一方面,你的决策也会改变环境,如你做出前行 1 公里的决定,敌军会根据你的决策采取行动改变位置等;你决策烧掉前方阻碍视野的树林,那地形信息也会发生改变等;
智能体(Agent):也就是你自己了;
动作(Action):也就是你根据环境情况所采取的决策动作,如上所述的前行、烧掉阻碍视野的树林等;
动作空间(Action Space):是指你可以采取的所有动作所组成的空间,它可以是连续的、离散的或两者共存。连续动作包括前行多少距离,向什么方向前行等,离散动作包括是进攻、安营扎寨、防守还是撤退、军队分成几股、是正面冲击、两面包抄还是打埋伏等。总而言之,动作空间就是你可以根据环境做出的所有可能的决策动作;
策略(Policy):是指对指定的环境,你会采取何种动作的概率。这个可能稍微难理解些。举个例子,司马懿打仗所采取的策略和张飞就很不一样,丞相的空城计之所以能成功,就是因为司马懿采取的策略偏稳重;但如果是张飞面临空城计,有可能就直接打进城去活捉丞相了,这就是策略的不同;另一个例子就是,张三学的是孙子兵法,李四学的是武穆遗书,那他们在战场上面临相同环境所采取的动作也会不同,一般用π来表示;
状态(State):在某一时刻或某一个阶段所面临环境具体情况。还以空城计为例,丞相当时面临的状态是敌将司马懿率领 15 万大军奔袭自己而来,而自己在一座城里,但仅有 2500 军人。丞相就是在这种状态下做出空城计的动作的,一把用 S 来表示;
状态转移概率(State Transition Probability):针对特定的状态采取动作后,当前状态向其他状态转移的概率。丞相针对司马懿的进攻状态,采取了空城计的动作,在这种情况下环境做出何种反应(即转向何种状态)主要取决于敌将司马懿(该设定下他是环境的一部分),接下来司马懿可能采取的动作包括进攻、派人侦查、围而不攻、撤退等,最终司马懿采取了撤退的动作,状态变成了司马懿撤军;这是司马懿谨慎的性格决定他采取撤退的概率较大,并不代表他不会采取其他动作,如果他采取围而不攻,那丞相面对的就是另一种状态;
回报(Reward):对某种状态采取某种动作会获得的收益的一个量化指标,在空城计中,由于敌众我寡,我方人员保存越多收益越大,丞相可能采取的动作包括紧闭城门拒敌、出城迎敌、空城计等,出城迎敌则可能全军覆没,收益为零,紧闭城门拒敌最终还是会被攻破,但稍微可以撑一段时间,收益稍高,而空城计则可能保全全军且概率很高,所以丞相采取了空城计的动作;
序列决策问题(Sequential Decision Problems):这种问题关心的是多轮决策的最终收益大小,而淡化单次回报的大小。空城计是一个特例,一轮决策就完成了,但真实的战场上是要实时根据敌军的动态进行决策的,以实现打败敌军的最终目标。淡化单次回报而最大化长期收益的例子就是以一部分军队为诱饵,牺牲该部以获得全歼敌人的最终收益。以及中国工农红军的十六字诀“敌退我进,敌驻我扰,敌疲我打,敌退我追”,也是指导战争中的序列决策的;
当你总结完这些强化学习的概念后,觉得打仗这门学问就应该用强化学习来解决,倍感兴奋,但这只是强化学习相关的一些概念,怎么去做强化学习呢?这就引出下面两个重要的概念:Q 值和 V 值
V 值是智能体在某个状态下,一直到最终状态的回报总和的期望。比如战争中总会去争夺一些进可攻退可守的战略要地,占据了这些战略要地,己方就处于一种对整个战争形势有利的状态,我方到战争结束所获得的累积回报越大,也就是当我方处于战略要地这种状态下的 V 值较大,而处于其他状态的 V 值相对较小。为什么敌我双方都知道处于这种状态最终的回报总和期望较大呢?游戏中我们可以一直重复这个场景,尝试从该状态出发采取无数次重复试验,每次以不同的概率采取不同的动作,直到战争结束,就可以计算出该状态的 V 值。但真实情况下是不允许进行这种试验的,敌我双发都知道,是因为历史上已经有太多的这种案例,不需要再做试验了;当然 V 值是与智能体相关的,在同一个状态出发,不同的智能体采取的策略不同,V 值也会不同(对此你深以为然,自己与丞相相比,从相同的状态出发,得到的最终结果肯定会大相径庭)
Q 值是智能体在某个状态下,采取某一行动后,直到最终状态的回报总和的期望。如在空城计中,丞相面临当时的状态采取了空城计,其 Q 值就是从丞相采取空城计直到战争结束的回报总和的期望。
Q 值与 V 值的是可以相互计算的,如已知各个状态的 V 值,那为了计算在 S 状态下采取 a 动作的 Q 值,我们还需要知道状态转移概率,如丞相采取空城计,下一步的状态及概率分别为:(1)司马懿进攻,概率为 0.1;(2)司马懿围而不攻,概率为 0.2;(3)司马懿撤退,概率为 0.7。那么丞相采取空城计的 Q 值即为采取空城计的回报加上三种状态的 V 值的概率加权和。如果已知各个状态和动作下的 Q 值,要计算 V 值,我们还需要知道策略在该状态下采取不同行动的概率,如要计算空城计之前状态的 V 值,而丞相可以采取的动作有三种:(1)出城迎敌,概率 0.1;(2)守城拒敌,概率 0.4;(3)空城计,概率 0.5.由于我们已经知道 Q 值,那么 V 值就是这三种动作的 Q 值的概率加权和。
本篇博客简述了强化学习的一些相关概念,如有错误,欢迎在评论区批评指正。
2021华为云 AI 实战营——华为云员工都在学的 AI 实战营,快来报名免费学习吧~
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/b15f6a4b7800891bc290fabda】。文章转载请联系作者。
评论