从系列:强化学习
布莱恩•道格拉斯
在此视频中,我们通过探索工作流程对强化学习的基本了解。我们涵盖了环境中的环境以及在模拟环境中培训的一些好处。我们涵盖了我们最终希望我们的代理商做的事情以及如何制作奖励功能如何激励代理人做到这一点。最后,我们介绍了选择一种方法来表示策略 - 我们希望如何构成构成代理的决策部分的参数和逻辑。
In the last video, we covered a high-level introduction to reinforcement learning and I ended by telling you we can’t just jump into RL by unleashing a learning algorithm on a problem while being completely ignorant of what it means to set up the problem correctly. In order to get started, you should have an understanding of the RL workflow and how each part of the process contributes to solving the problem, and what some of the decisions are that you’ll have to make along the way. So in this video, we’re going to build on our basic understanding of reinforcement learning and explore what it means to set up the problem. I’m Brian, and welcome to a MATLAB Tech Talk.
我知道我说过,理解你想要控制的系统是第一步因为如果传统控制方法更好,你就不想选择强化学习。然而,我认为,如果您对RL工作流有很好的理解,就会更容易做出选择。因此,现在,假设我们已经决定要使用强化学习,一旦我们建立了良好的基础,我们会在以后的视频中讲到什么时候不使用它。
好的,让我们进入RL工作流。我们需要一个我们的代理可以学习的环境,因此,我们需要选择环境中应该存在什么,以及它是模拟的还是真实的物理设置。然后我们需要思考我们最终想让代理人做什么,并创造一个奖励机制来激励代理人去做。我们需要选择一种表示策略的方法——我们希望如何构造组成代理决策部分的参数和逻辑。一旦我们建立了这个,我们选择一个训练算法并开始寻找最优策略。最后,我们需要利用该策略,将其部署到字段中的代理上并验证结果。为了更好地理解这个工作流,让我们在两个例子的背景下考虑每一个步骤:平衡一个倒立摆和让机器人行走。让我们开始吧。
环境是存在于代理之外的一切。实际上,这是代理发送动作的地方,也是产生奖励和观察的地方。
我认为这个概念一开始有点混乱,尤其是来自控制背景,因为我们倾向于将环境视为控制器和工厂之外的一切;比如道路缺陷、阵风和其他影响您试图控制的系统的干扰环境是控制器之外的一切。因此,这也包括植物动力学。对于步行机器人来说,机器人的大部分是环境的一部分。代理只是通过学习生成动作和更新策略的一部分软件。可以说,它是机器人的大脑。
这种区别之所以重要,是因为在强化学习中,代理根本不需要了解任何有关环境的信息。这被称为无模型RL,它的功能非常强大,因为您基本上可以将装备了RL的代理塞进任何系统中,并且假设您已授予策略访问观察结果的权限,则可以激活ns和足够的内部状态,代理将学会如何自己收集最多的奖励。这意味着代理最初不需要了解我们的步行机器人的任何信息。它仍然可以在不知道关节如何移动、执行器有多强或附件的长度的情况下找到如何收集奖励的方法。
但作为工程师,我们通常会对环境知识了解一些事情,为什么我们为什么讨论了我们对物理知识的所有知识,并没有帮助代理人?这似乎很疯狂!嗯,这就是基于模型的RL可以提供帮助的地方。
如果没有任何对环境的理解,代理需要探索国家空间的所有区域以填充其价值函数,这意味着它会花一些时间在学习过程中探索低奖励区域。然而,作为设计师,我们经常知道状态空间的某些部分不值得探索,因此通过提供环境或部分环境的模型,我们提供了这种知识。例如,拍摄试图确定到目标的最快路线的代理。这一点应该是右还是留下?没有模型,代理商必须探索整个地图以了解最佳行动是什么。通过模型,代理人可以探索正确,在没有人身体上采取这种行动。然后它可以弄清楚,在死胡同的正确结果,然后我们的代理将离开。通过这种方式,模型可以通过避免所知的区域来补充学习过程,并探索和学习其余部分。
基于模型的RL非常强大,但无模型RL现在如此流行的原因是,人们希望使用它来解决开发模型困难的问题,例如通过像素观察控制汽车或机器人。此外,由于无模型RL是更普遍的情况,我们将在本系列的其余部分重点讨论它是的。
好的,我们知道代理通过与环境进行交互学习,因此我们有一种方法可以让代理商实际与之交互。这可能是物理环境或模拟。例如,对于倒立的摆锤,我们可能会让代理通过使用物理摆设置来学习如何平衡。这可能是一个很好的解决方案,因为硬件可能难以损坏自己或他人。然而,随着行走机器人,这可能不是如此好主意。正如您可以想象的那样,如果代理人像黑匣子一样对待机器人和世界,那么它一无所知,那么它将在甚至学习如何移动它的腿之前做很多堕落和鞭打,更不用说如何走路。这不仅可以损害硬件,而且必须在每次选择机器人时会非常耗时。不理想。
因此,有吸引力的替代方案是在环境的高保真模型中训练您的代理,并模拟学习体验。这样做有很多好处。
第一个来自样本低效的想法。学习是一个过程,需要大量的样本:大量的试验、错误和修正,通常是数百万或数千万。有了模拟,你就有能力以比实时更快的速度运行学习过程,你也可以启动大量的模拟并并行运行它们。
使用环境模型可以做的另一件有益的事情是模拟在现实世界中难以测试的条件。例如,使用步行机器人,你可以模拟在冰面等低摩擦表面行走,这将帮助机器人在所有表面保持直立。
需要仿真的好处在于,对于控制问题,我们通常已经有了一个很好的系统和环境模型,因为我们通常需要传统控制设计中的模型。如果您已经有了在MATLAB或Simulink中构建的模型,您可以用RL代理替换现有控制器,添加奖励函数适应环境,并开始学习过程。金宝app
这里的困难之一是要计算出要对多少环境进行建模,包括哪些内容,以及要忽略哪些内容。然而,这与为控制器设计建模设备时遇到的问题相同,因此您可以使用对系统的相同直觉来构建RL环境模型。
一种方法是在一个简单的模型上开始培训,找到一个右边参数的正确组合,让训练成功,然后稍后向模型添加更多复杂性。超参数是我们可以打开训练算法的旋钮,将像学习率和采样时间一样设置的训练算法,我将在未来的视频中更详细地介绍这一点。
好的,设置好环境后,下一步是考虑您希望您的代理做什么,以及如何奖励它做您想做的事情。这类似于LQR中的成本函数,在该函数中,我们考虑性能与工作量。
然而,与成本函数为二次型的LQR不同,在RL中,创造奖励函数没有任何限制。我们可以设置一些稀疏的奖励,或者在每个时间步骤中都有奖励,或者在一段时间后才会出现奖励。它们可以从非线性函数或使用数千个参数计算。真的,这完全取决于如何有效地训练你的代理人。
想让倒立摆直立起来吗?然后,当垂直角度变小时,可能会给你的代理更多奖励。想考虑控制器的努力吗?然后随着执行器使用量的增加,减去奖励。想鼓励机器人在地板上行走吗?然后,当代理达到某个距离较远的状态时,给代理奖励走开。
话虽如此,制作一个奖励函数是很容易的。它几乎可以是你能想到的任何函数。制作一个奖励函数好另一方面,奖励功能真的很难实现。不幸的是,没有一个简单的方法来设计你的奖励,以保证你的代理将收敛于你真正想要的解决方案。我认为这可以归结为两个主要原因。
第一,通常你想要激励的目标是在一系列的行动之后;这就是稀疏奖励系统。因此,你的代理将在很长一段时间内跌跌撞撞,在这个过程中得不到任何奖励。这就是行走机器人的情况,只有在机器人成功行走10米后才给予奖励。你的代理偶然遇到产生稀疏奖励的行动序列的可能性非常小。想象一下,要产生所有正确的运动命令来保持机器人直立行走,而不是在地上乱蹦乱跳,需要多么幸运的运气啊!
这是可能的,但依靠随机探索是非常缓慢的,不现实的。
这种稀疏奖励问题可以通过塑造奖励来改善——提供较小的中间奖励,引导agent沿着正确的路径前进。但奖励塑造本身也存在一系列问题,这也是创造奖励功能困难的第二个原因。如果你给优化算法一个捷径,它就会接受!捷径隐藏在奖励功能中,尤其是当你开始塑造它们时。这将导致你的代理收敛于给定奖励函数的最优解,但不是理想解。
一个简单的例子是,如果机器人的身体从当前位置移动了1米,就给予中间奖励。最佳解决方案可能不是走1米,而是不优雅地朝奖励掉下去。对于学习算法来说,行走和摔倒都提供了相同的奖励,但显然,对于设计师来说,一种结果优于另一种结果。
我不想让制作奖励函数听起来很容易,因为在强化学习中,正确使用奖励函数可能是更困难的任务之一。然而,希望通过这一概述,您至少能够更好地理解一些需要注意的事情,这可能会使制作奖励功能的过程稍微不那么痛苦。
好了,现在我们有了提供奖励的环境,我们准备开始研究代理本身。代理由策略和学习算法组成,这两件事紧密地交织在一起。许多学习算法需要一个特定的策略结构,选择算法取决于环境的性质。我们将在下个视频中讨论这个,但在结束这个视频之前,我想介绍一下这个话题让我们思考一下策略中的参数和逻辑是如何表示的。
请记住,策略是一个函数,它接受状态观察并输出操作,所以实际上,任何具有输入和输出关系的函数都可以工作。按照这种思路,我们可以使用一个简单的表来表示策略。
桌子就是你想要的。它们是一个数字数组,您在其中使用输入作为查找地址并输出相应的值。例如,q函数是一个将状态和操作映射到值的表。所以给定一个状态S,策略就是从这个状态中查找每个可能行动的值并选择值最大的行动。训练一个有q函数的agent将包括随着时间的推移开发所有的动作和每个状态的值。
当动作值对的数量变得非常大或无限时,这种类型的表示就会崩溃。这就是所谓的维度诅咒。想象我们的倒立摆。摆的状态可以是从-到的任意角度,你可以采取的动作可以是从负极限到正极限的任意电机扭矩。试图在一个表中捕获所有这些是不可行的。现在,我们可以用一个连续函数来表示状态-作用空间的连续性质。但是在建立这个函数的时候我们可以学到正确的参数需要我们提前知道函数的结构,这对于高自由度系统或者非线性系统来说是很困难的。
因此,尝试用通用函数逼近器表示策略是有意义的。它可以处理连续的状态-动作空间,而无需我们提前设置结构。我们通过深层神经网络得到了这一点。
这就是我现在要讲的。我们将在下个视频中继续讨论。如果你不想错过未来的Tech Talk视频,别忘了订阅这个频道。此外,如果你想看看我的频道,控制系统讲座,我也涵盖了更多的控制主题。感谢收看,我们下期节目再见。
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。