想象一下,你因为腹部疼痛去看医生。想象一下,为了告诉你疼痛的原因,医生需要运行一个数值模拟。这个数值模拟解决了你身体的微分方程,近似误差非常低,基本上达到了 100%的准确度:你将确切地知道为什么会有那种腹部疼痛,没有任何错误的空间(我知道这听起来很疯狂,但请在这里继续听我讲)。你会使用数值模拟吗?当然会,为什么不呢?
现在想象一下,因为这个数值模拟解决了非常复杂的微分方程,要从计算机得到响应,你需要等待35 年的 GPU 运行时间。这会立即降低该方法的吸引力。如果需要这么长时间才能得到响应,这个方法还有什么用呢?当然,它可能 100%准确,但付出的计算成本太大。
好吧,工程师们想到了一个解决方案。这个解决方案被称为代理建模。正如其名,这种方法是使用原始模拟的代理。它也是一个模型,意味着它旨在复制原始系统的结果,但只需要 GPU 资源和计算时间的一小部分。当然,代理模型并不完美,与原始方法相比,它们会导致精度损失,但计算时间极其短,并且可以将不可行的研究变为可行的研究**。**
在航空航天工程中,代理模型被广泛使用。这是因为代理模型有助于理解问题的参数,并允许设计者选择真正有趣的变量,以及可以针对特定问题丢弃的变量。
在这篇博客文章中,我将给出关于代理模型的一般概念,从理论到代码。然后,我将描述一个来自他们自己的论文的特定NASA 应用的代理模型。让我们开始吧!
1. 关于代理模型
假设我们必须预测使用航天器可以运送多少质量。为此,你需要解决一个关于车辆轨迹的非常复杂的微分方程。基于车辆轨迹,我们可以外推所谓的交付有效载荷。
现在,这个方程有多个参数。作为一个起点,让我们只考虑三个参数:发动机数量、每个发动机的推力,或者油箱圆柱长度。
一个(惊人的)微分方程数值求解器被称为“有限元方法”或“有限元模型”(FEM)。FEM 通过将感兴趣的物理空间离散化,然后在此离散空间上应用微分方程来数值求解微分方程。这种方法导致了对现实非常好的近似,但然而在计算和时间成本上很大。通常,FEM 在 GPU 集群上运行,正如你可以想象的那样,它们往往既昂贵又耗时。
例如,假设每次模拟需要 10 分钟,让我们考虑三维参数空间:
由作者制作的照片
所以你给我参数,我占用你10 分钟的时间,使用有限元分析,然后给你车辆的轨迹并估算交付的载荷。
美好的是,现在我们想要探索这个参数空间。如果我们考虑每个参数 10 步(0,0.1,0.2,……,1),我们就需要进行 10³ = 1000 次模拟,这相当于:
由作者制作的照片
现在,如果参数数量是 4,那么就有 10⁴ = 10,000 次模拟,需要 100,000 分钟,也就是 70 天。这仅仅是 10 步。如果我们考虑 100 步,并且只有 4 个参数,那么我们就在谈论 7000 天,大约是 20 年。我想你已经明白了。
现在的问题是10 分钟的等待时间。如果你把 10 分钟换成 0.4 毫秒,你会感到更加轻松,这类计算也会变得更容易实现。
那么,我们如何实现这个“代理模型”?想法是我们将运行有限数量的有限元实验。这些实验将形成我们用来训练代理模型的数据库,这将是一个机器学习模型(剧透)。然后我们评估质量:如果质量令人满意,我们就可以随意使用代理模型,如果质量不满意,我们必须返回去重新采样参数空间并重新训练代理模型。
我知道这很令人困惑,我认为最好的办法是通过实际构建我们的代理模型来消除所有的困惑。让我们开始吧!
1.1 实验设计
好吧,好吧,我们可能无法运行 10 万次模拟(因为我们不想等待 70 天),但也许等待 7 天来运行 10,000 个样本的稳定运行是一个不错的开始。所以让我们说我们想要这样做。我们该如何做到这一点呢?
我们面临的问题是我们想要获取尽可能多的信息来训练一个机器学习模型(剧透),但我们不想等待 70 天来运行大量的模拟。这个过程的部分被称为实验设计(DoE)或更简单地说“采样”。
我写了一篇关于这个的博客文章,你可以在这里找到它
有很多采样技术。在代理建模中最常用的之一被称为拉丁超立方采样(LHS),它的目标是结合随机技术和更结构化的方法,如均匀采样。进行 LHS 采样的代码非常简单,但需要名为"smt"的库。你可以这样安装它:
pip install smt
这就是结果:
1.2. 代理模型选择和训练
在采样原始参数空间之后,我们可以使用相同的smt库来训练一个机器学习模型。记住,你通常只有有限数量的点,所以你可能想尝试用非常简单的模型来解决问题,而不是像神经网络这样的超级复杂的算法。
例如,一个相当简单的模型,即使数据集只有少量点也能表现出良好的性能,那就是径向基函数 (RBF)。RBF 模型通过在每个数据点周围结合加权径向函数(通常使用高斯函数)来预测结果。这种方法之所以有效,是因为它捕捉了数据中的局部变化,即使在数据集较小的情况下也能提供平滑的插值。
我用了很多大词,但事实的真相是,所有的事情都可以用非常少的代码行来实现:
由作者使用上述代码制作的图像
1.3. 质量评估
现在我们已经完成了DoE并训练了我们的代理模型,最后要做的就是评估我们方法的质量。
给定一定的质量阈值(例如,均方误差小于 0.02),我们评估在测试集上,我们的代理模型是否小于或等于该值。如果是,那么我们就没问题了。如果不是,我们就必须对参数空间进行重新采样。
我们通常有两种选择。我们要么使用另一个 LHS 进行重新采样,例如,或者使用另一种“静态”方法,要么我们采用一些“自适应采样”策略。自适应采样的目的是在代理模型误差(或不确定性)较大的区域进行采样。在重新采样阶段完成后,我们可以重新训练我们的代理模型并再次评估其质量。我们重复这两个步骤,直到达到期望的质量水平。
2. NASA 案例研究
我不希望这个“代理模型”听起来像是我这样的书呆子进行的计算机科学实验。主要是因为它不是。
在 2016 年,NASA 发布了一份关于他们如何使用代理模型的案例研究(案例研究),他们自己是这样描述的:“提供完整的车辆质量分解到三级子系统,基于最坏情况飞行载荷的初步结构尺寸,以及轨迹优化以量化给定任务的集成车辆性能”。够让人困惑吧?让我们一步一步来描述它。
2.1 航空航天领域对代理模型的需求
在处理实际工程产品时,早期概念设计阶段所做的决策对预期的生命周期成本有重大影响。在我们之前看到的例子中,我们注意到,如果我们需要用 10 步探索三维空间,我们所需的时间会比探索十维空间所需的时间少得多。
在 NASA 的具体案例中,给定车辆的参数集,高级概念办公室(ACO)的分析团队利用一套经过验证的工具:
-
向客户提供车辆的 完整质量分解
-
根据 最坏情况飞行载荷 进行 初步结构尺寸(这是起飞重量的估计)
-
执行 轨迹优化 以量化给定任务的集成车辆性能
因此,使用 NASA 系统,我们可以得到给定参数集的 质量、结构尺寸 和 轨迹。然而,这一组参数非常耗时和资源密集:这就是需要 代理建模 的原因。
2.2 软件设置
对于这个项目,NASA 使用三个计算系统:
-
集成火箭尺寸(INTROS):基于车辆设置,使用现有的典型运载火箭系统、子系统推进剂列表来确定质量属性。
-
运载火箭分析(LVA):提供快速周转的初步结构设计和分析。输入参数列表包括材料属性、载荷系数、气动载荷、应力和稳定性。该分析使用最坏情况载荷来确定运载火箭概念的 主要结构质量
-
程序优化模拟轨迹(POST):它使用直接解法来近似最优轨迹的控制函数
INTROS 的输入参数如下*:
作者从公开的 NASA 文章中制作的截图 from public NASA article
*关于参数的完整描述,请参阅原文
LVA 主要是 INTROS 的扩展,因此这两个软件在以下循环中集成:
作者从公开的 NASA 文章中制作的截图 from public NASA article
LVA 计算起飞总重量(GLOW)并将其反馈给 INTROS,直到收敛。
POST 使用来自 INTROS/LVA 的 质量信息 并计算 有效载荷交付
作者从公开的 NASA 文章中制作的截图 from public NASA article
2.3 美国国家航空航天局代理建模
第一个代理模型从参数属性到质量信息,并模仿了INTROS/LVA的行为。来自第一个代理模型的质量信息输入到第二个代理模型,该模型模仿了POST的行为。整个代理模型看起来是这样的:
由作者制作的截图 来自公开的 NASA 文章
他们使用的代理模型算法非常简单,它被称为响应面方程(RSE)。
由于 INTROS/LVA 和 POST 代理模型可以在一秒钟内运行,我们可以运行非常大的模拟,并探索交付有效载荷与车辆参数之间的依赖关系。输出非常有帮助,因为它允许我们根据多个参数检查交付的有效载荷:
由作者制作的截图 来自公开的 NASA 文章
例如,我们可以反转依赖关系,找到获得目标交付有效载荷所需的参数。
3. 结论
非常感谢您花时间与我在一起。在这篇文章中,我试图将大约6 年的Python知识、4 年的博士研究(该研究是航空航天工程中的代理建模)和2 周的论文研究压缩在一起,所以我理解如果有些部分有点混乱。让我尝试为您总结关键点:
-
数值模拟和有限元方法(FEMs)简介:我们首先讨论了使用计算密集型数值模拟,如 FEM,解决复杂问题的挑战。这些方法通过数值方法求解微分方程,虽然准确,但需要大量的时间和计算工作量。
-
代理建模的理论介绍:为了应对这些挑战,我们引入了代理模型。这些模型复制了更复杂模拟的结果,但计算需求显著降低。使用代理模型,一些不切实际的研究变得可行,因为计算时间大大减少。
-
动手示例:代理建模:通过一个玩具示例,我描述了如何实现一个代理模型,从实验设计到质量评估。
-
NASA 案例研究。NASA 使用代理模型为第三方客户提供车辆的质量信息和交付的有效载荷。我们简要描述了他们的公开研究。
4. 关于我!
再次感谢您抽出时间。这对您来说意义重大 ❤
我叫 Piero Paialunga,就是我这里的人:
作者制作的照片
我是辛辛那提大学航空航天工程系的博士候选人,同时也是 Gen Nine 的机器学习工程师。我在博客文章和领英上谈论人工智能和机器学习。如果您喜欢这篇文章,并想了解更多关于机器学习的信息,以及跟随我的研究,您可以:
A. 关注我的**领英,我在那里发布所有故事 B. 订阅我的通讯。这将让您了解新故事,并有机会给我发信息,以接收您可能有的所有更正或疑问。 C. 成为推荐会员,这样您就不会有“每月故事最大数量”的限制,您可以阅读我(以及成千上万的机器学习和数据科学顶级作家)关于最新技术的所有文章。 D. 想和我合作?请查看我的收费和项目Upwork**!
如果您想问我问题或开始合作,请在这里或**领英**上留言:
6819

被折叠的 条评论
为什么被折叠?



