强化学习-简介
背景
强化学习是机器学习三大分支之一,除去强化学习外,还有监督式学习和非监督式学习,虽然本系列文章主要介绍强化学习,但是了解另外两类的特点还都是很有必要。本系列的文章首先整体介绍强化学习的相关知识,然后是相关的算法,第一个算法是Q-Learning。
监督式学习
监督式学习好比有一位老师告诉机器某个物件有什么特征,例如人有两条腿,两只眼睛等等,而这些特征被称之为标签,机器根据这些带有标签的大量数据训练自己,获得经验,当获得数据集之外的输入时(检验模型),机器会根据自己学习到的经验,判断这个输入是什么物件。不难看出,监督学习便是通过大量带有标签的数据训练机器自身,机器从中获得经验,达到可识别物体的目的,广泛应用于分类问题和回归问题。为了便于理解,这里举一个例子:现在需要让机器能够在分辨羊和鸡,最初机器是一个白痴,什么也不懂,于是用大量带有特征的数据集来训练机器,例如告诉机器羊有四条腿,鸡只有两条腿;羊的体型大,鸡的体型小;羊有一对犄角,而鸡没有等等,当然数据越多越好,特征越具体越好,通过大量的数据训练后,放一只羊交给机器识别,机器便会提取当前识别对象的特征,有没有犄角,有几只腿等等,然后和自己学习到的标签对比,得出是羊的结论。
非监督式学习
非监督学习在学习过程中没有老师告诉你数据的标签,也就是说机器得到的数据仅仅是一条条数据,数据不带有任何提示信息,而机器的任务是通过观察大量的数据,自己形成一套认知体系,能够将所有的数据进行归类,但是机器本身并不知道这个类代表什么,例如:给机器输入大量的鸡和羊的数据,但是不告诉机器它们的特征,机器通过训练后能够将羊和鸡分成两类,但是机器并不知道他们是羊和鸡,就叫聚类。
强化学习
从前文可以看出,监督学习和非监督学习的经验来源(也就是数据集)都是静态的。现在假设这样一个情景,我们需要训练一个机器人能够自主的在地面上行走,我们应该怎么训练它呢?按照非监督学习或者监督学习,我们需要向机器人提供大量关于环境的数据,什么是障碍物,什么是沟壑等等,但是现实环境中影响因素很多,例如障碍物有很多种,有石头这样的较小障碍物,也有高楼这样的障碍物,机器面临不同的障碍物作出的反应也不同,前者是做出更大的跨步躲开障碍物,后者则需要绕行。而在环境中这样的因素很多,加之环境变化很快,因此提供一个完整的数据集来训练机器人显然已经不可行。而强化学习便可解决这样的问题,强化学习的数据集不是静态数据集,而是动态的。强化学习可称之为引导式学习,也有人称之为试错式学习,将机器(代理)仍在环境中,让它自己探索(即在环境中自由玩耍),机器会做出很多动作作用于环境,并且环境会反馈给机器一个奖励告诉机器人他做的动作是好还是坏,比如机器人向右走跌倒了,环境会反馈一个不好的奖励给机器,告诉机器在这个状态作这个动作并不有利,如果向左走没有跌倒,则会反馈一个较好的奖励,告诉机器在这个状态做向左走的动作有利,通过不断地施加动作作用于环境,环境做出反馈,是的机器人不断从环境中得到经验完善自己,告诉自己在某个状态下做某个动作使自己不会摔倒,从而使其能自主行走。从而得到与环境最佳的交互策略。好比一位老师在你面前不会告诉你应该做什么,但是你做的每一个动作老师都会给你打分(奖励),不同动作得分有高有低,因此你会选择分数更高的动作避免更低的动作。这里用一个经典的方格世界举例:假设这里有一个5*5的方格,要求机器人从(1,1)的方格开始,目标走到(5,5)的方格。机器人在每个方格的动作只有前后左右,最初机器人什么也不懂,在方格世界乱走,在(1,1)(左下角)有上下左右四种动作,如果选择了左或者下,就走出方格世界,环境返回奖励-1告诉机器人在(1,1)向左向下的动作很不好,如果向上或者向右则得到0的奖励,这样子机器人的状态从(1,1)转移到(1,2)或者(2,1),然后机器人继续在该位置执行四个动作中的一个到达下一个状态,得到相应的奖励,当到达(5,5)时,获得奖励+10,通过这样不断的训练,机器人便会在每个状态选择有利的动作执行而避免收益低的动作(例如在起点不会向左向下),从而最终到达终点。
强化学习五个方面
前文简单介绍了监督学习、非监督学习、强化学习,而本系列文章主要记录强化学习相关知识,首先看一下强化学习的五个内容组成。强化学习可以总结为环境+奖励+表达策略的方法+选择算法训练代理+部署验证。在强化学习中,需要训练的对象(即为前文的机器、机器人)统称为Agent(代理、智能体)。
Environment(环境)
环境即为代理玩耍的场所,前文提到,强化学习就是代理与环境不断和交互得到反馈来完善自身的过程。代理可以有很多的动作,动作作用于环境,环境可以根据动作给代理奖励评价代理的动作的好坏,并且代理可以从环境中观察到状态信息。在方格世界中,环境就是整个5*5的方格,动作就是上下左右,状态就是对应的位置信息,也就是坐标。
Reward(奖励)
奖励是代理用于获取经验、完善自己的重要依据,根据环境反馈的经验,代理可以了解到在当前状态下执行某个动作的利弊,从而使其在每个状态执行有利的动作,而避免低收益动作。例如在方格世界中在(1,1)点执行向下或者向左会得到-1奖励,是一个消极奖励,代理便会在该状态避免该动作。而在(4,5)执行向右的动作,便会得到+10的奖励,是一个积极的奖励,是的代理在该状态更倾向于该动作。
Policy(策略)
策略可以理解为一个函数,该函数是状态空间到动作空间的映射,输入是状态,输出是执行动作,用于指引代理在该状态执行什么动作,最优策略则是在每一个状态下,都能使得代理做出合适的动作从而获得最佳的长期奖励(价值)。而强化学习的目标就是学习与环境交互得最佳策略,而学习就是系统性调整参数使得策略收敛到最佳状态的过程。表达策略的方法多种多样,在之后的文章会介绍。
训练代理的方法
常用的强化学习算法有Q-Learning、Sarsa、DQN(Deep Q-Learning Network),在后面会逐步介绍。
部署验证
实地部署验证结果。
强化学习分类
强化学习可以分为两类,基于模型的方法和无模型方法。
无模型的方法
在无模型训练方法中,代理对环境一无所知,因此代理需要对环境的所有区域进行探索,意味着会花费大量时间去探索低奖励回报的区域,这样会浪费大量的时间去做无用功,但在大多数情况都会使用这种方式。
基于模型的方法
在开发者知道环境中某些区域或者全部环境的情况下,开发者可以将这些情况告知代理,就像一张地图,会告诉代理哪些区域回报极低,避免探索低回报区域,加快训练速度,节约资源。
总结
关于强化学习的概述就当这里结束,水平有限,如有理解不当或者需要改正补充的地方,欢迎批评指正。接下来我将详细阐述五个方面,阐述完后开始相关算法的分享,包括算法的理解、算法分析与总结、算法实现、具体场景的仿真与分析。
导航
五大方面之环境: https://blog.csdn.net/weixin_54445841/article/details/112965944.
五大方面之奖励与策略结构:
https://blog.csdn.net/weixin_54445841/article/details/112974078.
入门资料: https://download.csdn.net/download/weixin_54445841/14910862.
Python工程:
https://download.csdn.net/download/weixin_54445841/14910913.