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

1.3 智能体/环境接口

强化学习问题常用智能体/环境接口(agent-environment interface)来研究(见图1-5)。智能体/环境接口将系统划分为智能体和环境两个部分。

智能体(agent)是强化学习系统中的决策者和学习者。作为决策者,它可以决定要做什么动作;作为学习者,它可以改变决定动作的策略。一个强化学习系统里可以有一个或多个智能体。

环境(environment)是强化系统中除智能体以外的所有东西,它是智能体交互的对象。

图1-5 智能体/环境接口

智能体/环境接口的核心思想在于分隔主观可以控制的部分和客观不能改变的部分。

例如,在工作的时候,我是决策者和学习者。我可以决定自己要做什么,并且能感知到获得的奖励。我的决策部分和学习部分就是智能体。同时,我的健康状况、困倦程度、饥饿状况则是我不能控制的部分,这部分则应当视作环境。我可以根据我的健康状况、困倦程度和饥饿状况来进行决策。

注意:强化学习问题不一定要借助智能体/环境接口来研究。

在智能体/环境接口中,智能体和环境的交互主要有以下两个环节:

❑智能体观测环境,可以获得环境的观测(observation),记为O,接着智能体决定要对环境施加的动作(action),记为A

❑环境受智能体动作的影响,给出奖励(reward),记为R,并改变自己的状态(state),记为S

在交互中,观测O、动作A和奖励R是智能体可以直接观测到的。

注意:状态、观测、动作不一定是数量(例如标量或矢量),也可以是“感觉到饿”“吃饭”这样一般的量。在本书中用无衬线字体表示这样的量。奖励总是数量(而且往往是数量中的标量),本书中用衬线字体表示数量(包括标量或矢量)。

绝大多数的强化学习问题是按时间顺序或因果顺序发生的问题。这类问题的特点是具有先后顺序,并且先前的状态和动作会影响后续的状态等。例如,在玩电脑游戏时,之前玩家的每个动作都可能会影响后续的局势。对于这样的问题,我们可以引入时间指标t,记t时刻的状态为St,观测为Ot,动作为At,奖励为Rt

注意:用智能体/环境接口建模的问题并不一定要建模成和时间有关的问题。有些问题一共只需要和环境交互一次,就没有必要引入时间指标。例如,以不同的方式投掷一个给定的骰子并以点数作为奖励,就没有必要引入时间指标。

如果智能体和环境的交互时间指标是可数的,那么这样的智能体/环境接口称为离散时间智能体/环境接口。如果交互次数无限多,时间指标可以依次映射为t=0,1,2,3,…;如果交互次数为T,时间指标可以依次映射为t=0,1,…,T-1。在时刻t,依次发生的事情如下:

❑环境给予智能体奖励Rt并进入下一步的状态St

❑智能体观察环境得到观测Ot,决定做出动作At

注意

①智能体和环境的交互时机不一定是确定且可数的。比如,有些问题的时间指标是非负实数集,这样的智能体/环境接口属于连续时间智能体/环境接口。

②这里的离散时间并不一定是间隔相同或是间隔预先设定好的时间。只要时间指标是可数集,就可以映射到非负整数集中。假设时间指标t=0,1,2,…不失一般性。

③不同的文献可能会用不同的数学记号。例如,有些文献会将动作At后得到的奖赏记为Rt,而本书记为Rt+1。本书采用这样的字母是考虑到Rt+1St+1是在同一个交互步骤中确定的。

在智能体/环境接口的基础上,研究人员常常将强化学习进一步建模为Markov决策过程。本书第2章会介绍Markov决策过程。