强化学习有哪些分类(干货强化学习科普)
强化学习有哪些分类(干货强化学习科普)我们理解了,“强化学习”并不像“深度学习”一样,描述一类方法。“强化学习”应该是和“监督学习”或者“无监督学习”一样,描述的是一类问题。那么,它描述的是什么问题呢?以下摘录自是维基百科中的解释:(以上图片来源https://cloud.tencent.com/developer/article/1018909)我们首先要弄清楚的问题是,“强化学习”这个词指的是什么,是一类问题还是一类方法。它究竟应该与哪些概念是同类、平行的呢?当我们查阅一些前几年出版的机器学习方面的材料时候,它一般会将机器学习的问题分为两大领域——监督学习与无监督学习。其中监督学习意味着训练集同时存在着x(feature)与y(target),我们要学习x与y之间的映射关系(根据y的离散与连续性,又分为分类与回归)等等。而无监督学习则意味着训练集只有x,却没有y,包括聚类、降维、特征提取、生成模型等具体的领域。有的材料还会
欢迎关注公众号:AI_Club_haobo 。沟通交流AI相关内容。关注回复:了解公号渠道 职业。
从本期起,我们将重磅推出强化学习科普系列文章。我们将要系统性地介绍强化学习(Reinforcement Learning,简称RL)的内容。欢迎大家持续关注。(数据酷客)
强化学习是什么?
我们首先要弄清楚的问题是,“强化学习”这个词指的是什么,是一类问题还是一类方法。它究竟应该与哪些概念是同类、平行的呢?
当我们查阅一些前几年出版的机器学习方面的材料时候,它一般会将机器学习的问题分为两大领域——监督学习与无监督学习。其中监督学习意味着训练集同时存在着x(feature)与y(target),我们要学习x与y之间的映射关系(根据y的离散与连续性,又分为分类与回归)等等。而无监督学习则意味着训练集只有x,却没有y,包括聚类、降维、特征提取、生成模型等具体的领域。有的材料还会提及介于两个领域之间的半监督学习,并且断言:“机器学习主要由监督学习与无监督学习两大领域构成。”
但是,这种情况目前已经出现了一些变化。在最近几年出版的机器学习材料之中,大部分会将“监督学习”、“无监督学习”与“强化学习”列为机器学习问题的三大领域。由此我们可以看出,“强化学习”与“监督学习”、“无监督学习”一样,指一类特定问题的形式。从下面的图中,我们可以从中看出强化学习的位置:
(以上图片来源https://cloud.tencent.com/developer/article/1018909)
我们理解了,“强化学习”并不像“深度学习”一样,描述一类方法。“强化学习”应该是和“监督学习”或者“无监督学习”一样,描述的是一类问题。那么,它描述的是什么问题呢?以下摘录自是维基百科中的解释:
强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。这个方法具有普适性,因此在其他许多领域都有研究,例如博弈论、控制论、运筹学、信息论、仿真优化、多主体系统学习、群体智能、统计学以及遗传算法。在运筹学和控制理论研究的语境下,强化学习被称作“近似动态规划”。在最优控制理论中也有研究这个问题,虽然大部分的研究是关于最优解的存在和特性,并非是学习或者近似方面。在经济学和博弈论中,强化学习被用来解释在有限理性的条件下如何出现平衡。
在机器学习问题中,环境通常被规范为马可夫决策过程(MDP),所以许多强化学习算法在这种情况下使用动态规划技巧。传统的技术和强化学习算法的主要区别是,后者不需要关于MDP的知识,而且针对无法找到确切方法的大规模MDP。
在上面的这段话中,我们首先可以看到强化学习的广泛性与重要性——它研究的是一种“主体”与作为“客体”的环境之间相互作用,以及“主体”在环境中逐渐学习到能产生最大的利益的习惯性行为的过程。从心理学的角度,或者社会、经济学的角度,符合这种问题的场景有许多;然后,重要的一点是,我们一般会将上述的问题建模为一个MDP,以求解这个MDP中最大化奖励的行为方式。用最简单的话说,强化学习就是研究如何求解MDP的问题。
从这里,我们也不难看出,“强化学习”确实是与“监督学习”与“无监督学习”不同的一类问题。监督学习问题中,我们有包含大量的(X Y)样本的训练集,其中X Y分别代表“特征”与“标签”;而在无监督学习问题中,我们则有大量X样本的训练集,即只有“特征”而没有“标签”。而在“强化学习”问题中,我们并没有大量的训练集。我们拥有的是一个“环境”。在上一章中,我们也讲过了,这个“环境”主要包括的是MDP中的各个要素。比如“状态”s有哪些,“行动”a有哪些,以及s、a与r之间的转化关系。我们手头拥有的“学习对象”是完全不同的,所以我们“学习”的目标、手段、过程也自然是完全不同的。
在本节中,我们弄清楚了,“深度学习”与“强化学习”是两个无关的概念,它们都是在上个世纪的中叶被独立地提出来,并且独立地发展。在很长的一段时间中,“强化学习”与“深度学习”都不是人工智能领域关注的重点。不过在最近几年,当人们将“深度学习”的方法用于“强化学习”的问题时候,取得了很好的效果,这才吸引了人们的持续关注。例如2016年,AlphaGO击败人类的围棋冠军李世石,运用的就是一种结合强化学习与深度学习的技术。所以在今天,当我们提起“强化学习”的时候,往往是基于“深度学习”的。但是希望读者不要混淆二者之间的差别。在后文中,我们也会先介绍一些深度学习崛起之前,有关强化学习方面的研究,主要包括最优控制中的一些经典算法。这些算法就没有涉及到深度学习。
强化学习为什么重要?
在目前,强化学习是人工智能领域学界与业界得到关注最多的子话题之一。那么,为什么“强化学习”这么重要?
我们都知道,学习机器学习有关的课程时,我们最先学习的一般是“监督学习”问题。在这类问题中,我们的目标一般就是利用(X Y)训练集去拟合函数Y = f(X),使得预测误差尽量少。这其中又根据Y是连续还是离散分为回归问题与分类问题。“监督学习”在机器学习中是最基础,也是最简单、易理解的一类问题,代表方法有逻辑回归、随机森林、SVM等大家耳熟能详的方法。但是,它有许多巨大的缺点。例如,它需要大量的标注数据。这就导致了“数据标注员”这一职位的产生。在数据爆炸的时代,寻找足量的人为标注好的数据集显然是“昂贵”且“落后”的。
针对这个缺点,研究者们后来逐渐将关注点转向了“无监督学习”。在“无监督学习”中,我们不需要人为标注的数据,所以我们可以便宜地获取大量这样的数据。“无监督学习”分为目标不同的好几类问题:例如“生成模型”寻找的是X的分布f(X),比较有代表性的工作是GAN(生成对抗网络)。又例如“降维问题”寻求用低维的随机变量z来表征X,比较有代表性的工作是经典的PCA与自编码器(Auto Encoder)。又例如“聚类问题”寻求将训练集X分为几类的方法,比较有代表性的工作是K-means、层次聚类,等等。在一段时间内,人们对于“无监督学习”的关注度超过了“监督学习”,正是由于人们觉得随着数据量的增大,“无监督学习”将比“监督学习”拥有更大的适用范围。
“强化学习”中,人们同样可以解决“监督学习”中标注数据不易获取的问题。现实世界中,有很多场景天然地可以被总结为一个适合于“强化学习”的“环境”。例如,我们平时玩的象棋、围棋,或者是《英雄联盟》、《王者荣耀》这样电脑中虚拟的游戏,又例如,控制单摆的平衡、控制工业机器人、自动驾驶等等现实中的场景。这些场景都天然地可以被转化为MDP,而不需要大量的人力成本。
2016年初的AlphaGo是一个“监督学习”与“强化学习”相结合的算法,它使用了大量的顶级高手对局的数据(包含了“棋盘局势”与“顶级高手走法”的对应关系),让AI去学习。而2017年底的AlphaZero采用的则是“纯粹强化学习”的方法。它只需定义围棋的规则,以及s(棋盘局势)、a(落子)与r(吃子)相互的关系,而并没有使用任何顶级高手对局的数据。但最终,AlphaZero只用比AlphaGo更少的数据与运算代价,实现了更强的战斗力(相互战绩几乎一边倒)。由此可以看出,强化学习问题中,获取一个“环境”有时候成本是很低的。这正是由于很多问题“天然地”可以被转化为一个“环境”的原因。
不需要大量的标注数据集,学习对象相对不那么昂贵,这无疑是目前强化学习受到关注的主要原因。但是除此之外,人们关注强化学习还有一个重要原因——很多这个领域的知名研究者都谈到,强化学习很可能是通向“强人工智能”的重要路径。因为与“监督学习”模型相比,“强化学习”的模型是更加接近现实中的生命体的。
我们所说的“强人工智能”到底是什么呢?维基百科的解释如下:
强人工智慧是人工智能研究的主要目标之一,同时也是科幻小说和未来哲家所讨论的主要议题。相对的,弱人工智能只处理特定的问题。弱人工智能不需要具有人类完整的认知能力,甚至是完全不具有人类所拥有的感官认知能力,只要设计得看起来像有智慧就可以了。由于过去的智能程式多是弱人工智能,发现这个具有领域的局限性,人们一度觉得强人工智能是不可能的。而强人工智能也指通用人工智能,或具备执行一般智能行为的能力。强人工智慧通常把人工智慧和意识、感性、知识和自觉等人类的特征互相连接。
“弱人工智能”与“强人工智能”的区别,简而言之就是“弱人工智能”只能实现特定的任务,像是一个辅佐人类的工具,和一般的机器没有什么区别。而“强人工智能”则追求真正建立一个和人类一样能够自己感官、思考、行为的智能体,真正用机器造出一个“人”。“无监督学习”与“监督学习”都是针对解决具体目标进行训练学习的,人们在需要时候可以借助它们。但它们只能发挥工具般的作用,很难实现“强人工智能”。许多研究者认为,“强化学习”或许是实现“强人工智能”的途径。
我们可以想象,“监督学习”也是一种对于“正确认识世界”的追求。因为“监督学习”要做的就是拟合现实中的数据。误差小意味着“正确”,误差大意味“错误”。所谓的“学习”不过是在对误差进行优化,以求能够更好地拟合现实数据。当达到了百分之百的正确率的时候,“预测误差”就降低为0,意味着已经“完全正确”了,没有可以再提升的地方。不同的模型对应着意味着不同的函数形式,拟合能力不同。
而“强化学习”所追求的不是“正确认识世界”,它追求的是“最大化奖励”。对于具体的问题,“正确”是有限的,当Loss降到0便已经“完全正确”了。但是,对于“奖励最大化”的追求却是永无止境的。追求“奖励最大化”是能够更好描述生物性的。
人应该是时刻生活在“追求最大化奖励”的动机中的。“正确认识世界”其实也只是“追求最大化奖励”在某些具体的场景中的应用。比如我们小时候学会分辨猫和狗,可能是因为隔壁老王家的狗经常吼叫,让我们感到害怕并且跑走,而楼上老李家的猫则比较温顺,不会带来危险。而那个时期的我们对于分辨名牌服饰、汽车则没那么多兴趣,因为我们感觉不到这种能力对当时的我们有什么好处。这也就是说,我们人类不是以学习“正确”与“错误”为导向的,我们是受到本能支配,去极大化收益的。即使是“正确”与“错误”,也只是在我们追求极大化收益过程中一个“子问题”。
我们可以想象“强人工智能”应该是一个时时刻刻都在追求“收益最大化”的机器人。在这个终极追求下,他可以不依照人类的命令,而按照自己的方式去行事。“强化学习”的定义显然是更加符合我们对于“强人工智能”的期待的。
我们这段说的似乎有些“遥远”,现在回归我们的正题——强化学习的重要性。概况地说,“强化学习”在当下得到广泛关注与应用的主要原因是因为它适合于很多的应用场景,不必像监督学习那样需要大量昂贵的有标签数据。并且,与“监督学习”相比,“强化学习”是一个对于人类认识世界、改造世界过程的更好的描述,能够更加好地近似具有生命的主体的行为,所以有许多研究者们认为“强化学习”很可能是通向“强人工智能”的方式。了解“强化学习”具有的这些特性,对于后文中我们理解一些概念是很重要的。
目前为止,任何强化学习的应用还是只停留在“弱人工智能”的层面。没有任何人真正实现过“强人工智能”,而关于“强化学习是通向强人工智能的途径”,也只是部分研究者的猜测,并没有人能够证明。从目前的研究进度来看,我们距离“强人工智能”还需要一个极其漫长的过程。但是笔者想强调的是,我们做“人工智能”的终极目的应该是实现“强人工智能”,从而极大提升人类的生产效率与生活便捷程度。从事人工智能领域工作的人不但要着眼于眼前的工作,也应该对“终极目的”有所追求。
强化学习算法的分类
接下来,我们将介绍强化学习有哪些模型与算法。
我们之前说过了,强化学习的目的就是解一个MDP。具体地说,我们要将一个智能体(Agent)放在某个环境(Environment)中,让它学习如何最大化获得的总收益。当我们学习开始时,这个Agent在Environment中,面对某个状态s,可能不能做出很好的a。而当我们学习完毕时,这个agent应该已经学会对于状态s如何选择出某个合适的a(如果对于time-varing的MDP,应该根据(s t)来选择出a),以帮助自己极大化奖励。这个过程和生命体学习适应世界、并在世界上生存下去的过程有一定相似之处。
那么,对于同样的目的,又可以采取哪些不同的学习方法呢?这些不同的方法应该按照什么来分类呢?这些分类的主次顺序是什么呢?
按MDP不同分类
在上一篇中,我们介绍了MDP的分类。例如其可以根据s是离散还是连续,a是离散还是连续,t是离散还是连续,以及MDP是time-invariant还是time-varing的进行分类。这些不同的问题自然会导致我们的算法有很大的不同,这就像是不同的世界上生长的生物自然有很大的不同。如果我们的agent要根据s输出a,如果a是一个离散变量,则我们输出的应该是一个softmax之后代表其属于各个类别的概率向量;而如果a是一个连续变量,则我们可以输出一个预测的最佳a值。这和监督学习中分类问题与回归问题的区别是一样的。所以说,MDP不同(即世界不同),自然会导致学习方法有很大不同。例如在后面我们会说道,对于a连续的情况,DDPG是最适用的方法。而与DDPG同样的结构则不适合套到a离散的情形中。
按Agent决策方式分类
其次,Agent的决策方式不同也会导致算法有很大不同。
在最优控制问题中,如果我们有确定的初始状态x(t0)、确定的状态转移方程x·(t) = a(x(t) u(t) t),以及总的损失函数J = H(xt0) ∫t0tfg(x(t) u(t) t)dt(在最优控制中,状态一般记为x,动作一般称作“控制”并记作u)。我们一般只需要解出最优控制u(t)即可。它是一个关于时间的函数,和状态x是无关的。因为如果初始状态与状态转移方程是给定的,给出u(t)自然也能够将整条状态的轨迹x(t)给求出来。
另一方面,如果模型是具有随机性的,例如在状态s采取a,有一定的概率分别进入状态s1与s2,那我们就应该分情况讨论接下来应该采取什么样的措施。这种情况下,Agent采取什么a就应该取决于当前的状态s。
当Agent处于某个状态s,需要抉择采取何种动作a时,主要可能采用两种决策方式。第一种是列举出所有可能的动作可能带来的“后果”,然后采取一个“后果”最好的a。这种情况下,Agent相当于是一个关于s与a的函数Q(s a);第二种是直接找出对于最合适这个s的a。这种情况下,Agent相当于是一个关于s的函数,P(s)即输出a。要注意的是,前一种情况仅仅适用于a是离散而有限的情况,而后一种则适用于所有情况。前一种方式是“谨慎”的,比如我们面对重大决策,可能采取前一种思维方式;后一种方式则是“下意识的”,比如我们在一般的生活场景中,很可能会采取第二种方式。在强化学习中,前一种思维方式被称为“基于价值的”(或者说“基于Q的”),而后一种思维方式被称为“基于政策的”(或者说“基于policy的”)。
“基于Q的”、“基于policy的”,再算上最优控制中,对于完全确定的模型中可以清晰解出最优决策序列u(t)或是a1 a2 ...n,这里一共有三种不同的决策方式。每一种决策方式与每一种不同的MDP组合起来,都可能会对应于不同的算法。例如a离散时,采用基于Q的算法,就是大名鼎鼎的DQN;而同样a离散的时候,采用基于policy的算法,则有PG、AC等等。所以,我们可以组合成许多不同的算法。
但另一方面,a是连续的时候,没办法采用基于Q的算法。因为此时Q(s a)是一个关于a的函数,不容易找到使得Q最大的a。我们只能采用基于policy的方法,DDPG。所以,每一种MDP有适用的决策方式的,我们在后面会慢慢讲到。
按是否有模型分类
上面介绍了世界的不同(MDP不同)、Agent的决策方式不同,可以将算法分类。但是,我们要说的是,这都不是强化学习中最基本的分类方式。
最根本的分类方式是什么呢?我们说过,MDP模拟的是作为“主体的”Agent与作为“客体”的Environment相互作用的过程。“主体”是具有“主观能动性”的,即它应该去“认识世界”并且“改造世界”,以实现自己的追求。那么,最基本的问题应该是,作为“主体”的Agent是否可以“认识世界”,并且利用自己对于世界的认识,去采取行动呢?换句话说,我们对于Environment有多少了解,我们可以怎么利用对Environment了解去指导Agent呢?
在这个意义下,主要有三种分类方式:
第一类是“最优控制”。这是上世界中叶就发展起来的学科,一般被视作是强化学习的前身。在最优控制中,我们一般假定Environment的转移方程是完全已知的。对于未知转移方程的情况,我们可以先用试验获取大量数据,把这个Environment给拟合出来,然后再在Environment完全已知的假定下,解出最优的“控制”u(t)。这个求解的过程只涉及到优化、解方程等,并不具有任何“学习”的性质。这是一门相对“古典”的学科。
当Agent对于世界是“完全可知”的时候,Agent就可以利用自己“对世界的认识”来做出最佳的行动,这就节省了许多与环境交互的成本。
第二类是Model-Free的问题,这个Model-Free就是无模型的意思,简单地说就是我们具有一个环境(即输入s与a会得到下一个s与r),但我们却没有其具体的公式,并且我们也压根不准备把它具体的公式找出来。我们的Agent是一个神经网络,我们要让Agent与环境产生交互,得到有关(st at rt st 1)的训练集,完完全全通过“学习”的方法,让这个Agent得到提升。Agent训练好了,我们的任务也完成了。
Model-Free可以说是现在强化学习界研究的重点,我们耳熟能详的算法,例如DQN、PG、AC、A3C、DDPG、TRPO、PPO都是Model-Free的算法。我们所谓的“基于Q的”与“基于policy的”算法分类,也主要指的是Model-Free算法中的分类。
这种方法相对是有些“悲观”的,因为它假定世界是“不可知的”。你只能不断地在世界中摸爬滚打,感受自己做什么动作会“舒服”,什么动作会“疼痛”,然后记下这些经验,去改进自己的行为方式(“基于Q的”改进Q(s a)函数,或是“基于policy的”改进P(s)的参数)。但是,在这个过程中,它却从没有模拟出有关环境(即s、a与r之间转移关系)的任何信息,也自然不能利用对于环境的认识来提升自己。
第三类是Model-Based的方法,即基于模型的方法。这类方法比较广泛、也比较杂,比较典型的有PILCO、GPS、Dyna等。它大致算是上面二者的折中,认为世界是“部分可知”的。例如,我们知道环境是一个线性关系,却不知道具体的系数是多少。我们要与环境不断地交互,产生经验,然后一边用这些经验来拟合环境的公式,一边训练我们的Agent。这个训练的过程中,便可以不只用到经验,也用到自己“对于世界的认识”。
在用最优控制解一些工程学问题时,人们没有具体的转移方程,所以也需要对环境进行大量交互、产生很多数据,然后用这些数据拟合出环境的转移方程,再在这个确定的环境方程上解出最优控制。从这个角度说,最优控制与Model-Based的RL是非常相似的,所以有时候人们也认为二者是一样的。事实上,部分Model-Based的算法确实和最优控制一样,但是部分也有区别。在最优控制中,人们一般是分两个步骤解题——先用数据拟合出模型,然后假定模型完全已知,在这个基础上求解最优控制;而在Model-Based的RL部分算法中,人们一定程度上是将这两个过程融合在一起的,一面根据经验学习Environment的规则,一面来优化自己的决策。在最优控制的算法中,事实上毫无“学习”的特性的;而在Model-Based的RL的算法中,“学习”的特性还是很强的。在后面我们会看到这一点。
总结地说,最优控制相当于“对于世界完全认识”,在此基础上做出决策;Model-Free的RL相当于“无法认识世界”,只能完全依靠摸爬滚打的经验来学会行为方式;而Model-Based的RL则相当于“世界是部分可知的”,我们在实践中一边认识世界,一边改造世界。
假设我们采用的是Model-Free的算法,状态s是空中有东西,但Agent却不知道它会掉下来。Agent一遍一遍走过去,一遍又一遍被砸疼,最后疼得受不了了才学会不要走过去。如果是基于Q决策的,Agent就学会s是空中有东西,a是走过去的时候,Q(s a)是很低的;如果是基于policy决策的,Agent就学会s是空中有东西的时候,p(s)是千万不要走过去……但是到最后,Agent还是不知道“空中有东西”就意味着“东西会掉下来”,并意味着“会被砸疼”,所以“不要走过去”。它只是学会了“空中有东西”就“不要走过去”而已;而另一方面,如果我们采用Model-Based的算法。Agent不但要学在s时怎么决策选择a,也要学习s与a之间的转移关系。例如它看到“有几次空中有东西会掉下来”之后,便学会“空中有东西一定会掉下来”,就可以用这个规则来指导Agent的决策了。
从上面的角度看来,Model-Based的算法是最具有“智能”的,因为它最符合人类认识世界的方式,学习的效率也比较高。但是,目前的Model-Based方法是比较“朴素”的。它一般只是简单地假定Environment中有线性关系,或者是一个高斯模型,然后通过与环境交互的“经验”把假定的线性关系或是高斯模型的系数给求出来。
强化学习算法中最基本的分类是根据有没有是否为环境建模来分类。因为只有先明确“认识世界”的方式,也能确定“改变世界”的方式。所以,根据是否为环境建模分类,这才是强化学习算法中最基本的分类,类别之间的算法差异也是最大的。
按是否有模型分类
除了按照MDP定义不同分类,按照Agent决策方式不同分类,以及按照是否为环境建模分类之外,我们还有其他的算法分类方式。不过这些分类的方式相对而言停留在技巧层面,而不是整体的算法设计思想层面。不过,它们对于算法的性能影响也是很大的。
例如,对于与环境交互而学习的方法而言,我们可以根据其更新频率分为“单步更新”与“回合更新”。“单步更新”意味着Agent每与环境交互一次都对自己参数进行一次更新,而“回合更新”意味着Agent与环境交互完成一整个MDP之后,再对自己进行更新。前者的效率显然高于后者,但对于有的算法,例如基础版的Policy Gradient,我们只能采用后者。但是,我们也有很多方法,例如利用时间差分或者蒙特卡洛的方法,将后者转化为前者。
又例如,对于与环境交互而学习的方法而言,我们可以根据其产生交互数据与更新的时效性分为on-policy与off-policy。前者意味着将交互产生的数据立即用于更新,而后者则意味着要将交互产生的数据储存入记忆库,之后再利用它进行更新。在Q-learning与DQN中,采用off-policy更新方式对于避免局部收敛是有帮助的。
这些分类对于我们的算法能否真正成功都是很重要的。不过由于它们主要停留在技巧层面,所以在这里我们就不多介绍。到了讲到具体算法时我们会着重强调。
■ Over ■
博士给大家推荐AI圈交流群
交流AI行业信息咨询,
不定期发布AI相关活动、福利!
还可以为AI人才在职业生涯提供帮助~
请加圈博士:quanboshi001