动手学深度强化学习——什么是强化学习?

129 阅读38分钟

时间维度上对最优决策的自动学习是一个普遍且常见的问题,已在许多科学与工程领域中被研究。在我们不断变化的世界中,即便看起来是静态的输入—输出问题,如果考虑时间因素也可能变成动态问题。例如,假设你要解决一个简单的监督学习问题:宠物图像分类,目标类别只有两类——狗和猫。你收集了训练数据集,并用你喜欢的深度学习工具包实现了分类器。经过训练和验证,模型表现非常好。太棒了!你把它部署上线并让它运行了一段时间。然而,在海滨度假回来后,你发现狗狗的美容(理毛)风格发生了变化,导致大量查询现在被错误分类,于是你不得不更新训练图像并重复整个流程。并不那么令人高兴!

这个例子旨在表明,即便是简单的机器学习(ML)问题,往往也存在一个隐藏的时间维度。这一点经常被忽视,并可能在生产系统中成为问题。强化学习(RL)可以用来解决这一点——它是机器学习的一个子领域,本质上在学习方程中原生地加入了一个额外的维度(通常是时间,但不一定),这使得强化学习更接近人们对人工智能(AI)的理解。在本章中,我们将更详细地讨论强化学习,并让你熟悉以下内容:

  • 强化学习与其他机器学习学科(监督学习与无监督学习)之间的关系与差异
  • 强化学习的主要形式化表述是什么,以及它们之间的相互关系
  • 强化学习的理论基础:马尔可夫过程(MPs)、马尔可夫奖励过程(MRPs)与马尔可夫决策过程(MDPs)

监督学习

你可能已经熟悉监督学习的概念——这是研究最多、最为人所知的机器学习问题。其基本问题是:在给定一组示例对的情况下,如何自动构建一个将某些输入映射到某些输出的函数?从这个角度看似简单,但问题中包含许多棘手的细节,计算机直到最近才开始在某些方面取得成功。监督学习问题有很多例子,包括:

  • 文本分类:这封电子邮件是垃圾邮件吗?
  • 图像分类与目标定位:这张图片中是猫、狗还是其他东西?
  • 回归问题:根据气象传感器的信息,明天的天气会怎样?
  • 情感分析:这条评论的顾客满意度如何?

这些问题表面看起来各不相同,但它们共享相同的思想——我们有大量输入与期望输出的示例,我们希望学会如何为将来尚未见到的输入生成输出。之所以称为“监督”学习,是因为我们从由“真实标签”数据源提供的已知答案中学习。

无监督学习

在另一端是所谓的无监督学习,它假设没有监督,也没有为数据分配已知标签。主要目标是学习手头数据集的某种隐含结构。一种常见的方法是对数据进行聚类:算法试图将数据项分组成若干簇,从而揭示数据中的关系。例如,你可能想找到相似的图像或具有共同行为模式的客户群体。

另一种越来越流行的无监督学习方法是生成对抗网络(GANs)。当我们有两个相互竞争的神经网络时,第一个网络试图生成伪造数据以欺骗第二个网络,而第二个网络试图区分人工生成的数据与从数据集中采样得到的数据。随着时间的推移,两个网络都会通过捕捉数据集中微妙的特定模式而在各自任务上变得越来越娴熟。

强化学习

强化学习属于第三类,介于完全监督与完全没有预定义标签之间。一方面,强化学习采用许多成熟的监督学习方法,例如用深度神经网络进行函数逼近、随机梯度下降和反向传播来学习数据表示;另一方面,它通常以不同的方式应用这些方法。

在本章的后面两节中,我们将探讨强化学习方法的具体细节,包括其严格数学形式下的假设与抽象。现在,为了将强化学习与监督学习和无监督学习进行比较,我们采取一种不那么形式化、但更易于理解的路径。

想象你有一个需要在某个环境中采取动作的智能体(agent)。这里的“智能体”和“环境”将在本章后面详细定义。迷宫中的机器人老鼠是一个很好的例子,但你也可以想象一个试图做翻滚动作的自动直升机,或者一个试图学会打败特级大师的国际象棋程序。为简单起见,我们以迷宫中的机器人老鼠作为例子。

image.png

在这种情况下,环境是一个迷宫,迷宫的某些位置有食物,另一些位置则会触发电击。机器人老鼠是智能体(agent),可以采取动作,例如向左/向右转或向前移动。每一刻,它都可以观测到迷宫的完整状态,以便决定采取什么动作。机器人老鼠的目标是在尽量避免电击的同时,尽可能多地寻找食物。食物和电击信号作为环境对智能体动作的额外反馈,即奖励(reward)。奖励是强化学习(RL)中的一个非常重要的概念,本章后面会详细讨论。现在你只需知道:智能体的最终目标是尽可能地最大化它所获得的奖励。在我们的例子中,机器人老鼠为了在长期内到达食物丰富的地点,可能会短期内遭受轻微的电击——与原地不动、毫无收获相比,这在长期看来是更好的结果。

我们并不希望把关于环境的知识以及在每一种具体情形下应采取的最优动作硬编码进机器人老鼠——那样既费力又脆弱,迷宫稍有改变这些规则就可能失效。我们希望有一套“魔法”方法,让机器人老鼠能自主学习如何避开电击并尽可能多地收集食物。强化学习正是这样一套魔法工具箱,它的工作方式不同于监督学习和无监督学习;它不像监督学习那样依赖预定义的标签。没有人为地给机器人看到的每一张图像标注“好”或“坏”,也没人告诉它每一步应该向哪个方向转。

然而,我们也并非像无监督学习那样完全盲目——我们有一个奖励系统。奖励可以是正的(吃到食物时)、负的(被电击时),也可以是中性的(无特殊事件)。通过观察奖励并将其与所采取的动作关联起来,智能体可以学习如何更好地采取动作、收集更多食物并减少电击。当然,RL 的通用性和灵活性是有代价的。强化学习被认为比监督学习或无监督学习更具挑战性。下面我们快速讨论是什么使得 RL 变得棘手。

强化学习的复杂性

首先需要注意的是,RL 中的观测依赖于智能体的行为,某种程度上就是该行为的结果。如果你的智能体决定做一些低效的事情,那么观测到的数据不会告诉你它哪里做错了,也不会直接说明应该如何改进(智能体会持续收到负反馈)。如果智能体固执地不断犯错,观测可能会误导我们得出结论——没有办法获得更大的奖励,生活就是受苦——而这可能完全是错误的。

用机器学习的术语来说,这可以表述为数据不是独立同分布的(非 IID)。iid 是 independent and identically distributed 的缩写,是大多数监督学习方法的一个假设前提。

第二个让智能体的处境复杂化的因素是:它不仅需要利用(exploit)已经学到的知识,还需要主动探索(explore)环境,因为不同的行为可能会显著改善结果。问题是,过度探索也可能严重降低奖励(更别提智能体可能会忘掉之前学到的东西),因此我们必须设法在这两种活动之间找到一个平衡。探索/利用(explore/exploit)困境是强化学习中的一个开放性基础问题。人们在日常生活中经常面临类似选择——我应该去熟悉的餐馆吃饭,还是尝试那家新开的高档餐厅?我应多久换一次工作?我要学习一个新领域,还是继续在现有领域深耕?这些问题没有放之四海而皆准的答案。

第三个复杂点在于奖励可能在动作之后被严重延迟。例如在国际象棋中,比赛中期的一步强着可能会改变整个局势。在学习过程中,我们需要发现这样的因果关系,而在时间流逝和一系列动作中辨别这些因果关系可能非常棘手。

尽管存在上述种种障碍与复杂性,近年来强化学习取得了巨大的进展,并且作为研究与实际应用的领域越来越活跃。

想继续深入吗?让我们探究细节,看看强化学习的形式化表述与游戏规则。

强化学习的形式化表述

每个科学与工程领域都有其假设与局限。本章前面我们讨论了监督学习,其中的假设是已知输入—输出对。如果你的数据没有标签,你就得想办法去获得标签或尝试使用其他理论。这并不意味着监督学习好或坏;只是说明它在某些问题上不可用。

历史上有许多实务与理论上的突破,往往来自有人以创造性的方式挑战既有规则。但我们也必须认识到自身的局限。了解并掌握各种方法的“游戏规则”非常重要,这能为你省下大量时间。当然,强化学习也存在这样的形式化表述,本书接下来会从多个角度对其进行分析。

下图展示了强化学习的两个主要实体——智能体(agent)与环境(environment)——以及它们之间的通信通道:动作(actions)、奖励(reward)与观测(observations)。

image.png

我们将在接下来的几节中详细讨论它们。

奖励

首先,回到“奖励”的概念。在强化学习中,奖励就是我们周期性地从环境中获得的一个标量值。正如前面提到的,奖励可以为正也可以为负,可以大或小,但本质上它只是一个数字。奖励的目的是告诉我们的智能体其行为表现如何。我们并不规定智能体多久收到一次奖励;可以是每秒一次,也可以是一生仅一次,尽管出于便捷考虑,常见做法是在每个固定时间戳或每次与环境交互时都会收到奖励。在一次性奖励系统(once-in-a-lifetime reward systems)的情况下,除了最后一次奖励外,其他所有奖励都将为零。

正如我所说,奖励的目的是给智能体关于其成功与否的反馈,它是强化学习的核心。术语 reinforcement(强化)来自于:智能体获得的奖励应该以正或负的方式“强化”其行为。奖励是局部的,意味着它反映的是智能体迄今为止所取得的收益与损失。当然,对某个动作立即得到很高的奖励并不意味着一秒钟后你不会因为之前的决策而面临严重的后果。这就像抢银行——看起来可能是个好主意,但一想后果就不那么妙了。

智能体要努力实现的是其动作序列上累积奖励的最大化。为了让你更好地理解奖励,下面列出一些具体示例及其奖励定义:

  • 金融交易:交易者买卖股票所获得的利润金额作为奖励。
  • 国际象棋:奖励在对局结束时给出,表现为胜、负或和。当然这可以按需解释。比如对我而言,在与国际象棋特级大师的对局中拿到和棋就是巨大的奖励。实际上我们需要指定精确的奖励数值,这个表达式可能相当复杂。例如在国际象棋中,奖励可以与对手的实力成比例。
  • 脑内的多巴胺系统:大脑中有一部分(边缘系统)在需要向大脑其他部分发送正向信号时会释放多巴胺。高浓度的多巴胺会产生快感,从而强化该系统认为“好”的活动。不幸的是,边缘系统在进化意义上偏好“食物、繁殖与安全”等古老事物——但那又是另一个话题了!
  • 电脑游戏:通常会给玩家明显的反馈,例如击杀敌人数或累积得分。注意在此示例中,奖励是要被累积的,所以街机类游戏的强化学习奖励应当是分数的导数,即每次击杀新敌人时为 +1,被敌人击杀时为 −N,其余时间步为 0。
  • 网页导航:有些具有高度实际价值的问题需要自动提取网页上的信息。搜索引擎一般试图解决这类任务,但有时为获得目标数据需要填写表单、依次点击若干链接或完成 CAPTCHA,这对搜索引擎而言很困难。对此有一种基于 RL 的方法,其中奖励就是你需要获取的信息或最终结果。
  • 神经网络结构搜索(NN architecture search):可以用 RL 来优化神经网络结构,在模型质量极为重要且人们为提升目标指标多费心力的场景下尤其有用。在该用例中,目标是通过调整层数或参数、增加旁路连接等方式在某个数据集上取得最佳性能指标。此处的奖励即为性能(准确率或其它衡量预测准确性的指标)。
  • 训练狗:如果你曾训过狗,就知道每次狗按要求做了动作时需要给它点好吃的(但不要过多)。当它不听话时也常会略加斥责(负奖励),但近来的研究表明,正向奖励通常比惩罚更有效。
  • 学校成绩:这是一个我们都很熟悉的例子!学校成绩就是一种奖励系统,用来给学生的学习情况提供反馈。

正如以上示例所示,奖励的概念是对智能体表现的一种非常通用的指示,它可以在我们周围的许多实际问题中被发现或人为地注入。

智能体(agent)

智能体是通过执行特定动作与环境交互、做出观测并最终获得奖励的个体或事物。在大多数实际的 RL 场景中,智能体就是我们用来解决某个问题的软件程序。在我们之前举出的六个示例中,智能体分别为:

  • 金融交易:进行买卖订单决策的交易系统或交易者(买、卖或不操作)。
  • 国际象棋:玩家或计算机程序。
  • 多巴胺系统:大脑本身,根据感官数据决定体验是否良好。
  • 电脑游戏:享受游戏的玩家或计算机程序。(Andrej Karpathy 曾推文戏言:“我们原本应该让 AI 做所有工作而我们玩游戏,但结果我们做了所有工作,而 AI 在玩游戏!”)
  • 网页导航:告诉浏览器点击哪个链接、哪里移动鼠标或输入哪些文本的软件。
  • 神经网络结构搜索:控制被评估神经网络具体结构的软件。
  • 训狗:你在决定是否喂食/斥责,因此在此情形下智能体是你;但从另一角度讲,你的狗也可以被看作智能体——狗试图通过正确行为最大化奖励(食物和/或关注)。严格来说,这里属于“多智能体强化学习(multi-agent RL)”设定,第22章对此有简要讨论。
  • 学校:学生/学员。

环境

环境是智能体之外的一切。从最广义上讲,它是宇宙的其余部分,但那样的定义过于泛化,超出了即便是明天的计算机也难以承接的范围,因此我们通常采用较为实际的定义。

智能体与环境之间的通信仅限于奖励(由环境提供)、动作(由智能体执行并发给环境)和观测(智能体从环境接收的除奖励之外的信息)。我们已经讨论了奖励,接下来谈谈动作与观测。在讨论每个示例时,我们会明确其环境是什么以及观测包含哪些内容。

动作

动作是智能体可以在环境中执行的操作。例如在棋盘游戏中动作是棋子移动,在学校的例子中动作可能是做作业。动作可以非常简单,比如将兵向前移动一格,也可以非常复杂,比如创建一家盈利的初创公司。

在强化学习中,我们区分两类动作——离散动作或连续动作。离散动作构成一个互斥的有限集合,例如向左或向右移动。连续动作则附带某个实值,例如汽车的转向动作包含转角与方向。不同的角度可能会在一秒后导致完全不同的情形,因此“转动方向盘”这样模糊的描述通常不够用。

举具体例子,来看我们六个(与后来补充的几个)场景中的动作定义:

  • 金融交易:买入或卖出股票的决策。“不作为并等待”也算一种动作。
  • 国际象棋:按照当前棋盘位置的合法棋步。
  • 多巴胺系统:你正在做的那些事情。
  • 电脑游戏:按下按钮。它们也可以是连续的,例如在汽车模拟器中转动方向盘。
  • 网页导航:鼠标点击、滚动、文本输入等。
  • 神经网络结构搜索:对神经网络结构所做的修改,可能是离散的(网络层数)也可能是连续的(dropout 的概率)。
  • 训狗:你能对狗做的一切——喂一块好吃的、抚摸、甚至用亲切的声音说“好狗!”——都算作动作。
  • 学校:打分以及许多非正式信号,如表扬成功或布置额外作业。

观测

环境的观测构成了智能体的第二条信息通道,第一条是奖励。你可能会疑惑:为什么需要一个单独的数据源?答案是便捷性。观测是环境提供给智能体的、用于表明智能体周围发生了什么的信息片段。

观测可能与即将到来的奖励有关(例如看到一条银行到账通知),也可能无关。观测甚至可以以某种模糊或被掩盖的形式包含奖励信息,例如电脑游戏屏幕上的分数数字。分数只是像素,但我们有可能把它们转换为奖励值;对于现代计算机视觉技术来说,这并不是一项非常复杂的任务。

另一方面,不应把奖励看作次要或不重要的东西——奖励是驱动智能体学习过程的主要力量。如果奖励是错误的、有噪声的,或只是与主要目标略有偏离,那么训练很可能会朝错误的方向发展。

还需要区分环境的状态观测。环境的状态大多数时候是环境的内部信息,理论上可以包含宇宙中的每一个原子,因此不可能对环境的一切进行测量。即便我们将环境状态限定得很小,通常也无法获得其完整信息,或我们的测量会包含噪声。这完全没问题,强化学习天生就支持这种情况。为说明两者的区别,我们回到前面的示例:

  • 金融交易:这里的环境是整个金融市场以及所有影响它的因素。这是一张很长的清单,比如最新新闻、经济与政治状况、天气、食品供应、以及推特/X 上的趋势。甚至你今天决定待在家里也可能间接影响世界金融体系(如果你相信“蝴蝶效应”)。然而,我们的观测被限制为股票价格、新闻等。我们无法访问大部分环境状态,这也使得金融预测成为一件非常棘手的事。
  • 国际象棋:这里的环境是棋盘加上对手,包括对手的棋艺、情绪、脑状态、所选战术等。观测是你所见到的(当前棋盘局面),但在某些对弈层次上,心理学知识和读懂对手情绪的能力会提升你的胜算。
  • 多巴胺系统:这里的环境是你的大脑加上神经系统以及各器官的状态,还包括你能感知到的整个世界。观测是内在的脑状态和来自感官的信号。
  • 电脑游戏:这里的环境是你电脑的状态,包括所有内存和磁盘数据。对于联网游戏,还需把其他计算机以及它们与本机之间的所有互联网基础设施考虑进来。观测通常只是屏幕像素和声音。这些像素信息并非微不足道(据估计,中等尺寸图像(1024×768)可能的总数远大于我们银河系中原子的数量),但整个环境状态显然更大得多。
  • 网页导航:这里的环境是因特网,包括运行在代理智能体所在机器与目标 Web 服务器之间的所有网络基础设施,这是一个非常庞大的系统,包含数以百万计的不同组件。观测通常是浏览器加载的网页。
  • 神经网络结构搜索:在这个例子中,环境相对简单,包括执行特定神经网络评估的工具包和用于获得性能指标的数据集。与互联网相比,这看起来像一个小得多的玩具环境。观测可能会有所不同,包含一些关于测试的信息,例如损失的收敛动态或从评估步骤得到的其他指标。
  • 训狗:这里的环境是你的狗(包括其难以观测的内在反应、情绪与生活经历)以及周围的一切,包括其他狗甚至藏在灌木丛中的猫。观测是来自你的感官与记忆的信号。
  • 学校:这里的环境是学校本身、国家的教育体系、社会与文化遗产。观测与训狗例子相同——学生的感官与记忆。

这是我们的场景设置(mise en scène),本书其余部分将围绕它展开讨论。你应该已经注意到,强化学习模型极其灵活与通用,可以应用于各种情形。在深入强化学习模型细节之前,我们先看看 RL 与其他学科的关联。

还有许多其他领域对强化学习有所贡献或与其相关。下图展示了其中最重要的几个领域,包含六个大领域——它们在方法与与决策相关的具体主题上高度重叠(内圈所示)。

image.png

处于诸多相关但各不相同的学科交汇处的,是强化学习(RL) 。RL 足够通用且灵活,能够吸收这些领域中最有价值的信息:

  • 机器学习(ML) :作为 ML 的一个分支,RL 借鉴了大量 ML 的机制、技巧与技术。其根本目标是在观测数据不完美的情况下,学习智能体应当如何行为。
  • 工程学(尤其是最优控制) :帮助制定一系列最优动作以获得最佳结果。
  • 神经科学:我们以多巴胺系统为例;研究显示,人脑的行为与 RL 模型相似。
  • 心理学:研究个体在各种条件下的行为(反应与适应),这与 RL 的主题密切相关。
  • 经济学:一个重要主题是在知识不完备且现实世界不断变化的条件下如何最大化“奖励”。
  • 数学:既研究理想化系统,又在运筹学中投入大量精力寻找并达到最优条件。

在本章接下来的部分,你将熟悉 RL 的理论基础,从而为进一步学习解决 RL 问题的方法打下基础。接下来的内容对理解全书至关重要。

强化学习的理论基础

本节将引入我们刚讨论过的若干形式要素(奖励、智能体、动作、观测与环境)的数学表示与记法。然后以此为知识基座,继续引入 RL 语言中的二阶概念,包括状态(state)回合(episode)历史(history)价值(value)收益(gain) 。这些概念将在本书后续多种方法的描述中反复出现。

马尔可夫决策过程

在此之前,我们先介绍马尔可夫决策过程(MDP) ,并以“俄罗斯套娃”的方式层层展开:先从最简单的马尔可夫过程(MP)开始;在其上加入奖励,得到马尔可夫奖励过程(MRP) ;再外层引入动作,最终得到 MDP

MP 与 MDP 在计算机科学及其他工程领域被广泛使用。因此,阅读本章不仅对 RL 有用,对更广泛的话题也大有裨益。若你已熟悉 MDP,可以快速浏览本章,仅关注术语定义即可——我们稍后会频繁使用这些术语。

马尔可夫过程(MP)

先从马尔可夫家族中最简单的概念——马尔可夫过程(亦称马尔可夫链) ——开始。设想你面前有一个系统,你只能观测它。你所观测到的是状态,而系统会根据某些动力学规律(多半对你未知)在状态之间切换。你无法影响系统,只能看到状态随时间变化。系统所有可能的状态构成状态空间。对于 MP,我们要求状态空间是有限的(尽管可以大到极其庞大)。

你的观测形成一个状态序列(链),因此 MP 也被称为马尔可夫链。例如,在一个最简单的城市天气模型中,我们把当天观测为“晴”或“雨”,这就是状态空间。随时间得到的观测序列如 [晴, 晴, 雨, 晴, …],称为历史(history) 。要把这样的系统称为 MP,必须满足马尔可夫性质:从任一状态出发的未来系统演化只依赖于该状态本身。其要点是让每个可观测状态都“自洽”,足以刻画系统的未来;换言之,系统的状态应彼此可区分且唯一。此时,建模未来动力学只需当前一个状态,而无需整段历史或最近的 NN 个状态。

在我们的玩具“天气”例子中,马尔可夫性质意味着:无论过去出现了多少个连续晴天,今天是晴时,明天转雨的概率都相同。这显然并不十分现实——常识表明,明天是否下雨不仅取决于当前状况,还与季节、纬度、地形(山海分布)等诸多因素相关(研究甚至表明太阳活动亦有显著影响)。因此该模型很朴素;关键是理解其局限并据此做出自觉的建模选择。

当然,我们可以通过扩展状态空间来提升模型复杂度,以捕捉更多依赖关系,代价是状态空间更大。比如若想分别刻画夏季与冬季的降雨概率,可把季节并入状态,状态空间变为
[晴+夏, 晴+冬, 雨+夏, 雨+冬] 等。

当系统满足马尔可夫性质时,可用转移矩阵来表示状态间的转移概率。这是一个 N×NN\times N 的方阵(NN 为状态数),第 ii 行第 jj 列元素给出从状态 ii 转到状态 jj 的概率。仍以“晴/雨”示例,可能的转移矩阵如下:

晴(Sunny)雨(Rainy)
0.80.2
0.10.9

据此:若今天是晴,明天仍晴的概率为 80%,转雨的概率为 20%;若今天是雨,转晴的概率为 10%,明天继续下雨的概率为 90%。

马尔可夫过程的形式化定义包括:

  • 一组系统可能处于的状态 SS;
  • 带有转移概率、用于刻画系统动力学的转移矩阵 TT。

一种直观的表示法是状态图:节点表示状态,带概率标签的有向边表示可能的状态转移;若某一转移概率为 0,则不画该边(即不存在从一个状态到另一个状态的路径)。这种表示在有限状态机(自动机理论)中也被广泛使用。对“晴/雨”天气模型,可以画出相应的状态转移图(书中此处通常配有示意图)。

image.png

再强调一次,我们这里只讨论观测。我们无法影响天气,所以只能对其进行观测并记录观测结果。

为了给出一个更复杂的例子,我们来看一个名为“办公室职员”的模型(Dilbert——Scott Adams 著名漫画中的主角——就是一个很好的例子)。在我们的示例中,他的状态空间包含以下状态:

  • Home:他不在办公室
  • Computer:他在办公室用电脑工作
  • Coffee:他在办公室喝咖啡
  • Chat:他在办公室与同事讨论问题

该模型的状态转移图如下图所示。

image.png

我们假设这位办公室职员的工作日通常从 Home 状态开始,而且他无一例外以 Coffee 开启一天(即不存在 Home → ComputerHome → Chat 的边)。前述图还表明,工作日总是从 Computer 状态结束(也就是回到 Home 状态)。

上图对应的转移矩阵如下:

HomeCoffeeChatComputer
Home60%40%0%0%
Coffee0%10%70%20%
Chat0%20%50%30%
Computer20%20%10%50%

这些转移概率也可以直接标注在状态转移图上,如图所示。

image.png

实践中,我们很少有幸精确知道转移矩阵。更贴近现实的情况是:我们只有系统状态的观测序列(也称为轨迹/回合,episodes):

Home → Coffee → Coffee → Chat → Chat → Coffee → Computer → Computer → Home
Computer → Computer → Chat → Chat → Coffee → Computer → Computer → Computer
Home → Home → Coffee → Chat → Computer → Coffee → Coffee

根据观测来估计转移矩阵并不复杂——对每个状态,统计从该状态出发的各类转移出现次数,然后按行归一化使其和为 1。观测数据越多,估计就越接近真实的潜在模型。

还需要注意,马尔可夫性质隐含了平稳性(stationarity) :任一状态对应的潜在转移分布随时间不变。若出现非平稳性,说明有某个未观测的隐藏因素影响了系统动力学,而该因素并未包含在观测中。这与马尔可夫性质相矛盾——后者要求在相同状态下、无论历史如何,其潜在转移分布应相同。

务必区分:某一具体回合中观测到的实际转移转移矩阵所给的潜在分布。我们观测到的具体回合是从模型分布中随机采样的,因此回合之间可能不同;但某个具体转移被采样到的概率保持不变。若不满足这一点,马尔可夫链的形式化就不再适用。

现在,我们可以进一步扩展 MP 模型,使其更贴近 RL 问题——把奖励加进来!

马尔可夫奖励过程(MRP,Markov Reward Processes)

要引入奖励,需要对 MP 略作扩展。首先,在“从状态到状态的转移”上赋予一个数值(奖励) 。我们已经有了“概率”来刻画系统动力学,如今再附加一个标量并不会带来额外负担。

奖励可以用多种形式表示。最一般的做法是再引入一个与转移矩阵同型的方阵:第 ii 行第 jj 列给出“从状态 ii 转移到状态 jj”时获得的奖励。
如前所述,奖励可以正也可以负、可以大也可以小。在某些情况下,这样的表示是冗余的并可简化:如果奖励只依赖于到达的目标状态而与来源状态无关,那么只需保存“(状态, 奖励)”对即可。不过,这只在奖励仅由目标状态决定时才适用,现实中并非总是如此。

其次,我们向模型中加入折扣因子 γ\gamma(希腊字母 “gamma”),其取值在 [0,1][0, 1] 区间内。其意义将在定义完 MRP 的其他量后再解释。

和 MP 一样,在 MRP 中我们仍然观测到状态转移序列;不同的是,每一次转移我们还会得到一个对应的奖励。因此,在每条观测的系统转移上都附着了一个奖励值

对每个回合(episode),我们在时刻 tt 定义回报(return)GtG_t

Gt  =  k=0γkRt+k+1G_t \;=\; \sum_{k=0}^{\infty} \gamma^{k}\, R_{t+k+1}

上式中的 γ\gamma 在 RL 中非常重要,后续章节会频繁出现。暂时可以把它理解为:我们向未来“看多远” 来估计将来的回报。γ\gamma 越接近 1,我们考虑的未来步数越多;γ\gamma 越小,我们越“短视”。

进一步理解这一定义:在每个时刻 tt,回报是随后各步奖励的加权和,越远的奖励乘以 γ\gamma 的更高次幂,因而权重越小。γ\gamma 代表了智能体的前瞻性。当 γ=1\gamma = 1 时,

Gt  =  k=0Rt+k+1G_t \;=\; \sum_{k=0}^{\infty} R_{t+k+1}

即把所有后续奖励无折扣相加;当 γ=0\gamma = 0 时,GtG_t 仅为紧接着的即时奖励,对应完全短视。

这两个极端只在角落情形有用。多数情况下我们取介于两者之间的值,如 0.90.9 或 0.990.99:会看向未来,但不会过远。对短且有限的回合,有时也会取 γ=1\gamma = 1

不过,如此定义的 GtG_t 对单条观测链特定,即使在同一状态也可能差异很大,因此直接用处不大。若我们走向另一极端:对任意状态取回报的数学期望(对大量可能的链做平均),就得到更实用的量,称为状态价值

V(s)  =  E ⁣[GtSt=s]V(s) \;=\; \mathbb{E}\!\left[\,G_t \mid S_t = s\,\right]

其含义直观:对每个状态 ss,价值 V(s)V(s) 就是在遵循该 MRP 时从 ss 出发所能获得的期望回报

为把这些理论更直观地呈现,我们把“办公室职员(Dilbert)”的过程扩展上奖励,得到 Dilbert 奖励过程(DRP) 。设定的奖励如下:

  • Home → Home: +1(回家很好)
  • Home → Coffee: +1
  • Computer → Computer: +5(努力工作是好事)
  • Computer → Chat:−3(分心不好)
  • Chat → Computer: +2
  • Computer → Coffee: +1
  • Coffee → Computer: +3
  • Coffee → Coffee: +1
  • Coffee → Chat: +2
  • Chat → Coffee: +1
  • Chat → Chat:−1(长时间闲聊会变得无聊)

image.png

让我们回到参数 γ,思考在不同 γ 取值下各个状态的价值(value) 。先从简单情形开始:γ = 0。此时如何计算状态的价值?为回答这个问题,先固定一个状态为 Chat。接下来可能转移到哪里?答案取决于概率。根据我们为 Dilbert 过程设定的转移矩阵:下一状态仍为 Chat 的概率是 50%,转到 Coffee 的概率是 20%,转到 Computer 的概率是 30%。当 γ = 0 时,回报只等于下一步的即时奖励。因此,若要计算上图中 Chat 状态的价值,我们需要将所有可能转移的奖励按其概率加权求和:

V(chat)=(1)×0.5  +  2×0.3  +  1×0.2  =  0.3V(coffee)=2×0.7  +  1×0.1  +  3×0.2  =  2.1V(home)=1×0.6  +  1×0.4  =  1.0V(computer)=5×0.5  +  (3)×0.1  +  1×0.2  +  2×0.2  =  2.8\begin{aligned} V(\text{chat}) &= (-1)\times 0.5 \;+\; 2\times 0.3 \;+\; 1\times 0.2 \;=\; 0.3 \\ V(\text{coffee}) &= 2\times 0.7 \;+\; 1\times 0.1 \;+\; 3\times 0.2 \;=\; 2.1 \\ V(\text{home}) &= 1\times 0.6 \;+\; 1\times 0.4 \;=\; 1.0 \\ V(\text{computer}) &= 5\times 0.5 \;+\; (-3)\times 0.1 \;+\; 1\times 0.2 \;+\; 2\times 0.2 \;=\; 2.8 \end{aligned}

因此,若只关心即时奖励,处于 Computer 状态的价值最高。这不奇怪,因为 Computer → Computer 的转移既频繁又有高奖励,而被打断(转出)的比例不算太高。

接着是更棘手的问题——当 γ = 1 时,状态价值是多少?请仔细思考。答案是:所有状态的价值都为无穷大。我们的状态图中没有“汇点”(无出边的状态),而当折扣为 1 时,我们会关心未来可能无限多步的转移;并且如前在 γ = 0 的短期估计中,各状态的即时价值都是正的,于是无限多个正值之和会发散到无穷,与起始状态无关。

这一“无穷”的结果说明了为何在 MRP 中要引入 γ,而不是简单把所有未来奖励直接相加。多数情况下,过程可能包含无限(或很大数量)的转移。处理无穷值既不实用,我们希望限制计算的视野(horizon) 。取 γ < 1 就提供了这种限制,本书稍后会展开讨论。另一方面,若你的环境是有限步长(例如井字棋,最多 9 步),那么取 γ = 1 也没有问题。

再举一类重要环境:多臂老虎机(multi-armed bandit)MDP,其回合只有一步——每一步你从若干可选动作中选择一个,得到奖励后回合结束。
关于 bandit 方法的更多内容,可参考 Tor Lattimore 与 Csaba Szepesvári 的《Bandit Algorithms》(tor-lattimore.com/downloads/b…)。

正如我们对 MRP 所说,γ 通常取 0 到 1 之间的值。但在这些取值下,即便像 Dilbert 这样很小的 MRP,要手工精确计算价值几乎也不可能,因为需要累加成百上千个项。所幸计算机擅长这类繁琐工作,且有若干简单方法可以在给定转移矩阵与奖励矩阵时快速计算 MRP 的价值。我们将在第 5 章开始接触 Q-learning 方法时看到并亲手实现其中一种。

现在,让我们再给马尔可夫奖励过程加一层复杂性,引入最后缺失的要素:动作(actions)

为 MDP 增加动作(Adding actions to MDP)

你也许已经想到如何把动作并入我们的 MDP。首先,我们需要加入一个动作集合 AA,且它必须是有限集,这就是智能体的动作空间。其次,我们需要让转移矩阵以动作为条件(conditioned on actions),这基本意味着在原矩阵上增加一个“动作”维度,把它变成形状为 S×S×A|S|\times|S|\times|A|三维张量/长方体,其中 SS 为状态空间、AA 为动作空间。

回忆一下,在 MP 与 MRP 的情形中,转移矩阵是一个方阵:行表示源状态,列表示目标状态。因此,每一行 ii 都包含了从该状态跃迁到各个状态的概率列表(如图 1.8 所示)。

image.png

MDP 中,智能体不再被动地观测状态转移,而是可以在每次状态转移时主动选择一个动作。因此,对每个源状态而言,我们不再只有一串数值,而是得到一个矩阵/切片:其深度维表示智能体可采取的动作,而另一维表示在智能体执行该动作后,系统将跳转到的目标状态及其概率。

下图所示的新转移表因此变成了一个长方体(cuboid)

  • 高(索引 ii)对应源状态
  • 宽(索引 jj)对应目标状态
  • 深(索引 kk)对应智能体可采取的动作

也就是说,转移概率由三维张量 T[i,j,k]T[i, j, k] 表示,含义为“在源状态 ii 下,采取动作 kk 后,转移到目标状态 jj 的概率”。

image.png

一般而言,智能体通过选择动作,可以影响目标状态的概率分布——这是一种非常有用的能力。

为说明为何需要引入这些“复杂性”,设想一台生活在 3 × 3 网格中的小机器人,它能执行 左转右转前进 三种动作。世界的状态由机器人的位置朝向(上、下、左、右)共同决定,因此共有
3×3×4=363 \times 3 \times 4 = 36 个状态(任一位置配任一朝向)。

再设想机器人的电机并不完美(现实中常如此):当执行左转右转时,90% 的概率转向成功,但有 10% 的概率车轮打滑、位置与朝向保持不变;前进 亦然——90% 成功前进一步,10% 原地不动。

在图 1.10 中,给出了转移图的一小部分:当机器人位于网格中心状态 (1, 1), 朝上(up) 时的可能转移。若机器人尝试前进,则有 90% 的概率转到 (0, 1), 朝上(up) ,也有 10% 的概率因打滑而停留在原状态 (1, 1), 朝上(up)

image.png

为了完整刻画环境细节以及智能体动作可能引发的反应,一般的 MDP 采用一个三维的转移张量,其维度分别为:源状态动作目标状态

最后,要把我们的 MRP 扩展为 MDP,需要像处理转移矩阵那样,在奖励矩阵中也引入“动作”这一维度。也就是说,奖励不仅取决于状态,还取决于采取的动作;换言之,智能体获得的奖励不仅与到达的目标状态有关,还与导致该状态的动作有关。至此,MDP 的形式已完整定义,我们可以引入 MDP / RL 中最重要的概念:策略(policy)

策略(Policy)

直观地说,策略是一组规定智能体行为的规则。哪怕是在相当简单的环境中,也可能存在多种策略。例如,在前面的网格世界里,智能体可以采取不同策略,从而造访不同的状态集合,例如:

  • 盲目前进:不管三七二十一一直前进;
  • 绕障策略:如果上一次“前进”失败(撞到障碍),则尝试绕行;
  • 原地转圈取乐:始终向右转,让创造者“图一乐”;
  • 随机策略:不管位置与朝向,随机选择一个动作(像网格世界里的“醉酒机器人”)。

你或许还记得,RL 中智能体的首要目标是尽可能多地获取回报(return) 。不同策略会带来不同的回报,因此寻找一个好的策略就尤为重要,这也是“策略”这个概念之所以关键的原因。

形式化定义:策略是对每个状态下动作的概率分布

π(as)  =  Pr{在状态 s 时选择动作 a}\pi(a \mid s) \;=\; \Pr\{\text{在状态 } s \text{ 时选择动作 } a\}

我们把策略定义为概率分布而不是“某个确定动作”,是为了在智能体的行为中引入随机性。在本书第 3 部分我们会讨论为什么这很重要且有用。确定性策略是其特例:所需动作的概率为 1。

另一个有用的结论是:若策略在训练期间固定不变(即对同一状态总返回相同的动作/分布),那么我们的 MDP 就退化为一个 MRP——因为可以用策略概率对转移张量与奖励张量进行加权求和,消去动作维度

恭喜你读到这里!本章内容不轻松,但对理解后续的实战材料非常重要。再经过两章关于 OpenAI Gym 与深度学习的入门后,我们就会真正开始回答那个问题——如何教会智能体解决实际任务?

小结

本章中,你开始踏入 RL 的世界,理解了 RL 的独特之处,以及它与监督/无监督学习的关系。随后我们介绍了 RL 的基本形式化要素及其相互作用,并依次讨论了 MP、MRP 与 MDP。这些知识将成为本书其余内容的基石。

在下一章里,我们将从形式理论转向 RL 的实践:介绍所需的环境与库,并编写你的第一个智能体