第三部分 游戏与推理:开发具有更接近人类水平的学习和推理能力的机器
08 强化学习,最重要的是学会给机器人奖励
奖励
驯兽师最重要的驯兽方法其实非常简单:奖励其正确的行为,忽略其不正确的行为。
这种经典的训练技巧,在心理学上被称为操作性条件反射,已经在动物和人类身上应用了数个世纪。操作性条件反射使得一种重要的机器学习方法——强化学习得以出现。
强化学习与监督学习方法形成了鲜明的对比:
- 在其最纯粹的形式下,强化学习不需要任何被标记的训练样本。
- 代替它的是一个智能体,即学习程序,在一种特定环境(通常是计算机仿真环境)中执行一些动作,并偶尔从环境中获得奖励,这些间歇出现的奖励是智能体从学习中获得的唯一反馈。
- 计算机程序被设置为能够对奖励做出响应,比如向机器的内存中添加正数。
强化学习一直被笼罩在神经网络和其他监督学习方法的阴影中。这种情况在2016年发生了逆转,一个程序在复杂的围棋游戏中击败了世界上顶级的人类棋手。
训练你的机器狗
假设我们想要教一只机器狗最简单的足球技巧:当面对球时,走过去,踢一脚。
传统的人工智能方法将会使用显式规则来对机器人编程:
- 朝着球迈出一步;
- 重复这个动作,直到你的一只脚碰到球为止;
- 然后用碰到球的那只脚踢球。
- “朝着球迈出一步”“直到你的一只脚碰到球为止”“踢球”这类的简短描述,必须被仔细地翻译为详细的操作程序,并内置到机器狗的传感器和电机中。
显式规则的困境:
想让机器人变得智能,手动设定它的行为规则就会越困难。现实世界充斥着难以预测的边缘情况,设计出一套适用于任何情境的规则是不可能的。
- 如果机器人和球之间有一个大水坑怎么办?
- 如果有一个足球标志锥挡住了机器人的视线怎么办?
- 如果有块石头阻挡了球的移动怎么办?
强化学习的愿景是:
- 智能体(如机器狗)能够通过在现实世界中执行一些动作并偶尔获得奖励(即强化)的方式来自主地学习灵活的策略,而无须人类手动编写规则或直接“教育”智能体如何应对各种可能的情况。
智能体在一个给定时间和地点上的状态是智能体对其所处情境的感知。
假设机器狗“罗茜”出厂的时候预装了以下功能:如果一个足球在它的视线内,它能够估计出接触到球所需的步数,这个步数被称作它的状态。
罗茜是智能体的一个最简单版本,其状态是一个单一的数字。当我说罗茜处于一个给定的状态x时,指的是它目前估计自己距离球有x步远。
罗茜还要有它可以执行的三个内置的动作:前进一步、后退一步、踢一脚。如果罗茜碰巧走出了边界,程序设定为令它立即往后退一步。根据操作性条件反射的要求,只有当罗茜成功踢到球时我们才给它一个奖励。需要注意的是,罗茜事先并不知道哪些状态或行为会带来奖励。
我们给它的奖励只是一个简单的数字,比如说10,并添加到它的“奖励内存”中。我们把奖励给机器人的数字10等同于给狗喂的食物。与真正的狗不同,罗茜对于奖励、正数或其他任何事物都没有内在的渴求。
在强化学习中,一个人工创建的算法将指导罗茜的学习过程以帮助它获得奖励,即算法会告诉罗茜如何从它的经验中进行学习。
强化学习是通过使罗茜在一系列学习片段中采取动作来实现的,每个学习片段都包含一定数量的迭代。
学习片段是指智能体在特定环境中执行某个策略从开始到结束的完整过程。
在每次迭代中,罗茜会先确定当前的状态,然后选择要采取的动作。
如果罗茜获得了一个奖励,它就会学习到一些东西。
每一个片段会持续到罗茜成功踢到球为止,那时它将得到一个奖励。这可能需要花费很长时间,就像训练一只真正的狗一样,我们必须要有耐心。
开始时,教练将罗茜和球放置在球场的某个初始位置,罗茜面对着球。罗茜判定自己目前的状态为:距离球12步远。
由于它还没有学到任何东西,所以目前还是一张纯洁的“白纸”,不知道应该选择哪个动作,所以它从前进、后退、踢球这三种可能的动作中随机选择了一个。
我们假设它选择了后退并且后退了一步。虽然我们可以看出后退不是一个好的选择,但请记住,我们要让罗茜自己(强化学习)想办法完成这项任务。
在第2次迭代中,罗茜判定了它的新状态为:距离球13步远。然后它又随机选择了一个新的动作:前进。
在第3次迭代中,罗茜判定它的新状态为:距离球12步远。它又回到了原点,但罗茜甚至不知道它以前曾处于这种状态过!
在最原始版本的强化学习过程中,智能体不记得它之前的状态。一般来说,记住以前的状态可能会占用大量的内存,而且事实证明这并无必要。
在第3次迭代中,罗茜再次随机选择动作,这次选择的是踢球,但因为它并没有踢到球,所以它没有得到奖励。它还没有学到:只有踢到球时才会得到奖励。
罗茜继续选择随机动作,在没有任何反馈的情况下,迭代多次。终于在某一时刻,让我们假设是在第351次迭代中,仅仅是由于偶然的运气,罗茜来到了球的旁边并且选择了踢球这个动作,这个片段才算结束。于是,它得到了一个奖励并从中学到了一些东西。
罗茜学到了什么?在这里,我们采用最简单的强化学习方法来说明:
- 在获得一个奖励后,罗茜只学到了使它立即获得奖励的那一步的状态和行为。
- 具体而言,罗茜学到:如果它处于某种状态(如离球0步),那么采取某种动作(如踢球)是一个好主意,但这就是它学到的全部内容了。
- 它并没有学到,若它离球0步,后退将是一个糟糕的选择,毕竟它还没有试过。它可能会认为,在那种状态下后退一步或许会获得更大的奖励呢!
- 罗茜同样也没有学到,如果它距离球只有一步之遥,前进将会是一个不错的选择,它必须经过更多的训练才能知晓。
一次性学习太多对其可能是有害的,如果罗茜在离球2步远的地方踢了一脚,我们不想让它学习到这一无效的踢球动作实际上是获得奖励的必要步骤。
从人类的角度来看,我们常常会有一种“迷信”,即认为某种特定的行为将能帮助引发特定的好的或坏的结果。
- 比如,在罗茜的例子中,我们可能以为,如果它学习到那个无效的踢球动作实际上是获得奖励的必要步骤,这将有利于它更快获得奖励,然而事实并非如此。在强化学习的过程中,这种迷信是你必须要小心避免的。
强化学习的一个关键概念是:
- 在一个给定的状态下执行一个特定动作的值。
- 状态S下动作A的值是一个数字,表示在状态S下,如果执行动作A,智能体预测最终将获得多少奖励,智能体只需执行高值的动作即可。
强化学习的目标是:让智能体自己学习并获得能对即将到来的奖励进行更好的预测的值,前提是智能体在采取相关行动后一直在做正确的选择。习得给定状态下特定动作的值通常需要经过许多次的试错。
这是一种被称为“值函数学习”(value learning)的强化学习方法,但并不是唯一可行的方法。还有一种被称为“策略学习”(policy learning)的强化学习方法,其目标是直接学习一个给定状态下要执行的动作,而非首先学习如何获得更优动作的值。
罗茜在其计算机内存里用一个大表格对各种动作的值进行追踪,
- 罗茜的所有可能的状态,即它距离球的所有可能的距离,
- 以及在每个状态下它可能的动作。给定一个状态,
- 该状态下的每个动作都有一个值,
- 这些数值将会随着罗茜不断学习而变得越来越能准确地预测出是否会获得奖励。
- 这个由状态、动作和值组成的表被称为Q表(Q-table)。
- 这种形式的强化学习有时被称为“Q学习”(Q-learning)。
- 之所以使用字母“Q”,是因为在Q学习的原始论文中字母“V”(value,值)已被用于表示其他的内容了。
第一个片段
当罗茜在第一个片段的结尾因踢到球而获得奖励时,踢球这一动作的值在“0步距”状态下被更新为10,即奖励的值。之后,罗茜在处于“0步距”状态时可以查看Q表,发现踢球这个动作的值最高(预示着最高的奖励),于是它选择踢球而不是随机选择一个动作,这就是“学习”在这个过程中的全部含义!
第二个片段
直到罗茜漫无目的地碰巧走到距球1步的位置,又碰巧选择了前进,这时,罗茜发现它的脚靠近球了,并且Q表有对这种状态的说明——在它当前的状态(离球0步距)下执行一个动作(踢一脚球)预计将获得10的奖励。
- 现在它可以利用在上一片段中习得的这个信息来选择此时要执行的动作,即踢一脚球。
- 在这个过程中Q学习的本质是:罗茜现在能够从与它踢球紧接着的之前的状态(距球1步)中,学到关于要执行的动作(前进)的一些信息了。
-
具体而言,在距球1步的状态下前进动作的值会在Q表中更新为较高的值,该值小于距球0步时踢一脚球这个动作的值,因为后者将直接导致获得奖励。在这里,我将该值更新为8。
Q表现在告诉罗茜:在距球0步的状态下踢一脚球确实是非常好的选择,在距球1步的状态下执行前进的动作也几乎同样有利。当下一次罗茜发现自己处于距球1步的状态时,它将获得一些有助于判断应该采取哪种动作的信息,并可以将当下的上一步动作,即在距球2步远的状态下执行前进的动作的值进行更新。需要注意的是,这些新学到动作的值要随着步距的增加而递减,并比直接获得奖励的动作的值更低,这样才会使系统学习到一条获得实际奖励的有效途径。
强化学习持续进行,Q表中的值也逐步得到更新,一个片段接一个片段,直到罗茜最终学会从任意初始点起步都能完成踢球的任务。Q学习算法是一种为给定状态下的动作赋值的方法,包括那些不直接获得奖励但能帮助智能体经历相对较少的状态就获得奖励的动作。
“训练罗茜”的例子涵盖了强化学习的大部分要点,但省去了强化学习研究人员在处理更复杂的任务时会面临的许多问题。例如,
- 在实际的任务中,智能体对其状态的感知常常是不确定的,不像罗茜对它自己距离球有多少步有清晰的认知。一个真正的足球机器人可能只会对此有一个粗略的距离估计,甚至不确定球场上哪个对象是足球。
- 执行一项动作的效果也可能是不确定的。例如,机器人的前进动作可能因为地形差异而导致其移动不同的距离,或者甚至会导致机器人摔倒又或是撞上未发现的障碍物。
强化学习该如何处理像这样的不确定性? - 智能体在每个状态下应该如何选择一个动作?一个朴素的策略是在当前状态下始终选择Q表中值最高的动作,但是这种策略存在一个问题:
- 有可能其他还未探索过的动作将会带来更高的奖励。是应该多去探索从未尝试过的动作,还是更多地选择那些确定能带来回报的动作?
决定在多大程度上去探索新动作和在多大程度上坚持已证实有效的动作,被称为探索与坚持的平衡,如何实现这两者的适当平衡是使强化学习获得成功的一个核心问题。
- 有可能其他还未探索过的动作将会带来更高的奖励。是应该多去探索从未尝试过的动作,还是更多地选择那些确定能带来回报的动作?
设计成功的强化学习系统仍然是一种很难的但有时却很赚钱的技巧,只有一小部分像深度学习领域的同行一样,花费大量时间调节超参数的专家才能掌握。他们往往需要考虑以下问题:应允许系统学习多少个片段?每个片段应允许多少次迭代?一个奖励在系统中进行反向传播时应该被“打折”多少?
现实世界中的两大绊脚石
首先是Q表,
- 在复杂现实世界任务中,不可能定义一小组能够罗列在一个表格中的“状态”。
- 鉴于这一原因,大多数当下的强化学习方法使用的是神经网络而非Q表。神经网络负责学习在一个给定状态下应给动作分配什么值。具体而言,神经网络将当前状态作为输入,其输出是智能体在当前状态下能够采取的所有可能动作的估计值。网络学习的目标是将相关状态组成通用概念。例如,向前行驶是安全的或应立即停车以避免撞上一个障碍物。
第二块绊脚石是,在现实世界中,使用真的机器人通过许多片段来真正地执行学习过程的难度很大,甚至已经被我们简化了的罗茜案例也不可行。
- 要耗费大量的时间。此外,你可能会让机器人面临选择错误动作以至于伤害到它自身的风险,例如,踢水泥墙,或者在“悬崖”边上向前走一步。
强化学习的实践者几乎都会构建机器人和环境的模拟,然后在模拟世界而非在现实世界中执行所有的学习片段,我们都是这样来处理这个问题的,有时这种方法很有效。
机器人能够在不同程度上成功地将在模拟世界中学到的技能转移到现实世界中。
然而,环境愈复杂和不可预测,将机器人在模拟中学到的技能转移到现实世界的尝试就愈加难以成功。由于这些难点的存在,迄今为止强化学习最大的成功不是在机器人领域,而是在那些能够在计算机上进行完美模拟的领域。目前,强化学习最知名的成功是在游戏领域。
《AI 3.0》读书笔记
《AI 3.0》读书笔记 序1
《AI 3.0》读书笔记 序2
《AI 3.0》读书笔记 序3
《AI 3.0》读书笔记 译者序
《AI 3.0》读书笔记 第一部分 若想对未来下注,先要厘清人工智能为何仍然无法超越人类智能01
《AI 3.0》读书笔记 第一部分 若想对未来下注,先要厘清人工智能为何仍然无法超越人类智能02
《AI 3.0》读书笔记 第一部分 若想对未来下注,先要厘清人工智能为何仍然无法超越人类智能03
《AI 3.0》读书笔记 第二部分 视觉识别:始终是“看”起来容易“做”起来难 04 何人,何物,何时,何地,为何
《Ai 3.0》读书笔记 第二部分 视觉识别:始终是“看”起来容易“做”起来难 05 ConvNets和ImageNet,现代人工智能的基石
《AI 3.0》读书笔记 第二部分 视觉识别:始终是“看”起来容易“做”起来难 06 难以避免的长尾效应
《AI 3.0》读书笔记 第二部分 视觉识别:始终是“看”起来容易“做”起来难 07 确保价值观一致,构建值得信赖、有道德的人工智能
《AI 3.0》第三部分 游戏与推理:开发具有更接近人类水平的学习和推理能力的机器