📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

2025 年夏季 | 机器学习课 CS229 on 8_5_2025 | 强化学习篇

AIEA Labs2:02:01

Transcription

好的。下午好。我们开始吧。嗯?幻灯片上应该写的是星期四。我会把它改过来,以免有人对星期几感到困惑。我们今天的议程相当长。嗯,如果我们有什么没完成的,我会在剩下的三节课中的一节课上再回来讲。我希望我们能完成所有内容。嗯,如果我们在这里完成了所有内容,那么这些材料就标志着你将直接负责考试的材料的结束。嗯,所以到目前为止的一切,包括 CA 讲座,都应该被视为不仅是公平竞争,而且还应该出现在考试中。好的。嗯,期末考试是下周,不是这个星期六,而是之后那个星期六,太平洋时间晚上 7 点到 10 点。嗯,如果你不知道你的考试地点,因为你有某种冲突或例外情况,并且你还没有收到通知,请尽快给我发电子邮件。嗯,这应该已经处理好了。嗯,第三次作业将于本周六太平洋时间晚上 11:59 到期。希望大家都知道这是考试前的最后一次评估。嗯,在接下来的几天里,我们将发布第四次作业及解决方案。它将包含课程后半部分或课程后期的问题。嗯,我们还将发布一些关于 MDP 和强化学习的练习题。好的,这通常不会在课程的非夏季学期版本中进行测试。嗯,下一节 CA 讲座也将是考试复习,然后还有一个额外的 CA,称之为答疑时间,称之为解决问题环节,它将在下周一,也就是 8 月 11 日,太平洋时间上午 10:30 到中午,仅限 Zoom,当然也应该录制,所以如果你不能在那个时间参加,你可以在之后观看。嗯,最后一件事是,接下来的三节课将主要是由各种演讲者进行的客座讲座。嗯,例如下周二,我们有两位我们自己的核心 CA,他们将谈论他们一直在做的一些令人兴奋的工作,这对你们所有人来说都是一个很好的了解,这样你们就可以开始将今天学到的内容与更广泛的联系起来,这些内容显然超出了我们在本课程中有时间和能力介绍的范围。嗯,本周四,抱歉,今天是星期二,没有人纠正我,今天是星期二,不是星期四。所以本周四我们将有三位客座演讲者。他们都来自同一家名为 Resolve AI 的公司,从事一些非常有趣的工作。其中两位是斯坦福大学的校友。所以他们知道他们非常兴奋能回到这门课。我认为至少有一位也上过这门课。所以这会很好。他们将谈论构建代理,这是人工智能代理,它们可以完成人类软件工程师的工作。其中一些你可能已经见过或用过,而另一些你可能会觉得是新的。所以我鼓励你们都来参加并倾听,你们可能会学到一些有趣的东西。虽然我不能说他们谈论的内容是否会出现在考试中,但你应该期望,如果他们建立在你在这门课程中已经接触过的概念之上,那么就把他们谈论的内容看作是这些概念的应用,而在考试中,我们肯定会给你更新的应用,希望是你懂得如何解决的问题。所以不要只是走神,享受它,但要始终尝试看看是否有什么可以联系起来的。可能什么都没有,但也可能有一些。而本课程的最后一讲,也就是下周四,将是关于时间序列预测,从传统的统计预测技术到更现代的基于 Transformer 的基础模型。这是我非常关心的一个话题。我很乐意在之后或之前与人们讨论。我将在斯坦福大学以外的工作单位的两位同事将来到这里进行讨论。其中一位在读研究生期间,我与他有共同的研究兴趣。然后第二位实际上是去年我们这门课的首席助教之一,他将进行一次很棒的演讲,让你们学习一些非常相关的内容。我们只是没有足够的时间在这门课程中涵盖这些内容。好的。关于后勤有什么问题吗?好的。那么,让我们继续我们关于 MDP,马尔可夫决策过程的讨论。我们谈到了它们以这种特定方式定义的事实。你有一组状态。记住,你有一组动作,但动作也映射到状态。它们与每个状态相关联,它们将帮助你从一个状态转换到另一个状态,你也可以回到同一个状态。有一个转移概率,它是转移到某个状态 s' 的概率,给定你当前处于状态 s 并采取了动作 a,对吧?这就是马尔可夫性质,因为之前的事情无关紧要,对吧?这就是马尔可夫的由来。我们谈到了奖励函数,它是你所处的状态、你采取的动作以及你转移到的状态的函数。我们讨论过它可以以多种不同的方式表达,这取决于具体问题,有时你在某个状态时获得奖励,有时你在转移到某个状态时获得奖励,有时你在转移出某个状态时获得奖励。所以这取决于问题结构,但这在完全通用性上捕捉到了它。然后还有一个起始状态的概念,也应该指定。我们上次讨论了折扣因子,它通常是一个介于 0 和 1 之间的数字,讨论了你对未来奖励的重视程度。在大多数现实世界的情况下,你不想让折扣为 1,这意味着远处的动作不如你今天将要采取的动作重要。然后有时还有一个结束或终止状态。好的,所以我们将开始讨论策略评估。策略,我们上次学到的是,它本质上是告诉我们如何行事的某件事。给定任何状态,策略都会告诉我们采取什么动作。它会为你指定。因此,策略的价值,用 vπ 表示,应该同样映射到每个状态,并且它被定义为从状态 s 开始遵循特定固定策略 π 所获得的预期效用。所以你处于状态 s,无论它在哪里,随着你在这个过程中演变,它也会改变。你可能会从一个状态转到另一个状态。所以你可以问这个问题,如果我从某个状态 s 开始,我能期望获得的价值或预期奖励是什么?你必须为每个状态回答这个问题。如果我从这个状态开始呢?如果我在另一个状态呢?如果我在另一个状态呢?你必须为每一个状态回答,并且你必须根据固定策略对其进行建模。策略告诉你如何行事。价值告诉你,如果你按照这个策略行事,并且你从状态 s 开始,你的预期奖励是多少?所以,作为一个常识性的检查,如果你有一个终止状态,奖励只是零,你没有任何奖励,游戏就结束了,在任何策略下,那个状态的价值会是什么?这不是一个棘手的问题。你处于一个终止状态,这意味着游戏在零之后就结束了,对吧?因为你处于那个状态的奖励是零。我告诉你,你永远无法逃离那个状态,你总是在那里,在那个状态下几乎没有可能的动作,或者你可以采取任何动作,它们都会导致什么都没有,所以你永远在那里。所以直观地说,在任何策略下,即使是固定策略,在那里停留的价值也应该是零,对吧?这就是你的思考方式。然后我们也定义了 Q 值这个概念,你会经常看到它。Q 值写得也很相似,Qπ,π 表示你正在遵循一个固定策略。今天,无论你看到 π,都意味着它是一个固定策略。不管是什么。它不一定好。它可以是随机的。它可以是优秀的。它可以是最优的。但现在,它只是一个策略。好的。所以,有人告诉你如何采取行动和行事。这就是,你可以计算。希望我们今天能看到如何计算或关联一个价值。如果你一直玩这个游戏,一直玩下去,那个策略下的价值会是什么?然后一个相关的属性是 Q 函数。策略的 Q 值,它非常相似。它非常直观,非常简单,注意到 Qi 比 V 值多一个参数,那就是动作 A。所以它不仅仅是问你处于状态 S 的价值是什么。它还说你可能从状态 S 采取了许多动作。如果你采取了某个动作 A,并且仍然处于状态 S,那么它的价值是多少?在你完成这次转移后,你将遵循相同的策略 π,对吧?所以从图上看,它说的是,想象一下我们正在谈论价值,这是蓝色的东西。你处于状态 S。你遵循一个策略。该策略告诉你采取什么动作。这就是为什么它被称为 π(S),对吧?这是一个固定的动作。所以它将你转移到这个中间状态。这个中间状态,红色的,只是说这是 Q 中间值 Q 函数,它只是说你处于状态 S 并采取了某个动作 A。那个 A 是什么?那是策略决定的。那是 π(S)。策略告诉你那个 A 是什么。在你之后,你实际上可以根据转移函数转移到许多不同的状态,对吧?它不一定是确定的。然后 s' 之后会发生什么?我希望你们都会同意我的观点,就是同样的问题继续重复一遍又一遍。所以我们可以通过说这是从新状态 s' 开始的策略的价值来缩写所有这些。那么 Q 值与 V 值有什么不同呢?Q 值只是说你已经采取了一个固定的动作。所以在图示中,动作是由策略决定的,但在所以这种情况下,Q(s, a) 的值将等于处于状态 S 的值,对吧?但如果这个动作是某个其他动作,而不是必然从策略中采取的,但在你采取第一个动作后,你遵循策略,这将给你 Q 值,好的。所以这里有一个微妙的区别。Q 值是相关的,它是一个对。它的定义域是状态和动作的对。现在,那个动作可能来自策略,在这种情况下,它应该等于价值,对吧?但它不一定。所以你实际上可以创建一个完整的 Q 函数表。想象一下一个维度是 S,另一个维度是所有可能的动作。所以它是一个二维结构,你基本上想计算每个 s, a 对的价值。其中一些将由策略决定,而另一些将由策略之外决定,我们今天将对此进行大量讨论。所以这很重要,要分清楚。嗯,这只是一个递归,与上一张幻灯片相同的图示,相同的图。我们只是这样表达。那么价值是什么?它只是一个递归。如果你处于最终状态,按照惯例,我们只说价值是零。我们刚才讨论过这一点,之后它只是 Q(s, π(s)) 的值,对吧?因为 π(s) 来自策略,所以它遵循该策略。但 Q(π(s)) 又是什么呢?这只是转移函数,也就是转移概率,因为你处于这个红色状态,你可以去任何地方,对吧?首先,你收到奖励,也就是 s, a, s',然后发生的事情是折扣,你玩游戏,然后你又回到了价值,但现在是某个状态 s' 的价值,而所有可能的 s' 状态是什么?它们是你正在求和的所有状态,因为那些是你可能从状态 s 转移到的状态。你可能只转移到一个状态,这个求和将非常简单,它将是 1,对吧?如果它可能转移到许多不同的状态,那么这将是一个关于所有这些状态的函数,因为你可能最终处于任何一个状态,对吧?所以基本上,你从某个状态开始。你根据策略采取一个动作。策略说要采取什么动作。现在转移函数会告诉你,在你从这个状态采取这个动作后,你可能会最终到达哪里。那么从你转移到的地方的奖励期望是什么?那就是预期的奖励,也就是 vπ(s'),来自任何那些状态。所以我们基本上把它写成一个递归。为什么它是递归的?因为你可以一直走到最终状态,那就是零,所以你可以从那里开始计算它,对吧?这就是为什么它是递归的,而且正如你将看到的,你可以相当有效地计算它。好的。所以,让我们实际写出来。所以回到我们上次玩的我们最喜欢的游戏,也就是你处于 in 状态或者你处于 end 状态。这些基本上只有两种可能性。你决定停留,然后你抛硬币,或者死亡,以三分之二的可能性你回到 in,以三分之一的可能性你结束游戏,然后如果你决定退出,你获得 10 美元的奖励,然后你退出,你进入 end 状态,然后你永远留在那里,对吧?我们谈到了价值是什么,我们关联了各种各样的事情,如果你还记得上次,我们谈到了价值。这是一个简单的游戏,所以我们想说,如果我采取的动作是停留,价值是多少?如果我采取的动作是退出,价值是多少?我当时试图描述的是一个策略,对吧?这是一个简单的事情。你只能停留或退出。所以一个策略是如果你在 in 状态,就停留。另一个策略是如果你在 in 状态,就退出,对吧?所以我当时在描述那个。现在,让我们用我们刚刚发现的语言来表达。如果你想计算处于 in 状态的价值,如果你遵循一个策略,那会是什么?所以在这里我遵循的是停留策略。我们已经得出了退出策略是什么。那是什么?如果策略是你采取退出动作,预期的奖励价值是多少?>> 零,>> 不是零。>> 如果你在 in 状态,那么就是 10。当然,如果你已经在 end 状态,价值就是零。所以这是第一件事。但现在我更感兴趣的是另一个更有趣的策略,那就是停留策略,对吧?这就是游戏继续进行,有时结束的地方。所以让我们弄清楚如何写下来。所以我们知道策略 π 在 end 状态下的价值就是零。所以让我们写下处于 in 状态的价值是什么。所以它是转移。所以让我们回去用我们之前看到的东西来写下来。它是三分之一的可能性,这是转移。转移是什么?你转移到什么?三分之一的可能性你转移到 end 状态。三分之二的可能性你转移回你原来的状态 in。它们的价值是什么?嗯,我们只是用 vπ(end) 和 vπ(in) 来替换它们。而这个四和四是什么?那就是你选择停留策略时获得的奖励,对吧?那就是那些红色的数字。你还有概率。注意我们知道 vπ(end) 是什么。那是零。而且只有一个未知数和一个方程。你应该能够以封闭形式解决它。你得到答案 12。上次也留下了这个作为练习,让你写成一个非常长的无限求和系列,我让你回家验证它是否为 12。嗯,你可以用这个递归关系更快地解决它。对吧?所以我们计算了什么?我们计算了处于 in 状态的价值,在这个策略下,这个策略说如果你处于 in 状态,要采取的动作是停留。对吧?所以这一点非常重要。如果你告诉我策略是退出,那么价值将非常不同。处于 in 状态的价值就是 10。当然,对于任何策略,处于 end 状态的价值都是零。好的,所以这只是递归。那么关键问题是,在此基础上,我们如何实际学习它?我们没有时间,我认为这有点超出了本课程的范围。顺便说一句,你们中的一些人可能也注意到这里的 gamma 等于 1,如果不是 1,那么这些东西,在递归中,你也会有折扣因子。这只是为了简单起见,对吧?所以,我们在这门课程中将无法深入研究,这有点超出了范围,但它很迷人,如果你想的话。我们想引入这种迭代算法。我们从上一张幻灯片中看到的内容应该能让你想到,也许我们可以以封闭形式学习这些,也许我们有机会学习这些东西。我们喜欢这门课程中的迭代算法,你们已经看到了许多不同的形式。所以,它不应该让你惊讶的是,另一个迭代算法,我们今天将介绍其中两个,叫做策略迭代。它所说的就是,我想能够学习我们在上一张幻灯片中学到的东西,但它非常简单,它最终只是两个状态,我们能够将其简化。通常问题不像那样好,对吧?那么我们如何学习所有可能状态下的固定策略的价值呢?这基本上就是策略迭代算法。它非常非常简单和直观。它说的是,在迭代零时初始化这个策略,也就是在你开始之前,所有状态都为零。从我们刚才看到的,我们谈论的是递归,所以当你谈论递归时,这应该吸引你。你将不断更新某物。零是一个很好的起点,对吧?这是最不知情的状态。今天,在我开始玩之前,我把它们都估值为零。现在我们可以再次使用递归来更新这些东西的价值吗?如果你真的直观地思考一下,会发生什么?你最终会从接近最终状态的地方开始,如果存在最终状态,对吧?然后你会慢慢地随着时间的推移更新那些更接近最终状态的东西。再更新一步低于最终状态的东西。然后迭代地更新东西。最终,你希望会收敛并渗透一切,因为这是一个递归,对吧?对吧?所以更接近最终状态的递归,如果存在最终状态,会更容易。但当然,这里我们不只是假设,我们不假设一定存在最终状态。这只是在描述有最终状态时的情况。事实证明,你只是字面上重写了上一张幻灯片中的内容,加上这个 gamma。在这种情况下,gamma 将很重要。它不能是 1,有折扣因子。我只是重复并陈述了上一张幻灯片中的内容。唯一不同的是你将要更新的值将成为 t 迭代下处于状态 S 的最新值。但我在使用所有转移状态的先前值是什么?是上一迭代中的那个。所以唯一的区别是这个。你知道奖励。奖励会改变吗?奖励不会改变,对吧?它将是相同的。转移概率会改变吗?它们也不会改变。它们也是固定的。所以唯一改变的基本上是这里的输出。它是你之前状态的函数的函数。而且,有非常非常好的证明表明,由于这种结构,我不会深入研究这些东西,这些东西实际上会收敛,并且它们会收敛到精确的值。好的。它们在某些情况下会渐近收敛,但你基本上会得到最终的收敛。嗯,你看到了,我也会给你一个快速的例子。但本质上,这里重要的是它是迭代的。所以你不断进行,直到达到最大迭代次数,或者可能还有另一个停止的时间,什么是有意义的?>> 我什么时候停止?>> 当值停止更新,或者变得非常小时。你正在做出非常非常微小的改变,以至于你觉得继续下去可能没什么意义了。嗯,好处是,随着这个算法的进展,你希望你会看到唯一需要记住的是每个状态的先前值,然后你计算下一个。你同时保留两者。但下一迭代你可以忘记那个在最后一个之前的。对吧?所以你只需要在任何给定时间维护两个时间步长在内存中,这很好。即使你运行了很长时间,你的内存占用也不会持续增加。对吧?这就是所谓的策略迭代。嗯,重要的是要记住,我再说一遍,主要是因为这很快就会在这节课上变得非常清楚,我们正在为固定的策略 π 计算它。所以所有这些,实际上正在实现的是,注意到有一个奖励,它不是说 s, a, s'。它实际上说的是 s, π(s)。所以你没有采取任何动作。你采取的是策略推荐的动作。所以你又回到了同一个决策。你又回到了同一个状态。如果你要进行下一次迭代的重新计算,你将再次采取相同的动作。所以策略告诉你采取什么动作。策略是固定的。它没有被更新。所以你重复这个过程很多很多次。你知道策略,你知道奖励。你知道转移概率。你唯一更新的是这个价值,它从零开始,并不断迭代更新。你会发现,你离得越远,迭代越早,收敛得越晚。但最终所有这些都会收敛,并最终达到一个点,即没有任何变化发生。嗯,有很好的证明,我将留给那些可能好奇的人。是的。>> 我们如何知道需要更新状态的哪个排列,以便>> 你更新,你遍历每个状态在每次迭代中>> 比如 S 取决于。>> 是的。你已经初始化了它,然后之后你遍历所有内容。记住,价值必须为每个状态计算,对吧?所以你为每个状态 s 执行此操作。现在可能的转移是什么?这显然取决于策略告诉你的内容。然后基于此,转移 s' 是什么。好的。嗯,那么这里的计算复杂度是什么?不应该让你惊讶的是,基本上,你为这个外层循环,也就是唯一的循环,也就是迭代次数,策略评估 P,然后乘以状态空间 S 的大小,当然,你可以说它是平方的,因为对于每个状态,你也在弄清楚它转移到其他状态。所以这是数量级的,如果每个状态都可以去到每个状态,那就是 S 平方,资本 S 平方,对吧?也就是状态数的平方。但这表明情况并非如此。如果很少有状态转移到很多状态,大多数状态转移到很少的状态,那么这将是占主导地位的。所以这应该是直观的。你正在为每个状态计算这个。但对于每个状态,求和中的项目数是多少?它是你可以转移到的状态数。其他一切都是固定的。所以这相当有效。嗯,然后这是例子,和我们之前的例子一样。现在,而不是像之前那样非常简单地解决它,对吧?让我们假装我们不能一步解决它,因为可能有许多其他情况,我们基本上通过这些迭代来运行,将所有东西的 vπ 初始化为零,然后一遍又一遍地重复这个递归。注意其他所有东西都是固定的。1/3 是固定的。四是固定的。2/3 是固定的,四是固定的。在这种情况下。再次,我们回到了 gamma=1,但暂时忽略它。我们实际上不应该这样做,但这是为了说明。最终,在可能 100 次或更少的迭代后,你会收敛到相同的东西。所以,很好,它们都没有揭示不同的价值,它们只是计算它的不同方式。你不能总是轻易地用手一步完成。>> 我们可以将策略和梯度下降进行类比吗?>> 我们可以吗?你会看到与梯度下降的类比。嗯,但它是迭代的,不是在,我不知道我是否会说它与梯度下降相同,因为梯度下降在做什么?梯度下降正在弄清楚要朝哪个方向前进,并试图纠正你。这基本上是一个递归,它总是让你,实际上这是另一件事,梯度下降也会让你,完整的梯度下降会让你,严格地改进。这个肯定有证明表明你也会一直严格地改进。所以这在某种程度上与完整的梯度下降相似,但它不是通过弄清楚要朝哪个方向前进以及诸如此类的事情来完成的。但今天你会看到一些与其他事情相关的梯度下降的联系。好的。然后我想介绍的下一件事,今天将非常重要,是所以这里的第一个方程是你之前看到的相同的递归。所以没有什么新鲜的。你计算策略 π 的价值,为每个状态 s。这就是你如何做到,你一遍又一遍地迭代。嗯,然后也许在我去这里之前我应该问一下,一旦你有了每个策略 π 的价值,你已经完成了所有这些,实际上有一个引入新策略的概念。所以我可以计算一个新策略,称之为我的新策略 ps,并且可以这样做。这个求和中的所有其他东西和这个求和的索引与上面的一样。唯一的新东西是我正在取 argmax 动作,在所有可能的状态 s 的所有可能动作上。所以让我们慢慢地过一遍,然后你告诉我你认为这意味着什么。我正在计算一个策略。这将是一个新的策略,它将对应于策略做什么?给我一个状态。我会告诉你采取什么动作。这个策略采取什么动作?这个策略采取的动作是让我采取 argmax,也就是从这个状态采取的动作,它将最大化这个特定的东西。这个特定的东西是什么?这个求和是处于某个状态 s 的固定策略,旧策略 π 的价值。这告诉你的是,有一个新策略告诉你,好吧,你运行了那个策略,但现在你能否请选择一个动作,它允许你,它说在最后选择最大动作,基本上在你完成所有事情后,你已经计算了价值,你说再次运行这个递归,但请你能否推荐一个动作,它最大化处于状态 S 的价值?因为处于状态 S 的价值是你实际采取的动作的函数,对吧?而在这里你说的是,在所有可能的动作中,如果你能以某种方式计算出最好的一个,那么这将是一个新策略。如果能计算出来,我们应该给这样的策略起什么名字?>> 最优策略>> 它是某种最优策略的概念,对吧?它是最好的策略。它是奖励,处于任何状态的预期价值。自然地,我们想最大化它。如果我们能计算出所有这些东西,那么如果我能用它来告诉我从每个状态采取什么动作是最好的。我有点在谈论我能在这个设置中想出的最好的策略的概念,对吧?这就是我们接下来要谈论的,也就是 vop 或 vstar 的概念,它再次是一个策略,对于状态 s,它是任何策略都可以达到的最大预期价值。所以这很重要。这是一个策略,没有任何其他策略可以严格做得更好。它说只有一个唯一的策略吗?它没有说你可能有多个策略可以最大化这个东西。多个策略也可以推荐不同的动作。这没有限制。但是确实存在一个最优策略,我们将用 vstar 或 v opt 来表示。而且,就像任何其他策略一样,这个最优策略必须做的是为每个状态 s 告诉我们采取什么动作,对吧?所以,让我们实际看看我们如何计算这个。最优策略会说,那么 Q opt 会发生什么?Q opt 将只是给定一个状态 s 和一个固定动作 a。所以这是关于需要动作的 Q。所以这个动作可能来自任何方式,它是某个固定动作 A。一旦你处于状态 S,你就采取一个固定动作 A,你将转移到一个状态 S',然后这将根据转移函数进行,对吧?但是一旦你说“哦,我正在尝试发现这个最优策略”,你会怎么做?你将假设之后发生的事情将根据某个最优策略进行。所以它只是暂时假设存在一个最优策略。我们还没有开始。我们说有一个动作 A。所以你可以尝试状态 S 中所有可能的动作。你可以计算它们的 Q opt。对吧?所以想象一下状态 S 中只有两个可能的动作。我们将有两个值 QS, A1 和 QS, A2。它们中的每一个可能都不同,因为它们中的每一个可能导致不同的奖励。它们中的每一个可能导致不同的转移函数。但你应该能够,那些是固定的东西。一旦你完成了第一次转移,会发生什么?它是一样的。你说,“好吧,折扣,折扣乘以你最终到达的任何地方的价值。但根据那个假设的最优策略。”好的。现在,一旦你计算了 Q opt,你如何读出最优策略呢?嗯,在非常最后的状态,它仍然是零。最优策略在最后不能告诉你太多。但是,这里有一个小小的改变是,我计算了这些 Q opt 的东西,它们是如何定义的,对于所有可能的动作,你都可以从每个状态采取的动作,对吧?你采取那个动作,你已经计算了它。但它们是什么的函数?它们是第一个动作之后发生的事情的函数,是假设的最优策略。所以现在你有 Q opta 对于从每个状态可能采取的所有动作。那么你如何读出状态 S 的最优价值呢?也就是从每个状态中选择那个能给你最大 Q 值的动作,因为如果这个 Q(s) 是某个状态 s,有四个可能的动作,你将完成四个可能的计算,Q(s, A1), Q(s, A2), Q(s, A3), Q(s, A4)。可能是很多。你已经完成了所有这些。那么最优奖励会是什么呢?嗯,选择一个动作,在这个状态 S 中,从你刚刚创建的这个表中,最好的一个,那个能带来最好奖励的。对吧?所以我们现在有了一种计算 VOP 的方法。注意到递归也依赖于 V opt 的概念。那么如果我们想实际计算这个 VOP,我们的方法是什么?V opt 是某个策略,对吧?策略是最优的,某个最优策略。我们还没有真正说明这个最优策略是什么。但你注意到我们已经做了什么?我们之前说的是根据别人给你的固定策略来选择动作。但最终我们做了什么?我们回过头来,我们计算了递归作为函数。我们如何迭代它?我们初始化了所有这些为零。所以你也可以对计算最优策略做同样的事情,通过初始化这个假设的最优策略为零,然后做什么?一遍又一遍地重复这个,除了这里还有一步,那是什么?为什么我们不能使用我们之前看到的东西?这是三张幻灯片前的策略迭代。为什么我们不能直接使用这个?这里缺少什么?最优策略有什么问题?>> 策略。>> 所以这是一个固定策略,对吧?所以如果我说,好吧,假设那是最优策略。递归是一样的,但有一个关键的区别。最优动作。>> 最优动作。这里我们没有谈论采取那个最优动作。所以还有一步要做,它将把这个变成一个最优策略。所以从图上看,你采取第一步,为所有可能的动作 s, a 计算这个,那就是 Q opt。Q opt 意味着你已经采取了动作,可能是所有动作。你分别计算它们。但之后,你让转移概率发挥作用,然后当你到达任何下一个状态时,就遵循那里的最优策略。对吧?然后读出最优策略,基于哪个是最大化预期奖励的。对吧?所以我们应该能够通过字面上进行这个改变来计算它。对吧?这张幻灯片的黑色部分与你为固定策略 π 看到的几乎完全相同。但不同的是,你已经初始化了这个新的最优策略为零。你甚至不知道它是什么,但你已经初始化了它。这是一个递归。你知道奖励。你知道转移函数。但你不知道的是,我如何选择动作,对吧?我如何选择这个第一个动作?所以你所做的不是什么?为所有状态的所有动作计算它,因为你可以分别做到。嗯,因为之前策略是选择每个状态中的一个。现在你说只为所有动作计算它,然后选择最大化这个东西的动作,你一遍又一遍地重复,最终你实际上做的是最优策略应该做的,也就是选择最大化奖励的动作,你以递归的方式进行,这意味着你实际上是在遵循最优策略,并最终在所有这些状态中收敛到它。所以,当然,这里的运行时间应该更高,因为我们现在,什么应该是主要的区别?主要的区别是你仍然从 S 到 S'。那是 S 和 S'。你显然仍然是迭代次数的函数。但 A 是什么?A 是动作空间,因为你现在也为每个状态计算所有动作,因为你计算所有动作然后选择最好的一个,对吧?好的。所以这叫做价值迭代。同样,有类似的证明说明为什么它会收敛。但这里值得注意的是,我们实际上并不知道这个最优策略是什么,在我们开始之前。之前我们谈论的是一个策略。有人必须为你选择这些动作。这里我们再也没有谈论过固定策略。我们说,如果你知道奖励,如果你知道转移函数,你可以写下这个递归,初始化为零。假设这是最优策略。但一旦你将其初始化为零,你为每个状态的每一步计算所有动作,然后选择最好的一个,并递归,然后它最终会收敛到任何最优价值。然后一旦你得到最优值,你就可以读出最优策略是什么,因为它对应于从每个状态选择最好的动作。所以这是非常了不起的。它应该让你非常满意,也可能让你有点不安,那就是我们设法在没有必要从某种策略开始的情况下就达到了我们想要达到的目标。对吧?这是一个相当优雅的好东西。嗯,这就是我们的火山穿越例子。我不知道这些是否会说明什么,但最终它表明它们不会立即收敛。它们需要一些时间,一些迭代才能收敛。所以这是我们开始的地方。这个黑色的方块,那个高亮的,上面写着 1.9 的,是我们开始的地方。我想计算它的价值。目标是理想地尽可能多地获得 20。嗯,这里有一些非确定性,但不是很多。在第二次迭代时,它开始显示价值是这个。但箭头是什么?有人能告诉我箭头表示什么吗?策略。>> 策略。所以它在每次迭代之后都应该能够读出它现在认为的最优策略,对吧?一开始,这并不奇怪,它认为它没有看到足够的信息,认为去两个方向是正确的动作,对吧?1.8 在两个旁边也认为去两个方向是正确的。几次迭代后,注意到这个 1.8 8 大约在五次迭代后就学会了,它也映射到 1, 2, 3, 4, 5。它有机会看到大奖励有多少步,因为这是递归的,对吧?它在五次迭代后就看到了,实际上不,不,不要去两个方向,而是转换到另一个方向,那里才是你想去的,那是最佳动作,对吧?然后,但另外两个还没有,但注意到它基本上在那时收敛到 1.966 或接近 2,说有一些非确定性,我知道我想去这个两个,就在下面。它变得更确定了,但那是因为它还没有看到那个递归会一直从 20 回到那个两个,然后最终在迭代后,在这种情况下是 50,它会做得更快,它已经更新了它的价值,并且它已经远远超过了两个,并且它也改变了方向。它现在指向远离两个,并且它已经弄清楚最佳决策是实际上尝试去 20。问题。为什么不是 30?为什么不是 20?我们上次讨论过。我只是想确保每个人都在这里。价值不应该是 20 吗?如果 20 是它已经弄清楚的最终结果。>> 最有可能,因为它可能采取其他策略,概率性。>> 甚至更基本的概率。那么为什么它在这里相关?为什么?你是对的。这与策略无关。这与这些是非确定性的事实有关,对吧?所以如果它是完全确定的,那么所有这些都应该在几次迭代后是 20,因为你永远不会出错。你总是知道哪条路通往 20。但你有时会陷入 -50。有时你会陷入两个。所以你离 20 越远,价值也会越小。这就是非确定性部分。好的。所以,只是关于收敛的定理,这是一个你应该做的练习。我没有时间去讲它,我认为你的课程笔记也没有。在这种情况下,你需要折扣小于 1 才能使证明成立,并且你需要这个条件,即它是一个无环图,价值迭代将收敛到正确的东西。这是一个非常强大的结果,对吧?因为我们从基本上什么都没有中得到了最优价值,最优策略。并非完全什么都没有。你知道世界是如何运作的,对吧?所以这是一个非常重要的成分。是的。>> 那么我们为什么在最优策略与最优状态之间有 T 与 P 的符号表示呢?>> 有 P 和 T 吗?抓得好。它们是相同的。T 是转移函数。转移矩阵。P 是概率矩阵。它们是相同的。哦,我从来没注意到这个。好的。是的。所以 T 和 P,这个 T 转移函数与从 S 给出 S 和 A 转移到 S' 的概率相同。我应该更一致地使用 T 或 P。谢谢。好的。所以,基本上我们到目前为止所做的就是我们讨论了 MDP,我们谈到了完全确定性情况并不那么有趣的事实。增加动作的不确定性,其中转移不总是把你带到预期的状态。它们会增加更多的不确定性,这更有趣,也更现实。解决方案总是策略。记住,任何时候我们谈论策略,它都是状态 s 的函数。每个状态 s,你必须告诉我采取什么动作。然后有一个最优策略的概念,它也被计算出来。在多次运行之后,我可以告诉你,这是从这个状态采取的最佳动作。这也是一个策略。输出总是必须是一个动作。然后策略评估基本上允许你计算策略的价值。

当策略固定时,最优策略自然会不同。然后,价值迭代会计算最优价值,以及最大期望效用和最优策略。我们有迭代的递归算法来发现这些,这非常好。其中一些结果以及为什么这成为可能本身就是一套值得您阅读的美丽的理论。

好的,现在我们来让事情变得更有趣。正如我所说,这似乎我们得到了免费的东西。在相当温和的条件下,我们知道如何读出并计算最优策略。您知道,确保 gamma 不等于 1,并且图是无环的,这也是我们迄今为止所看到的,对吧?嗯,我们可以计算这些东西。那么我们完成了吗?您想改变什么才能对我们正在做的事情感到更自在?或者换个说法。我们迄今为止所讨论的设置中,有什么是不切实际的?

>> 知道所有可能的状态和动作。

>> 您通常会知道所有可能的状态和动作。但与之相关的是

>> 嗯,也许是奖励。

>> 那么奖励呢?我们总是知道奖励吗?您知道,也许有时是的,但很多时候不是。还有别的吗?

>> 概率

>> 转移概率,这就是我们希望这些事物能帮助我们做出良好决策的现实世界中的不确定性。在您开始与环境互动之前,您是否总是知道奖励可能是什么样的,或者转移概率会是什么样的?

所以,这基本上就是我们现在要尝试从设置中移除并看看会得到什么。嗯,基本上,强化学习就是我们之前看到的所有内容。我们仍然会假设有一个有限的状态集 S。我们仍然会假设有一个状态集,其中每个状态都映射到一组动作,而且这些动作也是有限的。起始状态,一个折扣因子,也许还有一个终止状态,但我们不知道转移概率,也不知道奖励。这就是强化学习的设置。嗯,这些图片可能会帮助您记住这一点,即在 MDP 中,我们对世界如何运作有一个心理模型。有时它实际上非常有用,您想找到一个策略来收集最大奖励,我们对此有很好的解决方案。嗯,但在强化学习中,这有点像一个在线设置,您不知道世界是如何运作的。您必须与世界互动才能弄清楚,然后也理想情况下不要仅仅收集奖励。最终,您可能还想收敛到如何做出这些决策。但现在您面临一个更艰巨的任务,那就是首先发现您周围的世界。对吧?

那么,作为第一步,您会怎么做来映射我们在这个强化学习在线世界中的情况与我们在 MDP 世界中使用的工具?我们应该首先考虑做什么?

>> 不确定性。

>> 不确定性。好的。我们该怎么做呢?如果我坚持要使用我们迄今为止学到的工具,那么我们需要做什么?缺少了什么?所以我们不知道转移概率。我们也不知道奖励。那么我们可以做什么?价值迭代和策略迭代能在没有这两个量的情况下工作吗?不能。对吧?那么我们该怎么办?别担心怎么做。我们该怎么办?我们需要收集关于这两者的信息。

>> 在统计学领域,我们会称之为什么?估算那些概率和那些奖励。我们如何在强化学习设置中做到这一点?我们如何估算?

>> 采取行动。

>> 采取行动。所以这是一个游乐场,它将允许您采取行动。那么您现在作为第一步要尝试做什么?与环境互动。尽可能多地探索。尝试发现空间,然后希望能够估算出所有以前已知的东西。也许我们可以通过与环境互动来弄清楚它们是什么。

您从某个状态 s0 开始,采取某个动作。您注意到奖励。您还注意到它将您转移到了哪里。然后您一遍又一遍地玩这个游戏。或者如果这是一个永无止境的游戏,那就更好了。玩很长很长的时间。最终,您会去,希望您能采样到足够多的信息,从而对很多这些东西有一个很好的估计,对吧?然后,如果您有了这些,您还能做什么?您可以回去说,“好吧,我认为我什么都知道了。我可以重玩世界的 MDP 版本,我可以告诉您一个好的策略是什么。我也可以告诉您特定策略的价值是什么。”对吧?希望我们都同意这一点。我认为这是第一件事。嗯,所以,基本上您必须做的是指定如何做出决策。我们还不知道,因为您缺少重要信息。您实际上与环境互动,接收奖励,记录它们,并最终估算出我们以前用作固定值的那些数量。

现在,我们通常在这种情况下做的一件事是,转移概率显然是随机的。在这些情况下,我们假设奖励是非随机的,这意味着对于任何 s',奖励总是相同的。没有噪音,没有不确定性。所以,如果奖励是 10,您再次得到相同的结果,您会再次看到 10,对吧?希望这能让您直观地理解,我们可以非常非常好地、非常容易地采样这些东西。

所以,想想那个火山穿越的例子,对吧?您不知道那个 20 是在哪里。您不知道那个 2 是在哪里。您不知道那个 -50 是在哪里。但是如果您能玩这个游戏很多很多次,您就会弄清楚,对吧?您在哪里获得奖励 -50?您在哪里获得奖励 -50?您在哪里获得 20,又在哪里获得 2?然后最终您也可以学会弄清楚,哦,我试图采取一个行动,但我并不总是成功地获得期望的结果。转移概率不是确定性的,您可以创建这个重现那个世界的地图,然后您最终可以应用我们以前学到的工具。

嗯,所以,这基本上将进入如何解决这些强化学习问题的世界。第一个是我们刚才讨论过的,称为基于模型的。基于模型的部分是什么?那就是转移函数和奖励。那就是世界的模型,对吧?然后,您就可以学习并估算它。奖励很容易,因为我们说过它是非确定性的,而且是相同的。所以,基本上您可以取所有奖励的平均值,或者您上次看到那个奖励是什么,您就说我已经发现了那个奖励。好吧。

但是转移函数呢?您必须玩几次游戏。对吧?因为您需要知道这是一个条件概率。所以,它是处于状态 s 并采取动作 a 并转移到某个状态 s' 的概率。您如何估算它?嗯,计算您处于状态 s 并采取动作 a 的次数。其中,您想计算转移到 s' 的次数,对吧?这就是条件概率的定义。所以,如果您有足够多的这些,您就可以采样它们。您就可以很好地估算它。

可能会发生的一个问题是什么?想象一下我遵循了某个策略 pi,它告诉我如何采取许多行动。如果我遵循某个特定策略来估算这些东西,可能会出现什么问题?我的目标最终是弄清楚策略的价值,对吧?也就是每个状态的 v pi(s)。我让策略告诉我一遍又一遍地玩游戏。我声称在某些情况下,或者很多时候,我们可能会遇到巨大的问题。

>> 您根本不会进入某些状态。

>> 您根本不会进入某些状态。如果您使用一个策略来告诉您采取什么行动,它可能会完全错过某些状态。一个策略,一个固定的策略可能会错过很多那些状态,很多那些组合,s,a。但是即使是其他类型的策略,当您试图发现空间时,取决于它的复杂程度,有多少动作和状态,您有多少预算来实际运行所有这些东西,您可能无法实际看到所有这些组合。在这种情况下,您可能会有大部分系统可能永远不会被探索。例如,如果您遵循策略 ps 保持,这会很好,但如果您从未见过退出,您将如何确定退出的价值?所以,这是这种方法的第一个问题,是的,您可以估算这些东西,但您必须保证或希望您能足够多次地探索它。

探索这些的一个可能合理的策略是什么?

>> 有时您不遵循策略。

>> 有时您不遵循策略,或者从不遵循策略。总是随机采取行动。随机化将帮助您探索,对吧?因为它会说状态 s,随机选择一个动作。您回到状态 x,它会随机选择另一个动作。您回到 s,它可能会采取另一个动作,或者再次采取同一个动作,对吧?希望您玩得足够多,最终您会看到所有 s, a, s' 的三元组,对吧?

好的。所以,再次这是问题。您不会看到某些 s, a,而这可能不是我们需要的。所以关键思想是我们想探索。我们今天会回到这一点。探索。你们都听说过探索与利用。学习最佳策略是什么?执行或遵循它是利用。探索基本上是随机性,它将使您能够更多地探索,发现更多,因为请记住,现在我们处于一个您没有获得转移概率的世界。您没有获得奖励。所以通常您必须在它们之间进行交互。我们将在今天的讲座结束时看到这一点。您如何实际拥有一个允许您在它们之间互动的策略?因为您只想一直探索吗?您是否总是想利用,而且可能两者都不是,您想在它们之间进行某种权衡,对吧?所以我们今天晚些时候会看到这一点。所以,每当您谈论探索时,它基本上就是一个随机策略。

那么,让我们做得更好。让我们尝试做得更多,不一定更好,让我们尝试做得更多,看看我们是否可以谈论一个我们可能不需要估算奖励和转移函数的世界。任何人对此有什么直观的理解吗?或者我为什么会谈论它?

所以,以前我们说我们有世界的模型,我们可以应用价值迭代和策略迭代。所以,让我们实际去看一下,如果我们没有那些,让我们去估算它们。现在退一步思考,我们实际上在估算什么?最终目标是估算奖励和转移概率吗?不,不是。那是什么?计算在状态 s 下的价值,无论是最优的还是在固定策略下的。那么,如果我允许您多想一点,并说您有很多预算去玩游戏,看看您是否想查看转移、奖励,无论什么。但是您能直观地想象一下,如果有人要求您这样做,您将如何设计学习那个价值?

还记得价值是什么吗?状态 s 的价值是什么?您期望从状态 s 中获得的期望奖励。忘记转移和奖励,在学习个体奖励方面。您在玩游戏时看到了什么?您看到了很多奖励。您可以一遍又一遍地玩游戏。您可以回来并从阶段 s 开始,如果您愿意,可以采取一个动作 a。我们上次看到了,如果您还记得那个简单的骰子例子。有时它会持续两轮,有时会持续三轮,有时会持续很长时间,有时会在一轮后结束。我们如何计算那个期望奖励?我们写出了那些长长的递归,无限的几何级数,我们最终没有展示它,但我告诉您价值将是 12,对吧?

那么,那在告诉您什么?如果您被允许一遍又一遍地玩游戏来估算状态 s 的期望奖励,您现在可以做什么?我认为你们都知道。有人必须勇敢地开始告诉我怎么做。否则,我们将在这里待上整整 50 分钟。所以,这是您在状态 s 下的期望奖励,如果您被允许一遍又一遍地玩这个游戏。

所以,想象一下您被允许一遍又一遍地从状态 s 开始。您让游戏运行,在每个称为回合的阶段。您在观察什么?

>> 总奖励。

>> 对吧?某些策略可能一直在发生。没关系。也许您正在计算策略的价值。所以它告诉您如何在游戏中继续。游戏结束了。假设回合结束了,您用完了迭代次数,或者有一个结束状态。您观察到了总奖励是多少,对吧?那是期望奖励吗?不。因为有随机性在起作用。这只是一个回合。那么您能做什么?您说,我能回去从那个状态开始吗?再玩一次游戏。如果存在真正的随机性,会发生什么?您可能会看到另一个奖励。然后您就可以再玩一次游戏。再看到一个奖励。那么现在期望奖励的最佳估计是什么?

>> 平均值。

>> 平均值,对吧?您实际上可以取所有样本。您取,您假装每个回合都是一个样本。因为您有很多预算。您现在不必担心它。您可以一遍又一遍地玩游戏。您可以计算这个。一遍又一遍地玩这个游戏,看看期望奖励是多少。我想提醒您关于骰子游戏。嗯,因为当您玩骰子游戏并说我的策略是保持,有时游戏以 4 的奖励结束,因为您立即结束了。有时以 8 的奖励结束,因为您持续了两步。有时是 12,16 等等,每个持续时间都更长的概率都越来越低。但那些是可能的。最终,如果您玩了无限次或很多次,您就可以基本上只是计算并求和,然后取平均值,您会得到非常接近 12 的结果,对吧?

那么,我们是否谈论过转移概率?不,我们不需要估算它们。我们甚至需要记录所有个人奖励吗?您可以,但您不需要。您只需要有人在回合结束时告诉您您收集了多少奖励,对吧?所以,您基本上,这里的关键思想是所有这些红色部分——转移和奖励。让我们不要明确地担心它们,让我们直接一遍又一遍地玩游戏,收集奖励,然后问自己是否可以估算这些我们正在追求的直接数量。

所以,我们将表示,这也是我上次介绍的,这个效用的概念。效用只是说,如果您玩了游戏,一个回合的总奖励是什么。它与您想将其与状态 s 相关联,但它说的是,好吧,让我从我所在的地方开始,我现在得到一些奖励,然后是我看到的下一个奖励的折扣版本,因为我转移到了另一个状态,某个策略告诉我接下来去哪里,无论我怎么到达那里,我现在都有一个 gamma 平方,因为那是两步之后,我又收集了一个奖励,对吧?那是 RT+2。您一直玩下去,直到这个回合结束,您就可以得到这个效用函数的值,也就是您在该回合中收集的总奖励,然后您可以将其与每个状态 s 相关联,对吧?然后您可以一遍又一遍地玩游戏。所以,希望您会同意,您可以简单地取所有这些的平均值来计算 Q pisa 或状态 s 的价值的估计值,因为一旦您计算了 Q,您也可以找到价值,对吧?

那么,让我们谈谈 Q,也就是 s, a。我们该怎么做?它是那个回合的效用的平均值。所以 UT 只是一个回合的价值,其中 ST-1 因为这个游戏可能已经进行了一段时间了,是我想计算这个的状态 S,而我被告知采取的动作是那个动作 A。所以,在我记录所有这些奖励并正确地对它们进行折扣之后发生的一切,然后最终我希望得到足够多的样本,我可以取平均值,这将是我的 Q 值估计。我们不需要担心转移,因为系统,环境已经处理了它们。对吧?并不是我们摆脱了不确定性或奖励结构。只是我们不再明确地记录它们了。我们让游戏自行进行,然后说,“好吧,我继续收集奖励。好的,我再玩一次游戏。我再玩一次游戏,另一个回合。如果需要,从别的地方开始。”您基本上可以从这些长回合中收集这些样本。当然,您可能需要很多回合才能获得良好的估计。我们还没有真正说过我们有预算限制,但基本上这就是游戏的名称。

>> 是的。

>> UT 是为每个回合计算的吗?UT 是的,它应该为每个回合计算。其中有一些部分,您可以注意到它说 ST-1,它没有说 S0 或 S-1,对吧?所以,您可以基本上取其中的一部分,然后说,如果我从某个其他状态开始并继续下去,那么那个奖励就是,等等,但通常您不会在同一个回合中再次执行相同的状态-动作对,而且由于这个折扣因子,当您有一个较大的因子,如 0.8 或 0.9 时,是否意味着未来奖励更有可能发生?

>> 所以,所以问题是,如果奖励,折扣因子更接近于 1,是否意味着未来奖励更有可能发生?它不是更有可能。它们仍然会发生。它们所关联的价值要小得多,对吧?所以,您可能仍然会玩很长时间的游戏。您可能仍然会看到一些奖励,但今天的价值是多少?它将被大大折扣。

>> 即使您有一个相对较高的 gamma,最终一切都会收敛到零。仍然假设您在每一步都有 RI,对吧?

>> 不,您观察到了 RI。所以游戏允许您说我采取了一个动作。我处于状态 S。我现在完成了。告诉我我的奖励是多少。它可以是零,对吧?它也可以是负的,对吧?然后您进入下一个状态。您再次问同样的问题。所以环境会为您提供逐步反馈。

>> 是的。模型免费是否比今天早晨的动态问题更具弹性,今天的股票市场明天就不同了,而一个固定的世界模型则会更好地适应?

>> 这是个好问题。模型免费是否比这个更具弹性?我的意思是,这种模型假设底层的动态不会改变,因为要么是这个,要么是那个,它们都相当耗费数据,您无法在没有足够样本的情况下获得模型的良好估计。您无法在没有足够样本并能够反复运行的情况下直接获得这些 Q 函数的良好估计。所以,我认为您必须将自己锚定在,让我们假设世界没有改变,但这些东西可能会随着时间推移而适应,您实际上会看到接下来出现的那些可能更符合您所说的。

好的。所以,这只是,而且请记住,有一点是,这仍然是 pi 的函数。所以,您仍然通过某个策略与环境互动,该策略告诉您如何在环境中表现。所以,最终您计算的是,在策略 pi 下,处于状态下的期望奖励的价值。好的。所以,这只是说明了模型免费蒙特卡洛做了什么?我们有我之前谈到的同一个例子。您运行了它,您得到了奖励 4,也许是 8,也许是 12,也许是 16,等等,最终您可以简单地取平均值。

另一种迭代方法是什么?为什么等到很长时间才取平均值?您如何保持最新?每次看到这个,这基本上就是更新 Q 值,通过看到新的,新的数据是什么?新的奖励,总奖励是 mu,对吧?然后您用某个东西对其进行加权,然后将其添加到原来的东西中。这让大家想起了什么?

>> 抱歉,还没有,不是逻辑回归或其他什么,但您会看到一些损失之类的版本。但这个更新让大家想起了什么?

>> 这就像运行平均值,对吧?这就是您计算那些,某种凸组合的方式。所以,您基本上说,我想也许说,如果我有很多更新,对这个特定数量,相信它们,而您得到的新一个,也许不要相信它们,但您也可以有这个 alpha 是其他东西,可以是,不,如果我看到一些新的东西,我真的希望它影响我的估计。对吧?所以您也可以改变那些。所以,这有点视角。我将为您提供这个特定数量的两个或三个视角,即我们仍然在这个模型免费蒙特卡洛世界中。我们从经验中学习,一遍又一遍地玩游戏,并更新事物,因为这将更新。我们不想等到世界结束才更新。我们想保持一个我们所见事物的运行计数。所以,您取当前估计,用某个参数对其进行加权,然后添加到您收到的最新信息中,对吧?就是这样。

第一个视角是,当然,也许我们想将其用作加权平均值,对吧?运行平均值。您如何做到这一点?这基本上就是 1 除以更新次数加一。加一是有必要的,这样您就不会在任何时候除以零,等等。但最终,这就是运行平均值,对吧?这很有意义。

另一个版本,只是重新排列这个方程。上面的是您之前看到的同一个方程。现在只是重新排列了。这应该让您想起,我正在通过减去某个函数来更新我的 Q。这只是 alpha。您当前的估计,称之为预测,如果您必须称之为预测,因为如果您没有收到其他示例,并且被要求说 Q pi S, A 的当前价值是什么,那就是这个红色部分,因为那是当前的。那么您收到的新信息是什么?那就是 mu,它基本上就像,好吧,我想相信那个是,您知道,如果我与它不同,那么我可能需要调整一些东西。我需要调整多少?由这个参数 alpha 加权。所以,这非常像随机梯度下降或梯度下降。这更像是随机梯度下降,因为您基本上是一次更新所有内容,但您知道,您明白了。所以,这与您以前看到的东西有一个很好的平行。

嗯,哦,好的,我停下。您有疑问吗?好的,很好。所以,这基本上就是我想说的关于蒙特卡洛模型的世界,您基本上只是在模拟事情。您让它们模拟。您等待每个回合结束。当每个回合结束时,您就去更新您可以更新的东西。您再玩一次游戏。您又经历了一个回合,然后您就去更新回合结束后的东西。但这里的关键是什么?您在等待回合结束,然后才去更新东西,对吧?这可能非常慢,特别是如果您没有终止状态,而且您可能实际上会玩一段时间,对吧?所以,我们希望能够进行更快的更新。有权衡。有什么好处?如果进行更频繁的更新,它可能本质上更成问题,因为您可能没有看到更多相关信息,但您可能会更快地观察到并利用这些信息。所以,我们实际上会看到这个 TD 学习的概念,它看起来是这样的。它是一个模型免费的策略评估,所以它仍然是 pi u 的函数,它将再次用于估算固定策略的价值。它将收敛得更快,但基本上它正在做的是,您看到的这种常见形式称为 TD,括号中是 TD0,表示它实际上不会等待回合结束,它会在回合内开始进行更新,一旦它看到下一个东西。

那么,在这个方程中,它应该看到下一个东西是什么?如果我在某个状态 ST,在时间 t,我处于某个状态 S。这里唯一能让我期望环境揭示给我的是什么?是 gamma 吗?不。gamma 是我们设定的参数。是 V(ST+1) 吗?环境会向我揭示状态 ST+1 的价值吗?不。那是我正在计算和估算的东西。所以,我将使用之前的估计。奖励。是的。对吧?这就是环境将揭示给我的。所以,您处于某个状态 ST。您对此有当前的信念。您对下一个状态也有当前的信念。无论您去哪里,环境都会带您进行某种转移。那么,您该怎么做?您获得奖励。这是您获得的唯一新信息。您不必等待整个回合。您只需获取该信息,然后您基本上说,好吧,这是估计。这是新的目标。那是旧的目标。减去它们。用某个参数 alpha 对它们进行加权,alpha 是您想有多敏感。就像步长一样。然后只是更新您的价值。那就是 TD0。零表示您基本上只查看您现在收到的信息。

好的。而另一个,我们稍后会弄清楚。因此,为了获得 V 的更准确估计,您需要进行更新,使其更接近更准确的估计。那么,这实际上说明了什么?我内在的信念是,这是您所做的假设,即 RT+1 加上 gamma 乘以处于下一个状态的价值是您想要达到的目标。所以,它增加了更多价值。这个 R 将为您提供关于进入这个状态有多大价值的信息。如果我们已经到了那里,这个差值将为零。所以没有什么可以更新的,对吧?如果不是,那么我们就想更接近它。这只是说明了,就像梯度下降一样,对吧?

所以,基本上这说明了这是目标。目标在您每次与环境互动时都会更新,因为您会获得奖励,并且您基本上知道您可以去更新哪个。您会更新所有状态吗?您不能,您只看您刚刚互动的状态,采取了某个动作,进入了下一个状态,这就是您收到的所有奖励 RT,对吧?这不会改变所有事情。它会改变 VST 的一些东西,并且只与下一个您将要去的下一个事物有关,对吧?好的。

那么,这里的算法非常简单。您初始化您的状态 u。您任意初始化。值可以是零。然后您基本上为某个固定的 pi。所以这个 pi 策略是固定的。请记住,我们正在尝试评估它的价值。您采取一些,它告诉您从每个状态采取什么动作。您采取一个动作,您观察到什么?两个东西。奖励是什么?下一个状态是什么?就是这样。然后您去更新,并且您迭代地更新这个递归,在您可能做的任何时候。然后就是这样。然后您进入下一个状态,然后您玩同样的游戏,您一直玩下去,直到最大迭代次数,或者您可以一遍又一遍地玩回合。

>> 那么,您怎么知道 V(S'),如果您刚刚进入它?是从以前的 >> 记住,这是同样的更新递归,对吧?所以,以前是,最初它们都是零,对吧?然后您与环境互动,您实际上会看到今天的例子,其中所有人都为零,然后它们会慢慢地开始更新,但它们会同时更新吗?不,它们不会,因为您基本上是在非常短视地看着,您只是说更新您现在可以更新的东西,对吧?好的。

那么,这里有一个区别我想强调一下,您在强化学习中会经常听到这个。有这个关于策略内与策略外(on-policy vs off-policy)的概念。我们已经谈论了足够多,以至于我认为我甚至不需要看幻灯片。如果我让您说出来,您可能会得出相同的结论,即策略内是策略固定的。您用来学习的是有人固定策略并告诉您如何做决策,然后您估算所有我们谈论过的东西。您将看到下一个,其中一个例子称为 SARSA 算法,您将看到它为什么被称为 SARSA。我们之前看到了蒙特卡洛的东西,对吧?那么,策略外可能是最终的真正目标是使用您将要与环境互动的任何策略,但最终您想计算另一个策略的价值,而我们实际上一直感兴趣的另一个策略是什么?它是最优策略。您将看到 Q 学习算法将帮助我们实现这一目标。这些现在是价值、策略评估和策略迭代、价值迭代的类比,我们在世界完全定义时就看到了。其中一个帮助您计算策略的价值,另一个是计算最优策略的价值。这些将是那些的直接类比,但您现在处于一个模型免费的世界,对吧?

好的。所以,TD0,第一个规范部分是 SARSA 算法。为什么叫 SARSA?有人猜猜吗?您可能知道。状态,动作。

>> 状态,动作,奖励,状态,动作。

>> 好吧。所以,非常巧妙的命名,对吧?所以,这告诉您它将做什么。它基本上会说,您所处的状态,您采取的动作,观察到的奖励,查看您转移到的下一个状态,然后它还将讨论您将要采取的下一个动作。所以,这将是关键。我们在这里增加了一件事。它不是 S, A, R, S,而是 S, A, R, S, A。这意味着您从一个状态-动作对开始,您观察到一个奖励,然后您进入一个新的状态-动作对组合。所以,您转移到一个新的新状态 S',策略告诉您对于状态 S' 您将采取什么动作。所以,您将把所有这些都考虑进去。

是的。直观地说,为什么我们购买了,我们购买了,它很重要,我们根据下一个回合采取什么行动?

>> 因为这是一个策略内的算法。

>> 所以它将计算该策略的价值。所以,有意义的是,您不会在每个状态下都得出结论,它会知道该采取什么行动。对吧?好的。

所以,基本上,您想在这里计算价值,而且它非常简单。如果您注意到结构与 TD0 完全相同。这是一个 TD0 算法,您用 Q 值对奖励 RT 进行折扣。但请注意,它不是旧的 Q 值。也就是说,它不仅仅是一个函数,它是处于状态 S 的价值。现在它是状态-动作对。而且这个动作也是由策略决定的。就是这样。您收到的新信息是什么?只是 RT。只是奖励。Q 函数。是的,它是不同的状态和不同的动作,但这仍然是之前的估计。好的?而且这是策略内的,因为所有动作都是策略的函数。您会看到,这很快就会变得非常重要。

嗯,所以,是的,所有这些更新都是在从非终止状态的每次转移时执行的。然后,如果它是终止的,那么,您知道,您将其设置为零。所以,没有什么太深刻的。希望非常直观。我们只是在 TD0 的基础上进行了扩展,将其扩展到了您谈论状态-动作对的情况。但关键区别是,您将看到为什么它很重要,大约 3 分钟后,那就是这是一个策略内的。它将输出固定策略下的状态-动作对的价值。

好的。所以,抱歉这里的图形。它只是有点模糊。但它与您之前看到的相同,只是现在您有了 A'。所以,您采取一个动作 A,观察到 R, S',但然后策略告诉您接下来要采取什么动作 A',对吧?那是从策略中出来的。我在这里指出了这个 epsilon-greedy。如果这让您烦恼,今天就是某种策略。到讲座结束时,我们将弄清楚,我们将弄清楚这是什么。这是那种探索-利用策略。好的,但我们稍后会弄清楚。这是某种策略。您仍然在评估一个策略。

好的。所以,让我们在这里进行比较和对比。以前,当我们谈论使用整个回合 mu 时,您是基于的,您是基于一个完整的路径更新的。现在您在这个世界里,您是基于您收到的每一点东西来估算的,对吧?每一点奖励。更快的估计。您可以证明 mu 是无偏估计,因为显然它已经运行了一个完整的回合。这比有偏见更有偏见,因为如果您犯了错误,或者事情看起来不太好,发生了什么事,您仍然受制于它,因为您正在根据刚刚观察到的情况进行微小的更新。所以,从这个意义上说,它有点偏见。它的方差很小,因为它不会改变太多事情,对吧?而您会因为您可能有一个长回合,然后之后您可能会有很多事情会得到相当大的更新。然后,当然,问题是那个世界要求您等到回合结束,但您可以在这里进行更即时的更新。

好的。所以,现在大多数人所做的事情,也就是 Q 学习,它基本上是一个策略外的算法,我们将认识到,这个特定的东西将允许我们使用一个策略,就像 SARSA 允许我们使用一个策略一样,但它将以一种巧妙的方式完成,只有一个小的开关。它将允许我们学习最优策略或最优策略的价值。这现在应该让您想起我们在价值迭代时所做的事情。我们首先谈论了策略评估,那是针对固定策略的递归,然后我们回过头来,我们说好吧,但您做了一个小的调整,您说让我们为所有状态-动作对计算它,然后取最大动作,对吧?argmax。我们要做同样的事情。我们将如何说?请注意,Q 函数始终是您将要采取的动作的函数,对吧?所以,它是 Qs 在时间 t,状态在时间 t,以及策略在时间 t 告诉您的动作。那就是 A t。但请注意,在我们说了之后,我们所做的唯一改变是,与上一张幻灯片,SARSA 在这里,实际上是这个对 A' 的最大值。

所以,它告诉您,一旦您采取了您试图计算的状态-动作对的动作,它就是固定的,因为我正在为那个状态计算它,并且我正在计算它,而且动作来自策略。但是当您想在之后采取最优行动时会发生什么?所以,您想说,利用您当前对最佳策略的估计,您已经转移到了状态 ST+1,不要问您正在使用的策略在状态 ST+1 中下一步该采取什么动作,而是问您正在计算和迭代的 Q 表,现在在这个状态 ST+1 中采取最佳动作是什么?所以,有时这被称为 S,与 SARSA 形成对比。所以,没有第二个动作 A 在结尾不存在。S 是一个加载的词。所以,我们很庆幸不会称之为 SS。我们称之为 Q 学习。所以,这也是 TD 学习的一个实例,因为您仍然在观察那个单步奖励。但现在您实际上只是,您不让策略决定您在下一步该做什么,对吧?

好的。好的,所以 Q 学习很棒,因为这将允许您做的是,因为这个最大值,它将允许您最终学习收敛到每个状态和动作对的最优价值,这非常了不起。同样,就像我们用价值迭代所做的那样,我们利用了您所做的任何事情,您都可以利用递归来最终学习最优策略。在这里,您将学习最优策略,所有这些的最大奖励的最优价值,但您通过遵循这些递归并同时与环境互动来做到这一点。

好的,这就是唯一的改变。再次抱歉它又变得模糊了。同样,策略告诉您在状态 s 中采取什么动作,但一旦您问了它一次,您就不再问它了。您再次观察到奖励,或者您观察到转移到 s' 的情况,但您在下一个递归关系或这个 TD 更新中采取的动作,这个目标是来自 Q 表目前告诉您的最佳动作是什么,就在这里。然后,该动作是根据您之前在 Q 表中计算出的任何内容。所以,它会随着时间的推移而变得更好。

让我们快速举个例子。所以,想象一下您处于这个 3x3 网格世界中,某个机器人或代理从左上角开始,即 0, 0,目标是到达右下角,即 2, 2。好的。索引从零开始。这里的动作是上、下、左、右。如果它撞到墙壁,它会留在原地。所以,这就是动态,您每走一步获得 -1 的奖励,到达目标时获得 +10。

好的。您直观地认为会发生什么?我们知道动态。机器人不知道动态,对吧?所以,它会尝试做什么?它将使用某种策略,告诉它向左走,向右走,做这个,做那个。它会立即学会那里有奖励在 2, 2 吗?不。它需要一段时间才能学会,在与环境互动之后,那里有一些东西,而且没有非确定性,实际上没有随机性,因为这一切都是确定性的。所以,您想向右移动,您会成功地向右移动,除非您撞到墙壁,对吧?然后您留在您所在的地方,对吧?所以,它将与环境互动,希望现在您可以在脑海中可视化,您将在稍后看到这一点,最初我们初始化所有东西为零,所有 Q, a 对都将为零。它将保持零相当长一段时间,直到它开始看到足够多的信息,直到它第一次开始看到奖励,那里有一个正奖励,然后这些东西将开始逐渐渗透。

所以,让我们进行几次迭代。您将所有值初始化为零。所以,这是为了向您展示 Q 表,为什么我称之为表?它是总和。它是,想象一下这里的行是状态,即 0, 0 只是索引,对吧?0, 1, 0, 2 一直到 2, 2。然后动作是上、下、左、右。它们与每个状态相关联。好的?所以,用零初始化它。

然后,假设有人根据某个策略告诉您,您处于状态 0, 0。我告诉您那是起始状态。您向右走。那么会发生什么?您还被赋予了 alpha,它相当于步长之类的东西,为 0.5,gamma 为 0.9。所以,您去代入它。您说,如果您代入并将其与我们之前看到的所有东西匹配,您将得到

说,重要的事情是这个最大值。这个最大值将是什么?它将是所有零的表格上的一个最大值。为什么?因为它查看前一个表格,当前表格的集合,并且您将以某种方式在这里打破平局。这实际上并不重要,但您知道,它会告诉您采取什么行动。如果它们是相等的值,您只会说,“好吧,随便选一个。”请注意,唯一非零的是这个 alpha 和这个负的奖励,因为每一步都会让你得到一个减一。所以你确实得到一个减一,但它是在下一步。所以你乘以 0.5。所以你在这次迭代之后更新表格,说 0 0,右,当前的值是 minus0.5,然后你再做同样的事情,你会看到这些东西的一些漂亮的对称性,下一个动作有人说再次尝试向右走,所以请记住你已经向右移动了,所以你从 0 0 到了 01,对,因为这里没有随机性,你可以从 0 到 0 到 01,因为这就是策略告诉你的去做,然后现在你问,好吧,0,1 的值是多少,这是状态,然后是动作,对,然后你把它插回去。请注意,它仍然是 0 0 0 的最大值,因为之后可能发生的所有事情,因为你将进入状态 02。所有这些都是什么?值都是零。所以它会随意地挑选这些东西,然后说,好吧,这真的不重要。这些都是零。它更新到 minus.5。它再做一遍。但现在请记住,它正在向下,它在 02。它正在向下。所以它会去 1 0,或者抱歉,1 2,因为 02 向下是 1 2。现在是最有趣的事情。这是第一次看到有趣的事情发生在这里,因为它会说,“好吧,策略告诉它采取的行动是再向下走一次。”所以当你从 1 2 走到 2 2 时,你会第一次观察到什么?一个大的正奖励 +10。这就是你在这里看到的,+10。然后其余的看起来差不多。你会注意到,在状态 1, 2 和向下动作的值被更新为五。五,因为它被折扣了,然后这会继续运行,之后它会更新表格的很多部分。所以这就是 Q 学习的这个迭代版本的工作方式。重复它,直到出现某种收敛,或者你用完了要运行的迭代次数。这是一个动画,有点展示了你如何初始化,如果你试图弄清楚。所以这有点展示了,它立即就暴露了,你看左上角是你开始的地方,机器人或者无论那个代理是什么,它并不知道那里藏着一个大奖励,在这个黄色的东西里,我们已经将所有策略初始化为随机的,或者这个策略只是告诉你一直向上走,这就是这个策略所说的,无论你在哪个方格,都试着向上走,好吧,我们一遍又一遍地尝试玩这个游戏,而这个展示的是,经过几次迭代,它似乎弄清楚了,好吧,在某些情况下,它注意到它开始弄清楚有一个奖励,因为它已经看到了一些迭代。但请注意,右上角的所有其他地方仍然是暗的,因为它们认为,你知道,这要么是负奖励,因为每次行动都有负奖励。它们还没有真正看到所有这些东西。所以,它后来才绽放。注意,一旦它发现了黄色,离它最近的箭头就开始指向它,因为那些邻居显然是第一个意识到你应该去那里的。然后更多迭代之后,它开始绽放。什么是绽放?绽放本质上是其他人意识到,哦,如果我真的朝着这个方向行动,我也能获得一些奖励。它是折扣的。所以所有人的奖励都不会相同。然后更远,这就是动画如何展示更新,最终箭头都开始指向这个大奖励所在的位置。有一个问题 >> 为什么地图上较冷区域的向量一直在大量移动,这是不确定的,还是 >> 我认为这是因为它们只是随机的,这只是显示了最初它是一些策略,对,之后这个显示的是它认为的最优策略,Q 函数,对,这意味着如果,如果所有地方的奖励都是零或相等的奖励,它就是随意打破平局,所以 >> 这会继续随机地认为哦,这是对的 >> 那是件好事,因为如果两个动作有相同的预期奖励,你必须选择一个,对吗?你可以随机选择它们,或者你可以一直说一致地选择,你可以有一个排序,对吗?嗯,这就是你在那些黑暗区域观察到的。但希望这能让你明白,这是一个迭代算法。它与环境互动,它弄清楚该怎么做。嗯,然后这些信息和知识也开始慢慢地渗透回来。嗯,所以这是一个关于策略与离策略的讨论。所以在这个火山的例子中,如果你不知道动力学,对,你被给了 epsilon 等于 1。我们稍后会展示。现在这只是一个随机策略。它随机选择动作。好的,如果你随机选择动作,你对那个策略在所有这些状态下的值有什么直观的预期?它在那里向你展示了。如果你没有方法来指导你的疯狂,即使你发现了整个世界,但你说不要最优地行动,只是继续随机选择动作。对,很多这些状态的值,除非你正好在 20 和 2 附近,否则基本上都是负的,因为你是在随机选择动作,对吗?所以,那个策略的值会相当糟糕。但是遵循这个随机策略,可能不成立的是,你发现了世界。Q 学习将帮助你发现最优策略,而这实际上可能看起来好得多,在这种情况下,它们都是 20,因为你有大量的迭代要经历,最终你会得到 20 之类的东西。它们有点指向,或者好吧,我猜它们并没有真正指向,它们也会指向正确的方向。嗯,有趣的是,在某个特定数量之后,如果你只取平均终生效用,那是什么?那基本上是反复玩游戏并计算奖励。嗯,它应该让你觉得那在这里不会很好地奏效,因为那是 -6.7。为什么?因为你玩的是一个随机策略,而那个随机策略很可能经常会得到这些 minus50 的奖励。对,游戏就在那里结束,或者在 20 和 2 处结束,而这些 minus50 比 plus 20 大得多,而且有两个 minus50。所以这希望你能预期平均奖励在许多许多迭代中是负的。它相当负,但你已经惊人地发现了最优值。所以现在如果你说不要随机表现,去执行策略,你就能获得好得多的奖励。所以,作为我们今天讨论内容的总结,你有了基于模型的蒙特卡洛,我们在那里做什么?我们试图通过与环境互动来估计转移矩阵和奖励,然后一旦你这样做了,你就可以运行你的值迭代策略迭代,因为你已经将问题重塑为 MDP 设置,并且你基于所有你收到的奖励序列,无模型蒙特卡洛很好,它试图在策略 pi 下直接进行 Q 估计,但它依赖于每个回合,整个事情的效用,然后我们转向这些 TD 学习方法,SARSA 是第一个,它再次更新 QI,但它仍然是一个策略内算法,它观察 R 并使用 Q 的先前值,然后它基本上学会了针对它们,并且它在 R 的每次更新时都会这样做,它可以去更新任何相关的 Q 学习,然后允许你通过策略学习最优策略,即使它遵循某个策略,它最终也会学习奖励 R,但下一个动作它假设你采取的行动是基于在该状态下当前最佳的行动是什么,这就是 SARSA 和 Q 学习之间的主要区别,嗯,这最终将收敛到最优值和最优策略,我们得到了 epsilon 贪婪,今天我们已经暗示过,这不应该让你感到惊讶,epsilon 贪婪只是一个非常常用的短语,用来谈论如何权衡探索与利用。这意味着如果你必须发现环境,你可能无法通过固定的策略做到这一点,除非该策略本身是随机的,或者有点随机,或者完全随机。所以,嗯,我们想探索,在我们尝试获得奖励之前,或者我们想同时平衡两者。所以其中一个实际上是在这个幻灯片上说的,如果你,如果你开始游戏,这是那个火山游戏,请记住,我们知道 minus50 minus50,我在这里将奖励设置为 100,我猜是 2,在我们与环境进行任何互动之前,所有这些其他状态及其值,也许在第一次或第二次迭代之后,基本上都是零,如果你要利用,也就是选择当前最佳的行动,你希望你同意我,你将无法做任何有用的事情。很多这些东西只是零。它们还没有真正发现正奖励,甚至有些还没有发现负奖励。好的。但是,然后如果你去玩随机策略,嗯,你可以,你可以随机选择一系列动作,那也不是最好的做法,因为你会不断地发疯。你的平均效用,正如我们之前讨论过的,仍然非常负。所以这两种都不是应该采取的方式,对吗?嗯,所以你想在它们之间进行权衡。以某种方式,你想使用探索策略进行探索,学习最佳策略是什么,然后一旦你对最佳策略有所了解,就去按照最佳策略行动。是的。>> 所以我们权衡这些,因为最初你想探索,我们随机地做,但最终想连续地随机探索,直到永远。理想情况下,你想做的是,理想情况下有人会告诉我,这是你的探索预算,足够你探索世界一次,一旦你探索了它,现在就去像近视一样行动,对,并且最优地行动,但通常生活并不那么简单,你想同时做这两件事,所以这就是 epsilon 贪婪,非常非常简单,它说当你开始时,并且以一定的 epsilon 概率,你想每次随机行动,你必须采取行动,用 epsilon 抛硬币,你随机选择一个,而 1 减 epsilon 的概率,所以反过来,你采取近视行动或当前最佳最优行动。一开始,大部分探索将真正引导你学到更多。嗯,但后来希望实际的利用将让你进入一个更好的地方。如果你采用我们之前看到的同一个例子,并通过这个 epsilon 贪婪策略来运行它,所以不是完全随机的。它实际上比你想象的要随机得少,这个 epsilon 通常是,你知道,小,不是微小,但也不是非常大。你最终会得到一个相当好的最优策略的估计,你知道 Q 学习也可以帮助你学习。嗯,而 SARSA 也可以帮助你学习,因为那是你遵循的策略。你不是遵循随机策略。你遵循的是 epsilon 贪婪策略。喜欢它们与效用,就像你基本上,引用,训练,为什么我们关心平均效用?它只是在告诉你,你为什么关心平均效用,这是现在在谈论如果你遵循这个策略,你会平均观察到什么,对吗?如果这是负的,那告诉你的是,嗯,这是一个,这不是一个,即使这个策略可能帮助你学习最优策略,这个策略本身,如果你在玩游戏,可能不是玩游戏的方式,但这并不坏,因为即使你在探索,你也在利用,而且你可能平均做得相当不错。嗯,是的。>> 这是一个超参数吗?我们还 >> 超参数?是的。但你不是通过交叉验证或其他方式来学习它。通常是固定的。>> 缓慢调整它。>> 你可以缓慢地调整它。有很多方法,有很多想法,你可以做启发式。嗯,也许你对一定数量的迭代和预算感到满意,你就像,你知道,关掉它,让它比以前更具利用性。好的。最后一个想法是函数逼近。所以你今天学到的一些东西,我们不会在这里详细介绍,但这应该是让你烦恼的事情,那就是所有这些听起来都很棒,但很多听起来都很费劲。你必须大量探索环境。你必须大量地与事物互动。当然,人们已经考虑过其他方法来逼近你所处的空间。直觉是,在很多情况下,即使我们将每个状态、动作分开处理,相邻的状态和相邻的状态动作对可能实际上有一些更多的结构。对,所以这实际上试图,我扩展了这个网格,并说想象一下同样的事情要大得多。现在,我想建立一个高层次的直觉是,minus50 结束了你的游戏,并且以一种非常高惩罚的方式结束了你的游戏。所以,这些 minus50 的共同点是什么?它们都在第 1、2、3、4、5 列的第 1 到第 5 列,对,所以如果有人能告诉你,嘿,我能不能以某种方式告诉我的代理或我的机器人,当你接近 5 时要小心或避开它,那将是一种思考共同点的方式,它在第 5 列,第 6 列很好,如果你想疯狂地探索和四处走动,底部的第 1 到第 6 行是个好地方,因为你基本上没有什么损失。你也没有赢得很多,但那是一个安全的游戏空间,对,所以当我用这些词向你描述时,我在描述什么?它约束 >> 在我们开始课程时,可能在第一堂课,当我们开始谈论线性回归时,我们谈论了特征,然后我们开始谈论特征,我向你描述的是这个空间的特征,对,所以我可以手动编码很多这些特征,并说,你知道,如果我能想出一个特征,我会想出来,并说,你知道,如果你在第 5 行,也许我想编码这个事实,这可能是一件好事。我想学习,但我想学的是,你知道,我还没有说过我们不想回到我们手动编码很多东西的世界,对,所以我们想能够学习这些东西,也许是自动的,也许有人想手动提供一些结构,因为结构会让你即使没有机会探索某件事,如果你探索了它旁边的某件事,你也许可以对这个空间中的情况做出很好的猜测,对吗?在现实世界中,状态动作空间是狂野的,所以你可能想说,也许我想对那些我没见过但你没有施加任何结构的状态做出猜测,那么你怎么能预测那些你没见过的事情,如果你完全独立地对待所有事情,对吗?所以这是某种方式,这基本上就是看看我们想使用相同的更新方式,这并不是什么新鲜事,但这所做的是,它有点死记硬背,它是 s, a 的函数,你看到 s, a,你看到 s, a,然后你谈论下一个状态 s'。所以如果你没有观察到某件事,你基本上永远不会在这里做任何更新,对吗?这是一个常见的主题和问题。为了做到这一点,你必须大量探索,以及所有这些。所以,如果我们真的能定义一些特征,它可以是状态动作对的函数呢?所以试图施加更多结构,然后学习权重 W。所以这就是深度学习架构的由来,这是许多这些事情的更现代的方法。嗯,最终,如果你能估计那些,你就不必单独学习每一个,对,你实际上可以学习所有这些之间的结构。我们不会在这里深入探讨。嗯,主要是关于搜索空间非常大的想法是一个非常具有挑战性的问题。人们如何看待这个问题,现在这将带你去思考如何表达你在本课程之外的时间,那就是如何通过施加更多结构来理解这个可能非常大的状态动作空间,并以我们在这门课程中学习其他东西的方式来学习,例如在深度神经网络设置中,深度学习设置,或者可能在一个更简单的回归设置中等等。如果你学到了一些关于某些状态和动作的东西,也许你可以从中推断出来,并根据特征属性说一些关于与它们相关的事情。对,这是一个非常高层次的想法。我无意深入研究,但有很多参考资料。嗯,我认为这将是,你已经看到了这个幻灯片。我们从 MDPs,马尔可夫决策过程开始,谈到了它们是马尔可夫的。这是一个很好的建模技巧,知道我接下来做什么只取决于我现在在哪里,以及我如何行动,我如何到达这里并不重要。我们谈到了策略,这基本上是给定每个状态的一种行动方式,你想能够说关于每个状态。然后我们谈到了评估策略,这些策略的价值,当整个世界都知道奖励和转移时。我们谈到了值迭代,它实际上巧妙地允许我们计算最优策略的价值,即使你没有真正遵循最优策略,但在一个一切都已知的世界里。然后我们把它拿走,说让我们实际上进入在线设置,也就是强化学习设置,并学习在现实世界中采取行动,在那里你必须弄清楚奖励是什么。我们弄清楚了转移概率是什么,然后我们讨论了许多不同的方法。我们说,别管估计模型了。也许我们可以直接通过蒙特卡洛和进行大量长样本,或者通过引导,也就是基本上只取一个样本,然后取另一个样本,并基本上计算那些,你知道,通过 TD 学习方法,那是,然后最终使用该方法得到了 Q 学习,这是非凡的,因为它允许我们计算每个状态动作对的最优值,遵循某个最优策略,对,而这基本上就是,我认为这是最后一个。所以这让我们结束了考试所需的所有材料。嗯,在接下来的三次,我会在,希望你们中的许多人也会在这里,听一些超出本课程的内容。也非常有趣。但现在,嗯,你知道,下次见。谢谢。[掌声]