物理动力系统的强化学习:一种替代方法

news2024/12/22 12:20:47

物理动力系统的强化学习:一种替代方法

 

一、物理和非线性动力学

        控制理论通过经典的、鲁棒的和最优的方法,使现代文明成为可能。炼油、电信、现代制造业等都依赖于它们。控制理论建立在物理方程提供的洞察力之上,例如从牛顿定律和麦克斯韦方程派生出来。这些方程描述了物理系统上的动力学,即不同力的相互作用。通过它们,我们了解了方程如何在状态之间移动,其中状态是“充分描述系统的所有信息的集合”[1],通常以流体动力学中流体粒子的压力或速度等变量表示,或电动力学中的电荷和电流状态。通过推导系统的方程,我们可以预测状态如何随时间和空间变化,并用微分方程来表达这种演变。有了这种理解,我们就可以以特殊施加的力的形式应用控制,以将这些系统保持在所需的状态或输出。通常,该力是根据系统的输出计算得出的。考虑车辆巡航控制。输入是期望的速度,输出是实际速度。系统就是引擎。状态估计器观察速度并确定输出速度和输入速度之间的差异,以及如何应用控制(例如调整燃油流量)以减少误差。

        然而,尽管取得了所有成就,但控制理论遇到了很大的局限性。大多数控制理论都是围绕线性系统构建的,或者说,输入的比例变化导致输出的比例变化的系统。虽然这些系统可能相当复杂,但我们对这些系统有广泛的了解,使我们能够实际控制从深海潜水器和采矿设备到航天器的一切。

        然而,正如斯坦尼斯拉夫·乌拉姆(Stanislaw Ulam)所说,“使用像非线性科学这样的术语,就像将大部分动物学称为对非大象动物的研究。到目前为止,我们在控制复杂物理系统方面的进展主要是通过找到将它们限制为线性行为的方法来实现的。这可能会以多种方式降低我们的效率:

        ·将复杂系统分解为单独控制的组件,从而针对子系统而不是整个系统进行优化

        ·以更简单但效率较低的操作模式操作系统,或者不利用复杂的物理特性,例如主动流量控制来减少飞机阻力

        ·严格的运行条件限制,如果超过该限制,可能会导致不可预测或灾难性的故障

        先进的制造、改进的空气动力学和复杂的电信都将受益于更好的非线性系统控制方法。

        非线性动力系统的基本特征是它们对输入的复杂响应。即使环境或状态发生微小变化,非线性系统也会发生巨大变化。考虑控制流体流动的纳维-斯托克斯方程:同一组方程将平静、缓慢流动的流描述为汹涌的洪流,并且汹涌洪流的所有涡流和特征都包含在方程动力学中。

        非线性系统存在困难:与线性系统不同,我们通常对系统从一种状态过渡到另一种状态时的行为方式没有一个易于预测的概念。我们能做的最好的方法是通过一般分析或广泛的模拟。因此,对于非线性系统,我们面临着两个问题:系统识别——即理解它在给定状态下的行为方式,以及系统控制——它如何在短期和长期内响应给定的输入而变化,以及进行什么输入以获得期望的结果。

二、物理强化学习

        虽然非线性分析和控制继续取得进展,但我们使用传统的、基于方程的方法利用这些系统的能力仍然有限。然而,随着计算能力和传感器技术变得越来越容易获得,基于数据的方法提供了一种不同的方法。

        数据可用性的大幅增加催生了机器学习 (ML) 方法,而强化学习 (RL) 提供了一种新方法,可以更有效地应对控制非线性动态系统的挑战。RL已经在从自动驾驶汽车到策略和计算机游戏的环境中取得了成功,它是一种ML框架,它训练算法或代理,“学习如何在不确定性下做出决策,通过反复试验来最大化长期利益”[1]。换言之,强化学习算法解决了系统识别和控制优化的问题,它不是通过操纵和分析控制方程来实现的,而是通过对环境进行采样来预测哪些输入动作会导致预期的结果。RL 算法或代理根据系统状态应用操作策略,并在分析系统上的更多信息时优化此策略。

        许多 RL 算法都基于使用神经网络来开发将状态映射到最优行为的函数。RL 问题可以定义为状态-动作-奖励元组。对于给定的状态,某个动作会导致给定的奖励。神经网络充当通用函数逼近器,可以进行调整以准确近似整个系统中的状态-动作-奖励元组函数。为此,它必须通过探索系统或环境来获取新知识,然后通过利用获得的额外数据来完善其策略。RL 算法的区别在于它们如何应用数学来探索、利用两者之间的波段平衡。

然而,神经网络带来了一些挑战:

        ·所需资源。使用神经网络来估计一个函数,该函数可以确定每个状态的奖励和采取的最佳行动,这可能需要相当多的时间和数据。

        ·可解释性。通常很难理解神经网络是如何得出它们的解决方案的,这限制了它们提供真正洞察力的效用,并可能使预测或约束神经网络的动作变得困难。可解释性对于物理系统尤为重要,因为它允许使用几个世纪的数学中开发的强大分析工具来获得对系统的更多了解。

        虽然有一些方法可以解决这些挑战,例如迁移学习和拓扑分析,但它们仍然是强化学习更全面应用的障碍。但是,在我们专门研究物理系统的情况下,另一种方法可能很有用。回想一下,我们正在讨论的物理系统是由数学方程定义的,或者可以用数学方程很好地描述。我们不必开发一个完全任意的函数,而是可以专注于尝试找到一个由常见的数学运算符组成的表达式:算术、代数和超越函数(sine、e^x 等)。或者意味着为此目的将使用遗传算法。如[2]所述,遗传算法可以通过随机生成函数来探索函数空间,并通过突变和杂交育育有前途的候选者来开发和提炼解决方案。

        因此,虽然神经网络是大多数RL问题的拥护者,但对于物理动力学来说,一个新的挑战者出现了。接下来,我们将仔细研究通用算法方法,看看它如何与领先的 RL 算法、软演员评论家相抗衡。为此,我们将使用 AWW Sagemaker Experiments 在基于物理的体育馆中评估两者。最后,我们将评估结果,讨论结论,并提出下一步建议。

        回想一下,RL面临着两个挑战,探索环境和利用发现的信息。考虑到处于任何状态的可能性,有必要进行探索以找到最佳政策。如果未能探索,则意味着可能会错过局部全局最优值,并且算法可能无法充分泛化以在所有状态下都取得成功。需要进行开发,以将当前解决方案优化到最佳状态。然而,当算法对特定解决方案进行优化时,它会牺牲进一步探索系统的能力。

        Soft Actor Critic (SAC) 是对强大的 Actor-Critic RL 方法的改进。Actor-Critic 算法系列通过将状态值和相关奖励的估计与优化特定的输入策略分开来处理探索/利用权衡。当算法收集新信息时,它会更新每个估计器。Actor-Critic 的实现有许多细微差别;有兴趣的读者应查阅书籍或在线教程。SAC通过支持对奖励与批评者估计的截然不同的国家的探索来优化批评者。OpenAI 提供了 SAC 的详细说明。

        在这个实验中,我们使用 SAC 的 Coax 实现。我查看了几个 RL 库,包括 Coach 和 Spinning Up,但 Coax 是我发现在当前 Python 构建中大部分“开箱即用”的少数几个库之一。Coax 库包含各种 RL 算法,包括 PPO、TD3 和 DDPG,适用于体育馆。

        Actor-critic 方法(如 SAC)通常通过神经网络作为函数逼近器来实现。正如我们上次所讨论的,还有另一种可能的方法来探索系统和利用潜在的控制策略。遗传算法通过随机生成可能的解决方案进行探索,并通过突变或组合不同解决方案的元素(育种)来利用有前途的策略。在这种情况下,我们将评估遗传算法的遗传编程变体作为函数逼近的替代手段;具体来说,我们将使用遗传方法随机生成并评估包含常数、状态变量和数学函数的函数树作为潜在的控制器。

        实现的遗传编程 (GP) 算法改编自 [2],除了该文本使用的 tournament 代替,此实现选择每代的前 64%(Nn 低于 33%)作为符合突变条件,并重新播种其余部分以更好地探索解决方案空间。为了在一代中创建每棵树,增长函数从算术函数 (+,-,*, /) 和超越函数 (如 e^x, cos (x)) 中随机调用,以构建具有常量或状态变量的分支,作为结束分支的叶子。递归调用用于构建基于波兰符号的表达式([2] 通过 LISP 实现,我已经适应了 Python),并制定了规则以避免除以 0 并确保数学一致性,以便每个分支在常数或传感器值叶中正确结束。从概念上讲,方程树显示为:

图 1.示例函数树,作者基于 [2] 提供

        这导致控制器 b= sin (s1)+ e^(s1*s2/3.23)-0.12,脚本编写为: — + sin s1 e^ / * s1 s2 3.23 0.12,其中 s 表示状态变量。乍一看可能令人困惑,但写出几个例子将澄清这种方法。

        构建了整整一代的树后,然后在整个环境中运行每棵树以评估性能。然后,根据获得的奖励对树木的控制性能进行排名。如果未达到预期的性能,则保留性能最佳的树,前 66% 的树通过交叉(交换两棵树的元素)、剪切和增长(替换树的一个元素)、收缩(用常量替换树元素)或重新参数化(替换树中的所有常数)进行突变 [2]。这使得利用最有前途的解决方案成为可能。为了继续探索解决方案空间,性能低下的解决方案将被随机的新树替换。然后,每一代连续的个体都是随机新个体和性能最佳解决方案的复制或突变的混合体。

        根据环境中的随机起始位置对树木进行测试。为了防止“幸运”的起始状态使结果出现偏差(类似于模型的过度拟合),将针对一批不同的随机起始状态对树进行测试。

        遗传编程的超参数包括:

表 1.Hyperparamters for Genetic Progamming Algorthim

        注释的代码可以在 github 上找到。请注意,我是一个业余编码员,我的代码很笨拙。希望它至少具有足够的可读性以理解我的方法,尽管有任何非pythonic或通常糟糕的编码实践。

三、评估方法

        两种算法都在两种不同的体育馆环境中进行了评估。首先是体育馆基础提供的简单的摆锤环境。倒摆是一个简单的非线性动力学问题。动作空间是一个连续的扭矩,可以施加到摆锤上。观测空间与状态相同,是 x,y 坐标和角速度。目标是保持钟摆直立。第二个是同一个体育馆,但在观察中添加了随机噪声。噪声是正常的,平均值为 0,方差为 0.1,以模拟真实的传感器测量。

        RL 开发中最重要的部分之一是设计适当的奖励函数。虽然有许多算法可以解决给定的 RL 问题,但为这些算法定义适当的优化奖励是使给定算法成功解决特定问题的关键步骤。我们的奖励需要允许我们比较两种不同 RL 方法的结果,同时确保每种方法都朝着其目标前进。在这里,对于每条轨迹,我们跟踪累积奖励和平均奖励。为了简化此操作,我们让每个环境运行固定数量的时间步长,并根据代理在每个时间步距目标状态的距离来获得负奖励。Pendulum 健身房以这种方式开箱即用——在 200 个时间步长处截断,并根据钟摆离直立的距离进行负奖励,最大奖励为 0,在每个时间步长强制执行。我们将使用平均奖励来比较这两种方法。

        我们的目标是评估每个 RL 框架的收敛速度。我们将使用 AWS Sagemaker Experiments 来实现此目的,它可以按迭代或 CPU 时间自动跟踪跨运行的指标(例如当前奖励)和参数(例如活动的 hyperparmeters)。虽然这种监视可以通过 python 工具完成,但 Experiments 提供了运行参数和性能的简化跟踪和索引以及计算资源的复制。为了设置实验,我采用了 AWS 提供的示例。SAC 和 GP 算法首先在本地 Jupyter 笔记本中进行评估,然后上传到 git 存储库。每种算法都有自己的存储库和 Sagemaker 笔记本。存储运行参数以帮助对运行进行分类,并跟踪不同实验设置的性能。对于我们的情况,运行指标是奖励和状态向量,是我们想要测量以比较两种算法的因变量。实验会自动将 CPU 时间和迭代记录为自变量。

        通过这些实验,我们可以比较冠军(一种成熟、成熟的 RL 算法,如 SAC)与竞争者的性能,竞争者是一种鲜为人知的方法,由业余编码员编码,没有接受过正式的 RL 或 Python 训练。该实验将深入了解为复杂非线性系统开发控制器的不同方法。在下一部分中,我们将回顾和讨论结果和可能的后续行动。

        第一个实验是默认的摆锤体育馆,算法试图确定要应用的正确扭矩以保持摆锤倒置。它在固定时间后结束,并根据钟摆离垂直的距离给予负奖励。在运行 Sagemaker 实验之前,SAC 和 GP 算法都在我的本地计算机上运行,以验证收敛性。在实验中运行可以更好地跟踪可比的计算时间。计算时间与每次迭代的平均奖励的结果如下:

由作者提供

由作者提供

        我们看到,尽管GP是一种不太成熟的算法,但它得出的解决方案的计算要求远低于SAC。在完成本地运行的过程中,SAC 似乎需要大约 400,000 次迭代才能收敛,需要几个小时。对本地实例化进行编程,以存储整个训练过程中 SAC 进度的记录;有趣的是,SAC似乎从学习如何将钟摆向顶部移动到学习如何保持钟摆不动,然后将这些结合起来,这可以将奖励的下降解释为SAC学习保持钟摆稳定的时间。在 GP 中,我们看到奖励的单调增加是分步进行的。这是因为性能最佳的函数树始终被保留,因此在计算出更好的控制器之前,最佳奖励保持稳定。

        第二个实验是将高斯噪声(0,0.1)添加到状态测量中。我们看到的结果与无噪声情况相似,只是收敛时间更长。结果如下所示;同样,GP 的表现优于 SAC。

由作者提供

由作者提供

        在这两种情况下,我们都看到 GP 的执行速度比 SAC 快(与上一个示例一样,SAC 确实在本地收敛,我只是不想为 AWS 支付计算时间!然而,正如你们中的许多人无疑已经注意到的那样,无论是在机器学习还是物理系统方面,这都是一个非常基本的比较。例如,超参数优化可能会导致不同的结果。尽管如此,对于竞争者算法来说,这是一个有希望的开始,并表明它值得进一步研究。

 

四、GP与SAC比较

        从长远来看,我认为 GP 可能会比基于 SAC 等基于神经网络的方法提供几个好处:

        ·可解释性。虽然GP发现的方程可能是复杂的,但它是透明的。熟练的人可以简化方程式,有助于深入了解所确定的解决方案的物理特性,有助于确定适用区域并增加对控制的信任。虽然可解释性是一个活跃的研究领域,但对神经网络来说仍然是一个挑战。

        ·GP 允许更轻松地将洞察应用到正在分析的系统中。例如,如果已知系统具有正弦行为,则可以调整 GP 算法以尝试更多正弦求解。或者,如果一个解是已知的,用于与所研究的系统相似或简化的系统,则可以将该解预先植入到算法中。

        ·稳定性。通过增加简单的数学有效性和极限绝对值保障措施,GP方法将保持稳定。只要每一代都保留性能最好的人,那么解决方案就会收敛,尽管不能保证收敛的时间界限。更常见的 RL 的神经网络方法没有这样的保证。

        ·发展机会。GP相对不成熟。这里的 SAC 实现是可用于应用的几种实现之一,神经网络已经从大量努力提高性能中受益。GP 没有从这种优化中受益;我的实现是围绕功能而不是效率构建的。尽管如此,它与 SAC 相比表现良好,更专业的开发人员的进一步改进可以在效率上提供高收益。

        ·并行化和模块化。与神经网络相比,单个GP方程很简单,计算成本来自环境运行的重复运行,而不是环境运行和神经网络的反向传播。在不同的处理器之间分割不同GP方程树的“森林”很容易,从而大大提高计算速度。

然而,神经网络方法被更广泛地使用是有充分理由的:

        ·范围。神经网络是通用函数逼近器。GP 仅限于函数树中定义的术语。因此,基于神经网络的方法可以涵盖更大范围和更复杂的情况。我不想尝试GP玩星际争霸或开车。

        ·跟踪。GP是随机搜索的改进版本,如实验中所示,其结果是停止了改进。

        ·成熟。由于在许多不同的基于神经的算法中进行了广泛的工作,因此更容易找到针对计算效率进行优化的现有算法,以便更快地应用于问题。

        从机器学习的角度来看,我们只是触及了我们可以用这些算法做什么的表面。一些需要考虑的后续措施包括:

        ·超参数调优。

        ·控制器的简单性,例如对 GP 的控制输入中的项数进行惩罚奖励。

        ·控制器效率,例如从奖励中减损控制输入的大小。

        ·如上所述的 GP 监控和算法改进。

        从物理学的角度来看,这个实验可以作为进入更现实场景的起点。更复杂的情况可能会显示 NN 方法赶上或超过 GP。可能的后续措施包括:

        ·更复杂的动力学,例如范德波尔方程或更高维度。

        ·有限的可观察性,而不是完全状态的可观察性。

        ·偏微分方程系统,并优化控制器位置和输入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1988498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

干货分享 | TSMaster 测试报告生成器操作指南

用户在基于 TSMaster 软件开发测试用例时,或需要使用 TSMaster 生成 HTML 报告时,需要使用 TSMaster 测试报告生成器。 1、Test_Report 说明 Test_Report 是目前 TSMaster 为客户提供的一套测试报告模板,里面集成了测试报告的打印输出、图片…

android13去掉安全模式 删除安全模式

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题排查 3.修改方法 3.1方法1 3.2方法2 4.测试 5.彩蛋 1.前言 Android设备上的安全模式是一种诊断模式,当设备无法正常启动时,它会启动到这个模式。在这个模式下,只有系统自带的程序和服务会被运行,所有的第三方…

谷粒商城实战笔记-139-商城业务-nginx-搭建域名访问环境一(反向代理配置)

文章目录 一,管理员身份修改hosts文件二,配置Nginx反向代理product服务1,Nginx配置文件简介2,配置Nginx将gulimall.com的请求转发到product服务 本节的主要内容是讲述如何实现通过域名 gulimall.com访问谷粒商城系统。 主要实现思…

IDEA右键新建时没有Java Class选项

项目场景: IDEA右键新建时没有Java Class选项 问题描述 IDEA右键新建时没有Java Class选项 原因分析: 提示:这里填写问题的分析: 例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Ha…

InstantMesh 论文学习

论文链接:https://arxiv.org/abs/2404.07191 代码链接:https://github.com/TencentARC/InstantMesh 解决了什么问题? 这项技术可以从单个视角的2D图像中生成3D模型,这有助于简化3D内容的创建过程。3D资产的生成可以应用于虚拟现…

Pytorch人体姿态骨架生成图像

ControlNet是一个稳定扩散模型,可以复制构图和人体姿势。ControlNet解决了生成想要的确切姿势困难的问题。 Human Pose使用OpenPose检测关键点,如头部、肩膀、手的位置等。它适用于复制人类姿势,但不适用于其他细节,如服装、发型和…

Altium designer学习笔记03 -原理图绘制

原理图绘制 1. 原理图页大小设置2.原理图格点的设置3. 原理图模板的应用4. 元件的放置5.元件属性的编辑6.元件的选择、移动、旋转、镜像6.1 元件的选择6.2 元件的移动6.3 元件的旋转6.3 元件的镜像 7.元件的复制/剪切/粘贴8.元件的排列与对齐9.绘制导线的导线属性设置10.放置网…

基于Comsol进行薄膜型声学超表面设计与可调节性研究

研究背景: 在隔声领域,高频噪声属于易于隔离的频段噪声,使用隔音板或隔音墙便可达到良好的隔声效果。而低频噪声由于具有波长大、穿透性强、传播距离远等特点,根据质量作用定律,传统的隔声材料需要通过不断增加材料的…

低代码与软件定制开发的完美结合:生产管理软件的高效解决方案

引言 在当今快速变化的商业环境中,企业需要灵活且高效的生产管理软件来应对日益复杂的生产流程和市场需求。传统的软件开发模式往往需要大量的时间和资源,而低代码平台的出现为企业提供了一种快速开发和部署应用的新途径。低代码平台通过直观的拖放界面和…

Mirillis Action v4.40 解锁版下载与免安装教程 (专业高清屏幕录像软件)

前言 Mirillis Action!(暗神屏幕录制软件)专业高清屏幕录像软件,被誉为游戏视频三大神器之一。这款屏幕录制软件和游戏录制软件,拥有三大硬件加速技术,支持以超高清视频画质录制桌面和实况直播,超清视频画…

如何抢先获得抖音外卖未开放城市的区域服务商资格?附系统搭建教程!

自抖音外卖上线以来,抖音外卖区域服务商的申请热度与日俱增,连带着抖音外卖区域服务商有哪些城市开放了等多个相关话题也成为了各大本地生活服务商交流群的重点讨论对象。 从申请情况来看,目前,抖音外卖区域服务商的申请渠道主要…

五种IO模型、多路转接IO:select,poll,epoll(reactor)(技术

之前的系统部分的基础IO:就是冯诺依曼结果中的访问磁盘,用内存作为输入输出缓冲区提高效率 现在我们要说的高级IO(input/output):访问的外设(网络中就是网卡):我们的发送和接收接收其实大部分时…

奇奇怪怪的知识又增加了---给数据自动加上千分位

千分位(thousands),数学领域术语,一种简化数学表达的方式。千分位形式,即从个位数起,每三位之间加一个逗号,例如,将7654321输出成7,654,321。 有粉丝私信问,投稿中经常有编辑要求给数字加上千分…

资产管理系统GLPI的安装配置——Linux(Ubuntu 20.04.6 LTS)

系统版本20.04.6 LTSGLPI版本10.0.16PHP版本7.4.3 1.安装PHP及其依赖。PHP版本必须在7.4.0以上 sudo apt update -y sudo apt upgrade -y sudo apt install -y apache2 php-curl php-zip php-gd php-intl php-intl php-pear php-imagick php-imap php-memcache php-pspell p…

探索腾讯云AI代码助手的效能与实用性

前言开发环境配置项目实例应用一:功能介绍二:项目测试FFmpeg二次开发SDL应用加密播放器 帮助提升建议结语 ​ 前言 腾讯云的AI代码助手是一款强大的编码辅助工具,利用混元代码大模型技术,提供技术对话、代码补全、代码诊断和优化…

MySQL·C/C++访问数据库

目录 准备工作 测试是否安装成功 C/C语言访问 官方文档 接口介绍使用 mysql_init() mysql_close() 补充1:makefile编写 mysql_real_connect() 测试1:编译链接 mysql_query() 测试2:SQL语句测试 改 增 删 查 错误1&#x…

vxe-table树形结构使用setCheckboxRow卡顿--已解决

项目场景: vxe-table树形结构使用setCheckboxRow进行部分节点选中 问题描述 vxe-table树形结构使用setCheckboxRow,在数据较多时卡顿 原因分析: setCheckboxRow内部进行了多次的循环遍历,导致速度慢 解决方案: …

YoloV9改进策略:Block改进|GroupMamba在RepNCSP模块中的革新应用|即插即用

在深度学习和计算机视觉领域,YoloV9以其卓越的性能和高效的检测能力赢得了广泛认可。为了进一步提升YoloV9的性能,我们创新性地引入了GroupMambaLayer作为其RepNCSP模块的核心改进。这一策略不仅显著增强了模型的性能,还优化了参数效率和计算…

[数据集][目标检测]轴承缺陷划痕检测数据集VOC+YOLO格式1166张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1166 标注数量(xml文件个数):1166 标注数量(txt文件个数):1166 标注…

从 Pandas 到 Polars 四十五:Polars、Altair 和 Vegafusion

Altair长期以来一直是我最喜欢的可视化库。它允许我通过简洁且一致的API制作美丽的可视化图表。然而,去年我发现我无法将Polars的DataFrame传递给Altair图表时,我感到很失望。 但那些日子已经过去了。在这篇文章中,我们将探讨随着Altair 5的…