强化学习:原理与Python实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 强化学习的分类

强化学习的任务和算法多种多样。本节介绍一些常见的分类(见图1-6)。

图1-6 强化学习的分类

注:每种分法并没有做到不重不漏,详见正文解释。

1.4.1 按任务分类

根据强化学习的任务和环境,可以将强化学习任务进行以下分类。

单智能体任务(single agent task)和多智能体任务(multi-agent task):顾名思义,根据系统中的智能体数量,可以将任务划分为单智能体任务和多智能体任务。单智能体任务中只有一个决策者,它能得到所有可以观察到的观测,并能感知全局的奖励值;多智能体任务中有多个决策者,它们只能知道自己的观测,感受到环境给它的奖励。当然,在有需要的情况下,多个智能体间可以交换信息。在多智能体任务中,不同智能体奖励函数的不同会导致它们有不同的(甚至是互相对抗的)学习目标。在本书没有特别说明的情况下,一般都是指单智能体任务。

回合制任务(episodic task)和连续性任务(sequential task):对于回合制任务,可以有明确的开始状态和结束状态。例如在下围棋的时候,刚开始棋盘空空如也,最后棋盘都摆满了。一局棋就可以看作一个回合。下一个回合开始时,一切重新开始。也有一些问题没有明确的开始和结束,这样的任务称为连续性任务。例如机房的资源调度问题就是一个连续性任务。机房从启用起就要不间断地处理各种信息,没有确定什么时候结束并重新开始。

离散时间任务(discrete-time task)和连续时间任务(continuous-time task):如果智能体和环境的交互时间指标是可数的,那么这样的任务就是离散时间任务,时间指标可以映射为t=0,1,2,…(如果交互次数无限)或t=0,1,…,T-1(如果交互次数有限,这里的T可以是随机变量)。如果智能体和环境的交互时间指标是不可数的(比如非负实数集或一个非空区间),那么这样的任务就是连续时间任务。这并不是一种不遗漏的分类方式。交互的时间间隔还可能是随机的,并且后续的演化可能与交互时间间隔有关。

离散动作空间(discrete action space)和连续动作空间(continuous action space):这个是根据决策者可以做出的动作数量来划分的。如果决策得到的动作数目是有限的,则为离散动作空间,否则为连续动作空间。例如,走迷宫机器人如果只有东南西北这四种移动方式,则其为离散动作空间;如果机器人往任意角度都可以移动,则为连续动作空间。这也不是一种不遗漏的分类方式。

确定性环境(deterministic environment)和随机环境(stochastic environment):按照环境是否具有随机性,可以将强化学习的环境分为确定性环境和随机环境。例如,对于机器人走迷宫,如果迷宫是固定不变的,只要机器人确定了移动方案,那么结果就总是一成不变的。这样的环境就是确定性的。但是,如果迷宫会时刻随机变化,那么机器人面对的环境就是随机的。

完全可观测环境(fully observable environment)和非完全可观测环境(partially observable environment):如果智能体可以观测到环境的全部知识,则环境是完全可观测的;如果智能体只能观测到环境的部分知识,则环境不是完全可观测的。例如,围棋就可以看作一个完全可观测的问题,因为我们可以看到棋盘的所有内容,并且假设对手总是用最优方法执行;扑克则不是完全可观测的,因为我们不知道对手手里有哪些牌。

此外,有些问题需要同时考虑多个任务。同时针对多个任务的学习称为多任务强化学习(Multi-Task Reinforcement Learning,MTRL)。如果多个任务只是奖励的参数不同而其他方面都相同,则对这些任务的学习可以称为以目标为条件的强化学习(goal-conditioned reinforcement learning)。例如,有多个任务想要让机器人到达目的地,不同任务的目的地各不相同。那么这个目的地就可以看作每个任务的目标(goal),这多个任务合起来就可以看作以目标为条件的强化学习。如果要试图通过对某些任务进行学习,然后将学习的成果应用于其他任务,这样就和迁移学习结合起来,称为迁移强化学习(transfer reinforcement learning)。如果要通过学习其他任务的过程了解如何在未知的新任务中进行学习的知识,则称为元强化学习(meta reinforcement learning)。在多任务学习中,多个任务可能是随时间不断变化的。需要不断适应随时间变化的任务,称为在线学习(online reinforcement learning)或终身强化学习(lifelong reinforcement learning)。不过,在线学习并不是和离线学习相对的概念。实际上,离线强化学习(offline reinforcement learning)是批强化学习(batch reinforcement learning)的另外一种说法,是指在学习过程中不能和环境交互,只能通过其他智能体与环境的交互历史来学习。

1.4.2 按算法分类

从算法角度,可以对强化学习算法作以下分类。

同策学习(on policy)和异策学习(off policy):同策学习从正在执行的策略中学习。异策学习则是从当前策略以外的策略中学习,例如通过之前的历史(可以是自己的历史,也可以是别人的历史)进行学习。在异策学习的过程中,学习者并不一定要知道当时的决策。例如,围棋AI可以边对弈边学习,这就算同策学习;围棋AI也可以通过之前的对弈历史来学习,这就算异策学习。对于离线学习任务,由于算法无法使用最新的策略和环境交互,只能使用异策学习。请注意,在线学习和同策学习是不同的概念。

有模型(model-based)学习无模型(model free)学习:在学习的过程中,如果用到了环境的数学模型,则是有模型学习;如果没有用到环境的数学模型,则是无模型学习。对于有模型学习,可能是在学习前环境的模型就已经知道,也可能是环境的模型也是通过学习来的。例如,对于某个围棋AI,它在下棋的时候可以在完全了解游戏规则的基础上虚拟出另外一个棋盘并在虚拟棋盘上试下,并通过试下来学习,这就是有模型学习。与之相对,无模型学习不需要关于环境的信息,不需要搭建假的环境模型,所有经验都是通过与真实环境交互得到的。

回合更新(Monte Carlo update)和时序差分更新(temporal difference update):回合更新是在回合结束后利用整个回合的信息进行更新学习,并且不使用局部信息;而时序差分更新不需要等回合结束,可以综合利用现有的信息和现有的估计进行更新学习。

基于价值(value based)、基于策略(policy based)和执行者/评论者(actor-critic)算法:基于价值的强化学习定义了状态或动作的价值,来表示到达某种状态或执行某种动作后可以达到的长期奖励(本书会在2.2节定义价值)。基于价值的强化学习倾向于选择价值最大的状态或动作;基于策略的强化学习算法不需要定义价值函数,它可以为动作分配概率分布,按照概率分布来执行动作。执行者/评论者算法同时利用了基于价值和基于策略的方法。策略梯度(policy gradient)算法是基于策略算法中最重要的一类,此外还有无梯度(gradient-free)算法

深度强化学习(Deep Reinforcement Learning,DRL)算法非深度强化学习算法:如果强化学习算法用到了深度学习,则这种强化学习可以称为深度强化学习算法。值得一提的是,强化学习和深度学习是独立的两个概念(见图1-7)。如果一个算法解决了强化学习的问题,这个算法就是强化学习的算法;如果一个算法用到了深度神经网络,这个算法就是深度学习算法。一个强化学习算法可以是深度学习算法,也可以不是深度学习算法;一个深度学习算法可以是强化学习算法,也可以不是强化学习算法。如果一个算法既是强化学习算法,又是深度学习算法,那么它是深度强化学习算法。例如,很多电动游戏AI需要读取屏幕显示并据此做出决策。对屏幕数据的解读可以采用卷积神经网络这一深度学习算法。这样的学习算法就是深度强化学习算法。

图1-7 强化学习、深度学习和深度强化学习之间的关系