第一章
随着时间推移,如何进行最优决策的自主学习成为了普遍且常见的问题,该问题已经在许多科学与工程领域上得到大量的研究。在我们日益变化的世界中,如果考虑到时间这个因素,即使是看起来像静态的输入-输出问题也会变成动态的存在。例如,想象一下你想要解决简单的监督学习问题,如宠物图片的分类,只有两个目标类别-猫和狗。那你要收集训练数据集,并使用你最喜欢的深度学习工具包来实现分类器。经过训练和验证后,该模型表现出了良好的性能, Great!然后你开始部署模型,并让它运行一段时间。然而,当你去海边度假完回来后,你发现狗狗的时尚款式已经改变了(可能毛发修剪之类的),并且你的查询里很大一部分都被分类错误了,因此你需要更新你的训练图像并再次重复这个过程。这时候就不Great了!
这个例子旨在表明,即使是简单的的机器学习(ML) 问题,通常也有一个隐藏的时间维度。这一点经常被忽视,并可能成为生产系统中的一个问题。这可以通过强化学习(RL)来解决,这是ML的一个子领域,它是一种将额外维度(通常是时间,但不一定是时间)合并到学习方程中的方法。这使得RL更接近于人们理解人工智能(AI)的方式.
在本章中,我们将讨论RL更多的细节,你将会对以下问题了然于胸:
- RL与ML学科(监督学习与无监督学习)有什么异同点.
- RL的主要形式是怎样的,并且内部是如何相互关联.
- RL的基础理论: 马尔可夫过程(MPs) , 马尔可夫奖励过程(MRPs) ,还有 马尔可夫决策过程(MDPs) .
1.监督学习(Supervised learning)
可能你早已熟悉监督学习的概念,毕竟监督学习是被研究得最多且为人所知的机器学习问题。它的基本问题就是,当给定一堆成对的样本(如input-output这样一对一对的)时候,你是如何自动地构建一个函数,将一些这些输入映射到输出中?这些属于听起来很简单,但这个问题包含了许多复杂问题,这些问题也是近些年计算机才开始取得一些成功的解决方案。也有很多关于监督学习问题的例子,包括如下内容
- 文本分类:例如这个电子邮件是不是垃圾邮件?
- 图片分类和目标定位:这个图片是否包含了一只猫,狗,或者还有其他的吗?
- 回归问题:给出天气传感器提供的数据,让你预测明天的天气数据。
- 情感分析:在复盘中,客户的满意水平是如何?
这些问题可能看起来不一样,但它们都有着共同的思想——我们已经有许多这样的输入和对应输出的样本,我们想学习如何为一些未来的、目前看不到的输入来生成输出。监督(Supervised) 这样的名字,源于一个事实,这个事实就是通过“真实标签(Ground Truth)”这样的数据来源,去提供我们已知的答案进行学习。
2.非监督学习(Unsupervised learning)
在另一个极端情况,我们也有所谓的无监督学习,它假定没有监督,也没有为我们的数据分配已知的标签。主要目的是学习手头上数据集的一些隐藏结构。这种学习方法的一个常见例子是数据的聚类。当我们的算法试图将数据条目合并成一组集群时,就会发生这种情况,能够揭示数据中的关系。例如,你可能希望找到具有共同行为模式的相似图像或客户。
另一种越来越流行的无监督学习方法是生成式对抗网络(GANs)。当我们有两个相互竞争的神经网络(NNs)时,第一个网络尝试生成假数据来欺骗第二个网络,而第二个网络则尝试区分出来自我们数据集的数据(真实)和人工产生的数据(伪造)。
随着时间的推移,这两个网络通过捕捉数据集中微妙的特定模式,在任务中变得越来越厉害。
3.强化学习(Reinforcement learning)
RL属于第三阵营,它在 完全监督学习 和 完全缺乏预定义标签 这两者之间。一方面,RL使用了许多成熟的监督学习方法,如深度神经网络进行函数近似,随机梯度下降和反向传播,来学习数据表示。另一方面,RL通常以不同的方式应用它们。
在后两节中,我们将探讨RL方法的具体细节,包括严格的数学形式中所进行的假设和抽象。目前,为了将RL与有监督学习和无监督学习进行比较,我们将采用一种不那么板正但更容易理解的路径。
想象一下你有一个 agent(智能体) ,它需要在 evironment(环境) 里采取actions(动作)。agent和environment这两个概念会在本章后面给出详细定义。迷宫里的一个机器老鼠是一个很好的例子,当然你也可以想象成一个自动驾驶的直升机想尝试表演一个翻滚,或者象棋程序想如何打败一名大师。为了简单起见,那就让我们用机器老鼠来做例子吧。
在这种情况下,环境(environment)是一个迷宫,有些地方有食物,有些地方有电。机器老鼠是一个智能体(agent),它可以执行动作,例如向左转/向右转和向前移动。在每一时刻,它都可以观察迷宫的完全状态,以决定要执行的动作。机器老鼠试图寻找尽可能多的食物,同时尽可能避免被电击。这些食物和电信号代表着环境对智能体(机器老鼠)的奖励,作为对智能体所采取动作的额外反馈。 奖励 在RL中是一个非常重要的概念,我们将在后面讨论它。现在,只要你知道智能体的最终目标是尽可能地最大化其奖励就足够了。
在我们这个特殊例子中,从长期来看,机器老鼠为了获取有充足食物的地方可能会遭受轻微的电击,电击作为一个短期的挫折——这对机器老鼠来说会是一个更好结果,相对站着不动啥也没有。
我们不想把关于环境的知识,还有每一个特定情况下采取的最佳动作去硬编码(hard code)成机器老鼠——这需要花费太多精力了,更何况迷宫有轻微的变化,这种硬编码就变得无用。我们想要的是有一些神奇的方法,让我们的机器老鼠自己学习如何避免被电击,并尽可能多地收集食物。RL正是这个神奇的工具箱,它不同于有监督和无监督的学习方法;它不像监督学习那样与预定义的标签一起工作。没有人给所有图像打标签以致于机器能看出这些图像是好还是坏,也不会有人给它指出最好的方向让它走。
当然,我们也并不完全像无监督学习那样完全失明——起码我们有一个奖励系统。收集食物的奖励可以是正反馈,电击可以是负反馈,或者没有特别事情发生的是中性反馈。通过观察奖励,还有与奖励相关的所执行的动作,我们的智能体学习了如何更好地执行一个动作,收集更多的食物,并受更少的电击。当然,RL的通用性和灵活性是有代价的。RL被认为是一个比有监督或无监督的学习更具挑战性的领域。让我们快速讨论一下是什么使得RL很棘手。
4.RL里的困境
- 第一个困境,RL的观察(Observations)依赖于智能体的动作,这一点是值得注意,某种程度上来说,观察(Observations)是由于智能体的行为所导致。如果你的智能体做了一些没什么效率的事情,那么观察(Observations)并不会告诉你的智能体哪里做得不对,或者应该怎么做来改善结果(因为智能体只会一直得到负反馈)。如果智能体一直固执地犯错误,那么观察(Observations)将会持续告诉智能体这是错误的,那么智能体会陷入绝望 —— 生命就是受苦受难 ——存活于世完全是个错误。
在机器学习术语上来说,这可以被重新表述为没有IDD(independent and identically distributed)数据。IDD是个缩写,表示独立和同分布的意思。这是对大多数监督学习方法的要求. - 第二个困扰我们智能体的事情就是智能体不仅仅要利用(exploit)它所学到的知识,而且要积极探索(explore)环境,因为也许做一些不同的事情会令到结果产生显著的改善。这里的问题就是过度探索也许会严重降低奖励(更不用说在实际中智能体还会忘记它之前学过的知识),所以我们需要以某种方式来平衡这两种活动(利用和探索)。这种探索/开发困境是RL中开放性基本问题之一。人类总是面临着选择——我应该去一个熟悉的地方吃晚饭还是尝试这家新奇的餐厅?我应该多久换一次工作?我应该学习一个新的领域还是继续在我的领域里工作?
显然对于这些问题是没有标准的答案。 - 第三个困境就是当采取动作后,奖励会被严重延迟地给出。例如在象棋里,在下到一半的时候,一着“神之一手”是可以改变棋局的平衡。在整个学习过程中,我们需要发现这样的因果关系,但这种因果关系随着时间的流动以及我们执行了这么多动作,是很难察觉哪一步是“神之一手”。
然而,尽管存在这些障碍和困境,RL近年来取得了巨大的进步,在研究和实际应用领域中越来越活跃。
有兴趣了解更多吗?让我们深入研究一下细节,看看RL的形式和游戏规则。
5.RL的形式
每一个科学和工程领域都有它自己的假设和局限性。在本章的前面,我们讨论了监督学习,其中是假设已经有输入-输出对的知识。你的数据没有标签吗?你需要弄清楚如何获得标签或尝试使用一些其他的理论。这并不意味着监督学习是好是坏;它只是不适用于你的问题而已。
当有人试图以创造性的方式挑战规则时,有许多实践和理论突破的历史例子。然而,我们也必须理解我们的局限性。了解和理解不同方法的游戏规则是很重要的,因为可以提前节省大量的时间。当然,这种形式存在于RL中,我们将在本书的其余部分从不同的角度分析它们。
下图显示了两个主要的RL实体——智能体(agent)和环境(environment),以及它们的沟通渠道——动作(actions)、奖励(reward)和观察(observations):
我们将会在接下来的节来仔细讨论。
5.1 奖励(Reward)
首先让我们回到奖励的概念。在RL中,奖励只是一个标量,这个标量是我们从环境周期性地得到。正如上面提过一样,奖励可以是正或者负,也可以是大或者小,但还是这句话,奖励只是一个数字而已。奖励的目的是为了告诉我们的智能体表现如何。另外我们不需要定义智能体获得奖励的频率,可以是智能体生命周期中的每一秒或仅仅只有一次。为了方便,通常的做法是在每个固定的时刻或者每一次与环境交互中获得奖励。如果是智能体一生只获取一次奖励的情况下,除了最后时刻的奖励不为零,其他所有时刻的奖励都为零。
正如我所说,奖励的目的是给智能体成功的反馈,这是RL的核心。基本上,强化(reinforcement)这个词来自于,智能体获取到的奖励应该以正向或者反向的方式来强化自己的行为。奖励是眼前的,反映了智能体目前为止所得到的利益和损失。当然,某些动作能带来巨大奖励,并不意味着下一秒你就不会因之前的决定而面临严重的后果。这就像抢银行——你可能觉得是好主意,能够get很多money,直到你考虑到后果,你就不会那么认为。
智能体的目的是尝试在其动作序列中达到最大的累计奖励。为了让你更好理解奖励,下面列出了一些关于奖励的具体例子:
- 金融交易。利润多少是对交易者买卖股票的奖励。
- 象棋。奖励是在游戏结束时才获得的赢、输或平局这样的反馈。当然,这取决于如何解释。例如,对我来说,在与国际象棋大师的比赛中取得平局将是一个巨大的奖励。在实践中,我们需要指定确切的奖励值,但这可能是一个相当复杂的表达式。例如,在国际象棋中,奖励可以与对手的优点成正比。
- 大脑中的多巴胺系统:大脑有一个区域(边缘系统)每当需要向大脑其他部分传递积极信号时,就会分泌多巴胺。高浓度的多巴胺会带来愉悦感,这种机制会强化被该系统判定为"有益"的行为。可惜的是,这套边缘系统对"有益"的认知还停留在原始阶段——食物、繁殖、安全感——不过这完全是另一回事了!
- 电子游戏:游戏通常为玩家提供明显反馈,如击杀敌人数量或累计得分。需注意此场景中奖励已呈累加特性,因此街机类游戏的强化学习奖励应定义为得分的增量——每次击杀新敌人+1、被敌方击杀-𝑁、其余时刻为0。
- 网络爬虫:具有高实用价值的网页信息自动化提取任务,搜索引擎虽普遍尝试解决,但在需填写表单、多级链接跳转或验证码识别等复杂场景时存在局限。对此可采用基于强化学习的解决方案,其奖励函数定义为最终获取的目标信息量。
- 神经网络架构搜索:在模型质量至关重要的场景中,强化学习可用于架构优化——通过调整网络层数/参数、添加旁路连接等方式,追求目标数据集上的最佳性能指标。此场景的奖励即模型预测准确率等性能度量值。
- 犬类训练:训犬时需在宠物完成指令后及时给予适量奖励(正向强化),未执行指令时适度训斥(负向奖励)。但最新研究表明负向强化的效果逊于正向激励。
- 学校教育:学校教育系统通过分数机制为学生提供学习成效反馈,本质上是典型的奖励系统设计。
系统设计启示:上述案例表明,奖励机制作为智能体性能的广义指示器,既可自然存在于现实场景,亦可人为植入各类实际问题。这种普适性正是强化学习技术广泛应用的基础。
5.2 智能体(The agent)
智能体可以指人或者其他实体,特点是与环境进行交互包括通过执行特定动作、观察环境状态并最终获得相应奖励。在大多数实际强化学习(RL)场景中,智能体通常指代我们设计的软件系统,旨在以某种效率解决特定问题。以下是上述提到6个场景中智能体的具象化:
- 金融交易:交易系统或者交易员指定指令执行(进仓,出仓或者持仓)
- 象棋: 人类棋手或计算机程序
- 多巴胺系统: 大脑本体 ,根据感官数据判断是否有良好的体验
- 电子游戏:喜欢打游戏的玩家或者游戏程序。(注:AI专家Andrej Karpathy曾调侃:“本想让AI做所有的工作来让人类娱乐,结果我们一直在工作,AI却在玩游戏!”)
- 网页导航:告诉浏览器哪些链接点击,移动鼠标,或输入哪些文本的软件。
- 神经网络架构搜索:控制正在被评估的神经网络具体架构的软件。
- 犬类训练:你要决定采取这些动作(投喂/训斥),所以,智能体就是你自己。但原则上,你的狗也可以被视为智能体——狗狗试图通过正确的行为来最大化奖励(食物 and/or 注意力)。严格地说,此场景属于第22章将讨论的——多智能体强化学习。
- 学校教育:学生
5.3 环境(The environment)
环境指智能体之外的所有存在。从最广义上说,它包含整个宇宙——但这种定义过于宽泛,即使未来计算机也无法处理,因此我们通常采用更实际的界定标准。
智能体与环境的沟通仅限于奖励(从环境获得),动作(被智能体执行,然后发送到环境),以及观察(除了智能体从环境获取奖励以外的信息)。我们已经讨论过奖励,所以我们下一步谈一下动作(Actions)与观察(Observations)。当我们讨论观察时,我们将为每个例子定义环境具体是什么。
5.4 动作(Actions)
动作是指智能体在环境里能够做的事情。例如,动作可以棋盘上的棋子移动(如果是棋盘类游戏),又或者是做作业(在学校的例子中)。具体的动作可以是简单到仅仅是向前移动一格,也可以是建立一个盈利的初创公司那么复杂。
在强化学习中,我们要区分出动作的两个类型 —离散和连续。离散动作是有限的、互斥的动作集合,例如向左或向右移动。连续动作是有值的,如汽车的转动车轮这个动作是有转向的角度和方向。选择不同的角度,然后跟环境交互后可能会到达不同的地方,所以仅仅转动轮子绝对是不够的。
给出具体的例子,让我们来看看之前提及六个场景中的动作都是指代什么:
- 金融交易:动作是指买或者卖的决定。“不操作”也是动作。
- 象棋: 动作是根据当前棋盘态势进行有效的棋子移动。
- 多巴胺系统: 动作是你正在做的事情
- 电子游戏:动作是按按钮。动作也可以是连续,例如在自动模拟器中转动方向盘。
- 网页导航:动作可以是鼠标点击、滚动和文本键入。
- 神经网络架构搜索:动作是神经网络架构中的变化,可以是离散的(网络中的层数),也可以是连续的(dropout层中的dropout率)。
- 犬类训练:动作是你对你的狗做的一切——给一块美味的食物,抚摸宠物,甚至用一种亲切的声音说“好狗!”。
- 学校教育:行动是学习分数,但也有很多非正式的信号,比如表扬或分配额外的作业。
5.5 观察(Obersvations)
观察,是智能体从环境得到信息的第二个渠道,第一个渠道是奖励。你可能会疑惑为什么我们要为观察单独开辟一个数据来源。答案是方便。观察是环境向智能体提供的信息,表示智能体周围发生的事情。
观察可能跟即将到来的奖励信息相关(例如关于银行支付的通知),也或许不是。观察甚至可以包含一些混乱或模糊的奖励信息,比如电脑游戏屏幕上的分数。分数只是屏幕里显示的像素,但我们可以将这些像素转换为奖励数值;对于现代计算机视觉技术来说,这并不是一项非常复杂的任务。
另一方面,奖励不应该被视为次要的或不重要的事情——奖励是驱动智能体学习过程的主要力量。如果奖励是错误的,带有噪声的,或者只是稍微偏离了主要目标的方向,那么训练就有可能会走向错误的方向。
区分出环境的状态和观察也很重要。一个环境的状态通常是指环境的内部属性,可能包括宇宙中的每一个原子,显然对环境的全面测量是不可能的。即使我们将环境的状态限制在足够小,但是大多数时候,要么不太可能获得环境的完整信息,要么我们测量出的结果是包含噪声。不过这种情况完全正常,强化学习(RL)的设计初衷就是天然支持此类场景。为了说明两者之间的区别,让我们回到我们的示例中:
- 金融交易:此处的环境是整个金融市场及影响其的一切因素,那可是庞大的清单,包含最新新闻、经济政治形势、天气、食物供应和推特/X趋势等。即使你决定留在家里不出去,也可能间接影响全球金融系统(如果你相信“蝴蝶效应”)。然而,我们的观察仅限于股价、新闻等。我们无法获取环境的大部分状态信息,这使得金融预测成为一项不容易的任务。
- 象棋: 此处的环境是指棋盘和对手,包含对手的棋艺、情绪、大脑状态及所选战术等。观察即你所见的棋盘局势,但在某些对弈层级中,心理学的知识和解读对手情绪的能力可提升胜算。
- 多巴胺系统: 此处环境是你的大脑、神经系统、器官状态及可感知的整个世界。观察包括大脑内部状态和来自感官的信号
- 电子游戏:此处环境是计算机状态(含所有内存和磁盘数据)。对于联网游戏,还需包含其他计算机及与之相连的互联网基础设施。观察仅包括屏幕像素和声音。这些像素并不是少量信息(据估计,中等尺寸图像(如1024×768)的组合总数远超银河系的原子数量),但整体环境状态信息量显然更庞大。
- 网页导航:此处环境是互联网,包含智能体程序所在计算机与网络服务器间的全部基础设施——一个由数百万部件构成的庞大系统。观察通常是浏览器中加载的网页。
- 神经网络架构搜索:此例中环境相对简单,包含执行特定神经网络评估工作的工具包和用于获取性能指标的数据集。相较于上面提及的互联网环境,这个就如同小型的玩具环境。观察可能多样化,包括相关的测试信息(如损失收敛变化或评估步骤中获得的其他指标)。
- 犬类训练:此处环境是狗(包含着其难以观察的内在反应、情绪及生活经历)及其周围一切(包括其他狗和甚至隐藏在灌木丛中的猫)。观察来自你的感官信号和记忆。
- 学校教育:此处环境是学校本身、国家教育体系、社会及文化遗产。观察与犬类训练示例相同——学生的感官和记忆。
这是我们的“场景设定”,本书后续将围绕其展开。你已注意到强化学习(RL)模型极其灵活通用,可应用于多样化场景。在深入RL模型细节前,我们先探讨其与其他学科的关联。
强化学习(RL)涉及或与之相关的领域还有很多。最重要的部分如下图所示,图中展示了六个主要领域,这些领域在内圈所示的与决策相关的方法和具体主题上存在大量重叠。
在所有彼此关联但领域各异的科学领域的交叉点正是强化学习(RL)。它因其高度通用性与灵活性,能够从这些不同领域中汲取最优质的成分。
- 机器学习(ML):RL作为ML子领域,大量借鉴其机制、技巧和技术。RL的核心目标是给智能体不完美的观察数据时让智能体学会如何行动。
- 工程学(尤指最优控制):该领域有助于采取最优行动序列来获取最佳结果。
- 神经科学:人类大脑运作方式与RL模型相似,多巴胺系统即为例证。
- 心理学:研究不同条件下的行为模式(如人类如何反应与适应),与RL主题密切相关。
- 经济学:重要课题之一是在不完美知识与现实世界变化条件下实现奖励最大化。
- 数学:这一学科基于理想化系统,致力于在运筹学领域中探寻并实现最优条件。。
本章后续部分将介绍RL理论基础,为后续解决方法奠定基础。该部分对理解全书至关重要。
6.RL的理论基础
在本节中,我将介绍我们刚刚讨论过的形式化概念(奖励、智能体、动作、观察和环境)的数学表达式和符号。然后,以这些知识为基础,我们将探讨强化学习语言中的二阶概念,包括状态(state)、回合(episode)、历史(history)、价值(value)和收益(gain),这些概念将在本书后续部分反复用于描述不同的方法。
6.1 马尔可夫决策过程(Markov decision processes)
在此之前,我们将介绍马尔可夫决策过程(MDPs),其描述方式类似于俄罗斯套娃:我们将从最简单的马尔可夫过程(MP)案例开始,然后通过增加奖励这个概念,将其扩展为马尔可夫奖励过程(MRP)。接着在此基础上又加入动作这个概念,从而得出MDP。
MP和MDP在计算机科学和其他工程领域得到了广泛应用。因此,阅读本章不仅对强化学习(RL)背景有用,而且对更广泛的主题也有帮助。如果你已经熟悉MDPs,那么你可以快速浏览本章,只需注意术语定义,因为我们稍后会用到它们。
6.1.1 马尔可夫过程(The Markov processes)
让我们从马尔可夫家族中最简单的概念开始:MP,也称为马尔可夫链(Markov chain)。想象一下,你面前有一个系统,你只能观察它。你所观察到的东西被称为状态,系统可以根据一些相互作用的法则(大多数情况下你是看不到的)在状态之间切换。同样,你无法影响系统,只能观察状态的变化。系统所有可能出现的状态构成了一个集合,称为状态空间(state space)。对于MP,我们要求这个状态集合是有限的(但为了弥补这一限制,它可以非常大)。你的观察结果形成了一系列状态或链(chain)(这就是MP也被称为马尔可夫链的原因)。
例如,观察某个城市最简单的天气模型,我们可以观察到当天是晴天还是雨天,这就是我们的状态空间。随着时间的推移,一系列的观察结果形成了状态链,如 [ 晴天,晴天,雨天,晴天, … … ] [晴天,晴天,雨天,晴天,……] [晴天,晴天,雨天,晴天,……]这被称为历史(history)。要将这样的系统称为MP,它必须满足马尔可夫属性(Markov property),这意味着任何状态的未来系统动态变化结果,仅取决于当前状态。马尔可夫属性的主要目的是使每个可观察的状态都把自己包含进去,来描述系统的未来。
换句话说,马尔可夫属性要求系统的状态彼此之间是可区分的且是唯一的。在这种情况下,只需要一个状态就可以模拟系统的未来动态变化,而不需要整个历史或最后的N个状态。
在简化的天气示例中,马尔可夫属性限制了我们的模型,使其只能以相同概率来表示晴天之后出现雨天的可能性,并没有考虑我们过去观察到的晴天数量。这个模型并不真实,因为从常识上讲,我们知道明天下雨的机会不仅取决于当前条件,还取决于大量其他因素,如季节、我们所处的纬度,以及附近是否有山脉和海洋。最近有证据表明,甚至太阳活动也对天气有很大影响。因此,我们的示例确实很朴素,只不过重要的是要了解其局限性,并对此做出明智的决策。
当然,如果我们想让模型更复杂,可以通过扩展状态空间来实现,这将使我们能够在模型中捕获更多依赖关系,但代价是状态空间会更大。例如,如果你想分别捕获夏季和冬季雨天的概率,那么你可以将季节纳入你的状态空间。
在这种情况下,你的状态空间将是 [ 晴天 + 夏季,晴天 + 冬季,雨天 + 夏季,雨天 + 冬季 ] [晴天+夏季,晴天+冬季,雨天+夏季,雨天+冬季] [晴天+夏季,晴天+冬季,雨天+夏季,雨天+冬季]等等。
由于你的系统模型符合马尔可夫属性,你可以用 转移矩阵(transition matrix) 来捕获转移概率,转移矩阵是一个大小为 N × \times × N 的方阵,其中 N 是我们模型中的状态空间的大小。矩阵中第 i 行第 j 列 中的单元格表示了系统从状态 i 转移到状态 j 的概率。
例如,在我们的晴天/雨天示例中,转换矩阵可以如下所示:
晴天 | 雨天 | |
---|---|---|
晴天 | 0.8 | 0.2 |
雨天 | 0.1 | 0.9 |
在这种情况下,如果我们此时是晴天,那么第二天就有80%的机会是晴天,也有20%的机会会下雨。如果我们观察到的是雨天的话,那么天气好转的可能性是10%,而第二天仍然下雨的可能性是90%.
到此为止。马尔可夫过程的正式定义如下:
- 一组状态(S),系统可以是里面的任一个。
- 一个转移矩阵( T ),里面都是转移概率,用于定义系统的变化。
马尔可夫过程(MP)的一种直观可视化表示是通过图结构实现。图中节点对应系统的状态,边上的标签表示状态之间转移的概率。若某状态转移概率为0,则省略对应的边(即无法从某一状态转移到另一状态)。这种表示方式也广泛应用于有限状态机的描述中(属于自动机理论的研究范畴)。例如,针对晴天/雨天的天气模型,其对应的状态转移图如下所示:
再次强调,我们讨论的仅是观察过程。我们无法对天气施加影响,因此只能观察并记录观察结果。
再来一个更复杂的示例,我们考虑另一个称为“办公室员工”的模型(斯科特·亚当斯著名漫画中的主角呆伯特(Dilbert)即是一个典型例子)。在我们的例子中,他的状态空间包含以下四个状态:
- 家:他不在办公室
- 电脑:他在办公室正在用电脑办公
- 咖啡:他在办公室正在喝咖啡
- 聊天:他在办公室正在与其他同事讨论事情
状态转移图如下面所示:
我们假设办公室员工的工作日通常从 家 出发,接着他毫无例外地会从喝 咖啡 开始他的一天(也就是说不存在 家
→
\rightarrow
→ 聊天 和 家
→
\rightarrow
→ 电脑 这两条边)。上图同样展示了工作日的结束(就是指向 家 状态) 是从 电脑 这个状态出发。
上图的转移矩阵如下所示:
家 | 咖啡 | 聊天 | 电脑 | |
---|---|---|---|---|
家 | 60% | 40% | 0% | 0% |
咖啡 | 0% | 10% | 70% | 20% |
聊天 | 0% | 20% | 50% | 30% |
电脑 | 20% | 20% | 10% | 50% |
上面表格的转移概率值可以直接放在状态转移图上,如图1.6 所示
在实际应用中,我们鲜有机会知道精确的转移矩阵。更常见的是我们只能通过系统状态得到的观察片段(即观察序列)来分析——这些观察数据呈现的是系统运行轨迹的随机采样结果,这也被称为回合(episodes):
- 家 → 咖啡 → 咖啡 → 聊天 → 聊天 → 咖啡 → 电脑 → 电脑 → 家 家 \rightarrow 咖啡 \rightarrow咖啡\rightarrow聊天\rightarrow聊天\rightarrow咖啡\rightarrow电脑\rightarrow电脑\rightarrow家 家→咖啡→咖啡→聊天→聊天→咖啡→电脑→电脑→家
- 电脑 → 电脑 → 聊天 → 聊天 → 咖啡 → 电脑 → 电脑 → 电脑 电脑\rightarrow电脑\rightarrow聊天\rightarrow聊天\rightarrow咖啡\rightarrow电脑\rightarrow电脑\rightarrow电脑 电脑→电脑→聊天→聊天→咖啡→电脑→电脑→电脑
- 家 → 家 → 咖啡 → 聊天 → 电脑 → 咖啡 → 咖啡 家\rightarrow家\rightarrow咖啡\rightarrow聊天\rightarrow电脑\rightarrow咖啡\rightarrow咖啡 家→家→咖啡→聊天→电脑→咖啡→咖啡
基于观察数据去估计转移矩阵并不复杂——仅需统计所有状态转移频次并进行归一化处理至总和为1。观察数据量越大,估计结果越接近真实模型。
还需注意的是,马尔可夫性质意味着 平稳性(stationarity)(即任何状态背后的转移分布不随时间改变)。 非平稳性(Non-stationarity) 表明存在影响系统变化的隐含因素,且该因素未被包含在观察中。但这与马尔可夫性质产生矛盾,因为马尔科夫性质要求同一个状态背后的概率分布是一样的,与过去的历史状态转移轨迹无关。
在回合中实际观察到的状态转移轨迹数据,与状态转移矩阵背后指定的分布数据之间是有差异,理解到这点是至关重要的。我们所观察到多个回合的状态转移轨迹是从模型的分布中随机采样的实例,因此不同回合的状态转移轨迹之间可能存在差异。但被采样的实际状态转移概率应是一致的。若非如此,马尔可夫链形式体系将不再适用。
现在我们可以进一步扩展MP模型,使它更接近我们的RL问题。
6.1.2 马尔可夫奖励过程(Markov reward processes)
为了介绍奖励,我们需要稍微扩展一下我们的MP模型。首先,添加数值至状态之间的转换。虽然我们已经有了概率值,但是概率值用于指示系统的变化,所以现在我们有了一个额外的标量,没有额外的负担。
奖励可以用各种形式表示。常见方法是另外设立一个方阵,类似于转移矩阵,从状态 i 转换到状态 j 会得到奖励,这个奖励值位于矩阵的第 i 行第 j 列中。
如前所述,奖励可正可负,可大可小。在某些情况下,这种矩阵表示是冗余的,可以进一步简化。例如,无论从哪个状态出发,当到达某个目标状态时就会给出奖励,那我们只保留 (状态,奖励) 对,这是一个更紧凑的表示。然而,这只适用于奖励值仅取决于目标状态,并不是所有案例都适用。
我们在模型中添加的第二个东西是折扣因子
γ
\gamma
γ(希腊字母“gamma”),取值范围[0,1]。等我们把**马尔可夫奖励过程(MRP)**的额外特点说清楚了,我们再解释折扣因子的意义。
如前所述,在马尔可夫过程(MP)中,我们观察到的是一连串的状态转移。这一特性在马尔可夫奖励过程(MRP)中仍然成立,但每次状态转移还会额外关联一个属性——奖励值。所以现在我们的所有观察结果中,系统的每一次状态转移都会附带相应的奖励值。
对于每个回合(episode),我们将时刻 t 的 回报(return) 定义为
𝐺
𝑡
𝐺_𝑡
Gt:
𝐺
𝑡
=
R
t
+
1
+
γ
R
t
+
2
+
.
.
.
=
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
𝐺_𝑡 = R_{t+1}+\gamma R_{t+2}+... =\sum_{k=0}^{\infty} \gamma^{k}R_{t+k+1}
Gt=Rt+1+γRt+2+...=k=0∑∞γkRt+k+1
上面公式中的
γ
\gamma
γ(折扣因子)在强化学习(RL)中至关重要,后续章节会频繁涉及这一参数。目前,可以将其视为衡量我们估计未来回报的远近程度。其值越接近于1,我们考虑的未来时间就越久远。
现在,我们尝试理解 回报(return) 公式的含义。在每一时刻,回报的计算方式是将后续所有奖励值相加,但距离当前时刻越远的奖励会被乘以带有幂次的折扣因子(幂次数k为未来某个时间步与当前时间步𝑡之间的步数差)。折扣因子(
γ
\gamma
γ )反映了智能体对未来奖励的预见性:若
γ
\gamma
γ = 1,则回报
𝐺
𝑡
𝐺_𝑡
Gt 等于所有后续奖励的简单累加,对应智能体能完全“预见”未来所有奖励的情况。若
γ
\gamma
γ = 0,则
𝐺
𝑡
𝐺_𝑡
Gt 仅包含即时奖励,完全不考虑后续状态,对应智能体处于“绝对短视”状态。
这种极端值(如
γ
\gamma
γ=1或
γ
\gamma
γ=0)仅适用于极端案例,而大多数情况下,
γ
\gamma
γ会被设为中间值(例如0.9或0.99)。此时,系统会考虑未来奖励,但也不会过度关注远期收益。
γ
\gamma
γ=1的情况可能仅适用于短期的、有限步数的回合场景。
尽管回报(
𝐺
𝑡
𝐺_𝑡
Gt )值在实际中并不是很有用,因为在马尔可夫奖励过程(MRP)中回报值的计算是针对每一条我们所观察到的具体转移链,所以计算出来的回报值的变化幅度会很大,即使是计算同一个状态下的回报值。然而,若我们进一步计算的是对任何状态下回报值的数学期望(通过大量转移链的均值统计),则得到一种更实用的数值指标,称为 状态价值(value of the state) :
V
(
s
)
=
E
[
G
∣
S
t
=
s
]
V(s)=E[G|S_t=s]
V(s)=E[G∣St=s]
这个公式很简洁,对于每个状态
s
s
s,状态价值
V
(
s
)
V(s)
V(s)是我们通过马尔可夫奖励过程(MRP)得到的平均(或预期)回报。
为了在实例中运用上这个理论知识,让我们用奖励值来把办公室员工(Dilbert)这个马尔可夫过程(MP)扩展起来,并将其转换为Dilbert奖励过程(DRP)。我们的奖励值如下所示:
- 家 → 家 家\rightarrow家 家→家:1 (因为在家感觉真舒服)
- 家 → 咖啡 家\rightarrow咖啡 家→咖啡:1
- 电脑 → 电脑 电脑\rightarrow电脑 电脑→电脑:5 (努力工作也是好事情)
- 电脑 → 聊天 电脑\rightarrow聊天 电脑→聊天:-3 (分心不是好事)
- 聊天 → 电脑 聊天\rightarrow电脑 聊天→电脑:2
- 电脑 → 咖啡 电脑\rightarrow咖啡 电脑→咖啡:1
- 咖啡 → 电脑 咖啡\rightarrow电脑 咖啡→电脑:3
- 咖啡 → 咖啡 咖啡\rightarrow咖啡 咖啡→咖啡:1
- 咖啡 → 聊天 咖啡\rightarrow聊天 咖啡→聊天:2
- 聊天 → 咖啡 聊天\rightarrow咖啡 聊天→咖啡:1
- 聊天 → 聊天 聊天\rightarrow聊天 聊天→聊天:-1 (聊天聊太久会很无聊)
这样的奖励过程如下图1.7所示:
回到折扣因子
γ
\gamma
γ的讨论,思考不同
γ
\gamma
γ值下状态价值的计算逻辑。我们将从一个简单的案例开始:
γ
\gamma
γ=0。你如何计算状态价值?为了回答这个问题,我们先让当前状态处于聊天(Chat)。接下来会转移到什么状态呢?答案是,这取决于概率。根据我们的Dilbert过程的转移矩阵,接下来的状态有50%的概率是回到聊天(Chat),20%的概率是咖咖啡(Coffee),30%的概率是电脑(Computer)。当
γ
\gamma
γ=0时,我们的回报值(return)仅等于下一个直接状态的奖励值。所以,如果我们想在前面的图中计算 聊天(Chat) 的状态价值,那么我们需要对全部可能出现的下一个直接状态所对应的奖励值进行求和,并分别乘以对应的状态转移概率值:
V
(
c
h
a
t
)
=
−
1
⋅
0.5
+
2
⋅
0.3
+
1
⋅
0.2
=
0.3
V
(
c
o
f
f
e
e
)
=
2
⋅
0.7
+
1
⋅
0.1
+
3
⋅
0.2
=
2.1
V
(
h
o
m
e
)
=
1
⋅
0.6
+
1
⋅
0.4
=
1.0
V
(
c
o
m
p
u
t
e
r
)
=
5
⋅
0.5
+
(
−
3
)
⋅
0.1
+
1
⋅
0.2
+
2
⋅
0.2
=
2.8
\begin{aligned} V(chat)&=&-1 \cdot 0.5 +2 \cdot 0.3+1\cdot 0.2 &=0.3 \\ V(coffee)&=&2 \cdot 0.7 +1 \cdot 0.1+3\cdot 0.2 &=2.1 \\ V(home)&=&1 \cdot 0.6 +1 \cdot 0.4 &=1.0 \\ V(computer)&= &5 \cdot 0.5 +(-3) \cdot 0.1+1\cdot 0.2+2\cdot 0.2 &=2.8 \end{aligned}
V(chat)V(coffee)V(home)V(computer)====−1⋅0.5+2⋅0.3+1⋅0.22⋅0.7+1⋅0.1+3⋅0.21⋅0.6+1⋅0.45⋅0.5+(−3)⋅0.1+1⋅0.2+2⋅0.2=0.3=2.1=1.0=2.8
所以,电脑(Computer) 这个状态是最有价值的(如果我们只考虑直接奖励的话,也就是只考虑眼前下一步),其实并不意外,因为
电脑
→
电脑
电脑\rightarrow电脑
电脑→电脑 这样的状态转移很频繁,而且奖励值很大,中途转移到其他状态的概率并不高。
现在有一个更棘手的问题——当
γ
\gamma
γ=1运行时,状态价值又如何计算?认真想一下。
答案是所有状态的状态价值(value of the state)是无限大。因为在我们的状态转移图中不存在终止状态(sink states,不向任何状态转移的状态),而且我们的折扣因子等于1的时候,我们需要考虑未来无限的态转移次数。正如你看到
γ
\gamma
γ=0时的情况,所有状态的短期状态价值均为正值,所以无论始于哪个状态,无限次数的正值总和等于无限大。
无限大的结果向我们揭示了在马尔可夫奖励过程(MRP)中引入 γ \gamma γ的核心原因,而并不是直接对未来所有奖励值求和。大多数场景下,马尔可夫奖励过程可以有无限的(或者大量的)状态转移次数。由于处理无限大这样的状态价值不切实际,我们想要限制状态价值的计算范围。当 γ \gamma γ<1时就能带来限制效果,这部分我们会在本书后续继续讨论。另一方面,如果你处理的环境是步数有限的(例如,井字棋最多进行9步),那么使用 γ \gamma γ=1完全没问题。
📝警告或重要的注释:
再举一个例子,有一类重要的环境,它只包含一步,被称为多臂老虎机MDP。这意味着在每一步中,你需要在可选的动作中做出选择,作出选择后会给予你一定的奖励,然后回合就结束了。你可以在Tor Lattimore和Csaba Szepesvari所著的《Bandit Algorithms》(多臂老虎机算法)一书中了解更多关于多臂老虎机方法的内容。
正如我之前提到的,在马尔可夫奖励过程(MRP)中,折现因子
γ
\gamma
γ通常被设定在0到1之间。但是有了这样的
γ
\gamma
γ值,手工计算精确的值几乎毫无可能,即使像我们Dilbert例子这样小的马尔可夫奖励过程,因为需要求和数百个值。刚好计算机非常擅长此类繁琐任务,只需提供转移矩阵和奖励矩阵,便可通过一些简单方法快速计算出马尔可夫奖励过程的状态价值。当我们在第5章阅读到Q-learning方法时,将会看到甚至亲自实现一个这样的方法。
现在,让我们为马尔可夫奖励过程增加另一层复杂性,引入最后一个缺失的要素:动作(actions)。
6.1.3 添加动作到马尔可夫决策过程
关于如何纳入动作到我们的马尔可夫决策过程(MDP)以完成扩展,你可能已经有些想法了。第一,我们必须增加动作集合(A),动作集合的元素必须是有限的。这就是我们智能体的动作空间(action space)。第二,我们需要用动作来影响转移矩阵,这基本上意味着我们的状态转移矩阵需要扩展额外的动作维度,相当于把状态转移矩阵变成一个
∣
𝑆
∣
×
∣
𝑆
∣
×
∣
𝐴
∣
|𝑆|\times|𝑆|\times|𝐴|
∣S∣×∣S∣×∣A∣的长方体,其中
S
S
S是我们的状态空间,
A
A
A是一个动作空间。
如果你还记得,在马尔可夫过程(MP)和马尔可夫奖励过程(MRP)的情况下,状态转移矩阵是一个正方形,行为源状态为行,列为目标状态。因此,每一行
i
i
i 包含着一维数组列表,表示跳转到每一个状态的概率值,如图1.8所示。
在马尔可夫决策过程中,智能体不再被动地观察状态转移了,而是能够在每次状态转移时候主动选择动作。所以,对于每个源状态的状态转移数据,不再是一维数组列表,而是升级成矩阵,该矩阵的深度(depth),这一维度表示智能体可执行的动作。另一维度则描述智能体执行动作后系统将跳转的目标状态。下面的图展示了新的状态转移表扩展为立方体结构:源状态作为高度 维度(索引为 i i i),目标状态作为 宽度 维度( j j j),而智能体的可执行动作则作为这个转移表的 深度 维度( k k k)。
因此,总的来说,智能体通过选择动作可干预目标状态的概率分布,这一能力具有重要价值。
让你了解下为什么我们需要增加这么多复杂性。我们假设一下,一个小小的机器人生活在
3
×
3
3 \times 3
3×3 的网格里,它只能够执行三种动作:左转、右转以及前进。那么这个世界里的状态(state)就是机器人所在格子的位置以及朝向(上下左右),总计
3
×
3
×
4
3 \times 3 \times 4
3×3×4 =36种可能状态(任一位置可对应四种朝向)。
进一步假设机器人的马达存在缺陷(现实中常有的事情),当执行向左转或向右转,有90%的机会完成目标转向,另有10%的概率因车轮滑动停留在原来位置与朝向。执行前进时同理——90%成功率抵达目标位置,10%因打滑滞留原地。
在图1.10描绘了状态转移图的一小部分,展示了当机器人在网格中心且面朝上方时,即机器人在状态 [ 位置(1,1),方向朝上] 所有可能的状态转移。如果机器人试图向前移动,那么有90%概率转移至状态 [ 位置(0,1),方向朝上],但也有10%概率由于车轮滑动,目标位置停留在(1,1)且方向朝上。
关于环境与智能体动作所引起的影响,为了精确刻画这些全部细节,标准的马尔可夫决策过程(MDP)采用三维状态转移矩阵,其维度分别为源状态、动作与目标状态。
最后,将我们的马尔可夫奖励过程(MRP)升级为MDP时,在奖励矩阵中添加动作,就像处理状态转移矩阵那样。奖励矩阵将同时依赖状态与动作。换句话来说,即智能体获得的奖励不仅取决于目标状态,还取决于跳转到该状态时所采取的动作。
至此,通过形式化定义的MDP模型,我们终于可以探讨强化学习(RL)与MDP的核心概念:策略(Policy)。
6.2 策略Policy
策略的简单定义是,规定了智能体行为的规则集合。即使面对简单环境,策略也可以是多样性。例如,在前面提及到的网格世界环境为例,智能体具备不同的策略,意味着会导致不同的状态转移轨迹。例如,机器人执行以下动作:
- 盲目持续前进,无视环境反馈。
- 遇障绕行,通过检查刚刚执行的 前进 动作是否失败。
- 持续右转,以滑稽的旋转来娱乐其创建者。
- 完全随机动作,无视位置与朝向,在网格世界场景中建模成一个醉酒机器人。
你应该要记得,RL中智能体的主要目标是尽可能最大化回报。所以,再一次重申,不同的策略会导致不同的回报量,意味着找到一个好策略是何其重要。这就是策略这个概念如此重要的原因。
从形式上来说,策略被定义为,在每一个可能出现的状态下的动作概率分布:
π
(
a
∣
s
)
=
P
[
A
t
=
a
∣
S
t
=
s
]
\pi(a|s) = P[A_t = a|S_t = s]
π(a∣s)=P[At=a∣St=s]
策略被定义为概率分布而非确定的动作,是为了往智能体的行为注入随机性。我们会在这本书的第三部分来探讨为何随机性如何重要且有用。确定性策略在概率分布上是个特例,在要采取的动作上设定概率为1。
另一个有用的概念是,若策略在训练过程中固定不变(即相同的状态下始终返回相同的动作),此时马尔可夫决策过程(MDP)降级为马尔可夫奖励过程(MRP),其原理在于:通过计算策略的概率分布可以对状态转移矩阵与奖励矩阵进行维度压缩,消除了动作维度。
祝贺你终于来到这个阶段了!尽管本章内容难度较高,但它真的对理解后续的实践内容很重要。等介绍完关于OpenAI Gym工具包与深度学习这两个导论性章节之后,我们最终会着手解决这个问题——如何训练智能体解决实际任务?
7.总结
在本章中,通过学习RL特别之处,还有如何与(监督学习和非监督学习)这两个学习范式相互关联,此时,你已经在RL世界里开始了你的旅程。
然后我们学习了RL的基本形式以及内部如何相互作用,接着又学习了MPs、MRPs和MDPs。这些知识将是我们学习本书其余部分内容的基础。
下一章中,我们将会从形式理论移步至到RL的实践。我们也将会学习必要的安装与库包,然后你就可以制作你的第一个智能体。
按图索骥
模块一:强化学习初探
- 第1章:什么是强化学习
- 第2章:OpenAI Gym接口和 Gymnasium库
- 第3章:使用Pytorch进行深度学习
- 第4章:交叉熵方法
模块二:基于价值的方法
- 第5章:表格学习与贝尔曼方程
- 第6章:深度Q网络
- 第7章:更高级的强化学习库
- 第8章:DQN扩展
- 第9章:加速强化学习的方法
- 第10章:使用强化学习进行股票交易
模块三:基于策略的方法
- 第11章:策略梯度
- 第12章:Actor-Critic方法
- 第13章:TextWorld环境
- 第14章:网页导航
模块四:高级强化学习
- 第15章:连续动作空间
- 第16章:信任域方法
- 第17章:强化学习里的黑盒优化
- 第18章:高级探索
- 第19章:带有人类反馈的强化学习
- 第20章:AlphaGo Zero 和 MuZero
- 第21章:离散优化中的强化学习
- 第22章:多智能体强化学习