强化学习(2):理解环境和奖励
从系列中:强化学习
布莱恩•道格拉斯
在本视频中,我们通过探索工作流程来建立对强化学习的基本理解。我们将介绍什么是环境,以及在模拟环境中进行训练的一些好处。我们讨论了我们最终想要我们的代理做什么,以及如何创建一个奖励函数来激励代理这样做。最后,我们介绍了选择一种表示策略的方法的必要性——我们希望如何构造构成代理决策部分的参数和逻辑。
在上个视频中,我们介绍了强化学习的高级介绍,最后我告诉你,我们不能在完全不知道正确设置问题的意义的情况下,通过在问题上释放学习算法来跳入RL。为了开始,您应该了解RL工作流,以及该流程的每个部分如何有助于解决问题,以及在此过程中您必须做出哪些决定。所以在这个视频中,我们将建立在我们对强化学习的基本理解之上,并探索建立问题的意义。我是Brian,欢迎来到MATLAB技术讲座。
现在我知道我说过理解你想要控制的系统是第一步,因为如果传统的控制方法更好,你就不想选择强化学习。然而,我认为如果你很好地理解了RL工作流,你就更容易做出这样的选择。因此,现在,假设我们已经决定要使用强化学习,一旦我们建立了这个良好的基础,我们将在未来的视频中讨论什么时候不使用它。
好的,让我们进入RL工作流。我们需要一个我们的智能体可以学习的环境,因此,我们需要选择环境中应该存在什么,以及它是一个模拟还是一个真实的物理设置。然后我们需要考虑我们最终希望我们的智能体做什么,并设计一个奖励函数来激励智能体这样做。我们需要选择一种方法来表示策略——如何构造构成代理决策部分的参数和逻辑。一旦我们有了这个设置,我们选择一个训练算法,并开始寻找最优策略。最后,我们需要通过将策略部署到现场的代理并验证结果来利用策略。为了更好地理解这个工作流,让我们在两个例子的背景下思考这些步骤:平衡倒立摆和让机器人行走。让我们开始吧。
环境是存在于代理之外的一切。实际上,这是代理发送行动的地方,也是产生奖励和观察的地方。
我认为这个概念一开始有点令人困惑,特别是来自控制背景,因为我们倾向于认为环境是控制器和植物之外的一切;道路不完善、阵风和其他干扰会影响您试图控制的系统。但在强化学习中,环境是控制器之外的一切。这也包括植物动力学。以行走机器人为例,机器人的大部分是环境的一部分。代理只是生成动作并通过学习更新策略的软件。可以说,这是机器人的大脑。
这种区别之所以重要,是因为通过强化学习,智能体根本不需要了解环境的任何信息。这被称为无模型RL,它很强大,因为你基本上可以把一个配备了RL的代理放入任何系统,假设你已经给了策略访问观察、操作和足够的内部状态,代理将学习如何自己收集最多的奖励。这意味着代理最初不需要知道关于我们的行走机器人的任何信息。它仍然会在不知道关节如何移动、驱动器有多强或附属装置的长度的情况下找出如何收集奖励。
但作为工程师,我们通常知道一些关于环境的事情,那么为什么我们要抛弃我们所有的物理知识,而完全不帮助代理呢?这看起来很疯狂!好吧,这就是基于模型的RL可以帮助的地方。
在不了解环境的情况下,智能体需要探索状态空间的所有区域来填充它的价值函数,这意味着它将在学习过程中花费一些时间探索低回报的区域。然而,作为设计人员,我们通常知道状态空间的一些不值得探索的部分,因此通过提供环境或部分环境的模型,我们为智能体提供了这些知识。例如,以试图确定到达目的地的最快路线的代理为例。在这一点上它是向右还是向左?如果没有模型,智能体将不得不探索整个地图,以知道最佳行动是什么。有了模型,智能体可以在精神上探索向右,而不需要在身体上采取行动。然后它会发现向右走会导致死胡同然后我们的智能体会向左走。通过这种方式,模型可以避免已知的坏区域,并探索和学习其余的部分,从而补充学习过程。
基于模型的RL非常强大,但无模型RL现在如此流行的原因是人们希望用它来解决开发模型很困难的问题,比如通过像素观察来控制汽车或机器人。而且,由于无模型RL是更普遍的情况,我们将在本系列的其余部分集中讨论它。
好的,我们知道智能体通过与环境互动来学习,所以我们有一种方法让智能体与环境互动是有道理的。这可能是一个物理环境或模拟。例如,对于倒立摆,我们可以让智能体通过运行物理摆装置来学习如何平衡。这可能是一个很好的解决方案,因为硬件可能很难损坏自己或其他人。然而,对于行走机器人来说,这可能不是一个好主意。正如你所想象的,如果智能体将机器人和世界视为一个它一无所知的黑盒子,那么它将在学会如何移动腿之前进行大量的摔倒和挥舞,更不用说如何走路了。这不仅会损坏硬件,而且每次都要把机器人捡起来会非常耗时。不是最理想的。
因此,一个有吸引力的替代方案是在环境的高保真模型中训练您的代理,并模拟学习体验。这样做有很多好处。
第一个来自样本无效率的观点。学习是一个过程,需要大量的样本:大量的试验、错误和修正,通常是数百万或数千万。所以有了模拟,你就有能力以比实时更快的速度运行学习过程,你也可以启动大量的模拟,并同时运行它们。
使用环境模型可以做的另一件有益的事情是模拟在现实世界中难以测试的条件。例如,对于行走机器人,你可以模拟在冰这样的低摩擦表面上行走,这将帮助机器人在所有表面上保持直立。
需要仿真的好处是,对于控制问题,我们通常已经有了系统和环境的良好模型,因为我们通常需要从传统控制设计中得到它。在这里,如果你已经在MATLAB或Simulink中构建了一个模型,你可以用RL代理替换现有的控制器,向环境添加奖励函数,金宝app并开始学习过程。
这里的困难之一是弄清楚要模拟多少环境——包括什么,不包括什么。然而,这也是你在为控制器设计建模时遇到的相同问题,所以你可以使用对你的系统的相同直觉来构建RL环境模型。
一种方法是在一个简单的模型上开始训练,找到能让训练成功的超参数的正确组合,然后在以后给模型增加更多的复杂性。超参数是我们可以开启训练算法的按钮,它可以设置学习率和采样时间等内容,我将在以后的视频中更详细地介绍这一点。
好了,环境设置好了,下一步就是考虑你想让你的代理做什么,以及你将如何奖励它做你想要的事情。这类似于LQR中的成本函数,其中我们考虑的是绩效与努力。
然而,与代价函数是二次的LQR不同,在RL中,创建奖励函数实际上没有限制。我们可以设置稀疏奖励,或者每个时间步骤都有奖励,或者只有在经过很长一段时间后才出现的奖励。它们可以从一个非线性函数计算出来,也可以用数千个参数计算出来。真的,这完全取决于如何有效地训练你的代理。
想让倒立的钟摆直立吗?然后可能会给你的代理人更多的奖励,因为垂直角度变得越来越小。想要考虑控制器的工作?然后随着执行器使用的增加而减去奖励。想要鼓励机器人在地板上行走?然后,当智能体达到某个遥远的状态时,给它一个奖励。
话虽如此,创造奖励功能并不难。它可以是任何你能想到的函数。做一个好另一方面,奖励功能却非常非常难。不幸的是,没有一种直接的方法来设计你的奖励,以确保你的代理会趋近于你真正想要的解决方案。我认为可以归结为两个主要原因。
第一,你想要激励的目标通常是在一系列的行动之后;这就是稀疏奖励系统。因此,你的代理会在很长一段时间里跌跌撞撞,在这个过程中得不到任何奖励。对于行走机器人来说,只有在机器人成功行走10米后才给予奖励。你的智能体偶然发现产生稀疏奖励的动作序列的可能性非常小。想象一下,生成所有正确的电机命令来保持机器人直立行走,而不是在地上扑腾!
这是可能的,但依赖于随机的探索是非常缓慢的,这是不切实际的。
这种稀疏奖励问题可以通过塑造奖励来改善——提供较小的中间奖励来引导代理沿着正确的路径前进。但是奖励塑造也有其自身的问题,这也是创造奖励函数如此困难的第二个原因。如果你给一个优化算法一个捷径,它会接受它!捷径隐藏在奖励函数中,当你开始塑造它们时更是如此。这将导致你的智能体收敛于给定奖励函数的最佳解决方案,但不是理想的解决方案。
一个简单的例子是,如果机器人的身体从当前位置移动了1米,就给它一个中间奖励。最优的解决方案可能不是走那1米,而是不优雅地朝奖励掉下去。对于学习算法来说,行走和跌倒都提供了相同的奖励,但显然,对于设计师来说,其中一个结果比另一个更受欢迎。
我不想让制作奖励函数听起来很容易,因为正确地制作它可能是强化学习中更困难的任务之一。然而,希望有了这些概览,你至少能够更好地理解一些需要注意的事情,这可能会让你在制作奖励函数时少一些痛苦。
好了,现在我们有了提供奖励的环境,我们可以开始研究代理本身了。代理由策略和学习算法组成,这两者紧密地交织在一起。许多学习算法需要特定的策略结构,算法的选择取决于环境的性质。我们将在下个视频中讨论这个问题,但是在我结束这个视频之前,我想介绍一下这个主题,并让我们思考策略中的参数和逻辑是如何表示的。
请记住,策略是一个接受状态观察并输出操作的函数,因此实际上,任何具有这种输入和输出关系的函数都可以工作。按照这种思路,我们可以使用一个简单的表来表示策略。
表格正是您所期望的。它们是一个数字数组,您使用输入作为查找地址并输出相应的值。例如,Q-function是一个将状态和操作映射到值的表。给定一个状态S,策略就是在这个状态下查找每个可能的动作的值然后选择值最高的动作。训练一个有q函数的智能体包括随着时间的推移发展每个状态的所有动作和它们的值。
当动作值对的数量变得非常大或无穷大时,这种类型的表示就会崩溃。这就是所谓的维度诅咒。想象我们的倒立钟摆。摆的状态可以是-到的任意角度,你可以采取的动作可以是电机扭矩从负极限到正极限的任意力矩。试图在一个表中捕获所有这些是不可行的。现在,我们可以用一个连续函数来表示状态-动作空间的连续性质。但是建立这个函数,我们可以学习正确的参数,需要我们提前知道函数的结构,这对于高自由度系统或非线性系统可能很困难。
因此,尝试使用通用函数近似器来表示策略是有意义的。它可以处理连续的状态动作空间而不需要我们提前设置结构。我们通过深度神经网络得到了这一点。
这就是我现在要讲到的地方。我们将在下个视频中继续讨论。如果你不想错过未来的Tech Talk视频,不要忘记订阅这个频道。此外,如果你想看看我的频道,控制系统讲座,我在那里介绍了更多的控制主题。感谢收看,我们下期见。
相关产品下载188bet金宝搏
了解更多
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。