物理信息机器学习笔记-全-
物理信息机器学习笔记(全)
物理信息机器学习:P01-01:物理信息机器学习:科学与工程中人工智能与机器学习的高级概述 🧠


在本节课中,我们将要学习物理信息机器学习(Physics-Informed Machine Learning, PIML)的核心概念与框架。这是一个关于如何利用现有物理知识改进机器学习系统,以及如何使用机器学习发现新物理定律的交叉领域。课程将首先概述机器学习的基本流程,然后详细阐述如何将物理知识融入该流程的每一个阶段。
物理信息机器学习是机器学习中最重要的主题之一。它处于一个关键的交叉点:如何利用已有的物理知识来改进机器学习系统,以及如何使用机器学习来发现人类从未写下过的新物理定律。
我们经常谈论机器学习。我们在新闻和日常生活中看到它的成功案例,其进步速度确实令人震惊。曾经只存在于科幻小说中的事物,如今已成为科学事实。例如,机器学习能让单张静态图像中的蒙娜丽莎“活”起来。我们还有快速发展的生成式人工智能,例如DALL·E 2,你可以输入“吉他怪物”这样的提示词,它就能生成一张怪物弹吉他的精美图像。请注意,吉他本身也是一个怪物,这很酷。
尽管这些技术在创造新艺术、图形、生成文本和翻译语言等经典机器学习任务中非常有用,但一个日益增长的世界是:我们如何将物理和机器学习用于设计全新的飞机?或用于飞机发动机、机翼或机身的新型超材料?或者用于我们人类所拥有的任何其他工程和物理任务?例如预测、建模和理解流体流动与湍流,这对于设计飞机、赛车、运输船以及风力涡轮机,理解气候变化和天气等至关重要。还有机器人和用于自主系统的数字孪生。这只是机器学习,特别是物理信息机器学习在工程和自然科学中众多应用的冰山一角。
如果你想成为这场革命的一部分,如果你想改变世界,如果你想设计新的超材料,让我们能建造更好的飞机、更好的风力涡轮机、更好的机器人算法,并理解气候变化等问题,那么物理信息机器学习将成为你未来工具箱中必不可少的工具。这就是本系列讲座的主题,而本讲是该系列的概述。
现在,让我们放大视角。我们之前多次谈到,机器学习本质上是一个使用优化和回归技术从数据中构建模型的过程。人类使用优化和回归从数据中构建模型已有数十年,甚至数百年、数千年的历史。我们最早的一些行星模型本质上就是基于观测数据,通过某种近似回归或优化来理解这些模型。但今天,我们拥有更多的数据,以及更先进的优化算法,这是机器学习发展如此迅速的原因之一。
以上是经典机器学习。我们今天和本系列感兴趣的是物理信息机器学习,即我们如何使用相同的优化和回归技术从数据中构建物理模型,或者至少基于这些现有的优化和回归框架进行构建。
因此,整个系列都聚焦于人工智能、机器学习与物理学的交叉领域。我认为机器学习领域的研究人员常常忘记,我们实际上拥有数百年的物理知识,我们对物理系统如何运作有海量的知识。但很多时候,在构建这些机器学习模型时,我们却抛弃了这些知识。然而,在过去五到十年里,情况开始变得更加清晰:我们确实需要将物理学融入机器学习过程,才能在工程、自然科学和生物学等真正复杂的系统上获得所需的高级性能。
因此,本系列将反复出现两个重要方面,两个大的主题:
- 我们可以将物理学强制融入机器学习模型。本质上,我们可以获取已知或部分已知的物理知识,如对称性、守恒定律、不变量等,并将它们“烘焙”到我们的机器学习模型中,使其性能更佳。这样,如果我们强制模型遵循物理规律,就能用更少的训练数据学习到泛化能力更好的模型。
- 另一方面,我们常常并且越来越多地能够使用机器学习技术,通过测量数据发现全新的物理定律。例如,如果我有来自星系运动、等离子体或某个生物系统的测量数据,我或许能够使用计算机科学其他领域正在开发的这些机器学习方法,来发现我们以前从未写下过、人类由于复杂性或其他方面(如数据的复杂性)而未能发现的新物理模型。这是一个非常令人兴奋的方面,我们可以开始得到描述非常复杂系统的常微分方程或偏微分方程,而这些系统是人类无法用经典方法描述的。
所以,这就是我们将要探讨的两个大主题:我们将强制或“烘焙”物理学到机器学习过程中;同时,我们也将经常使用机器学习来发现新物理。我们会发现,这两者某种程度上是互为补充的问题。
这里有一个我非常喜欢的简单例子,用来热身,说明什么是物理信息机器学习。这是我实验室墙上安装的一个钟摆,它来回摆动。末端有一个小型加速度计和一个LED灯,所以你可以拍摄它的视频。传统的机器学习可能会拍摄这个钟摆的视频,并尝试使用自编码器神经网络将视频的维度降低为由这个红色向量给出的最小潜在状态,这样你就可以使用这个最小状态,然后从这些极少的变量中重建视频。我们知道这是一个低维系统,我们认为它可能由一个变量θ(角度)及其角速度来描述。天真的机器学习只会试图找到一些坐标来压缩这些数据,以便也能将其扩展回完整的视频。
而物理信息机器学习试图做一些更复杂的事情。我们不只是试图学习压缩视频的坐标,我们还试图学习这些坐标如何随时间演化的微分方程,比如我们知道的这个阻尼摆方程。你可以从两种角度来思考这个问题:如果我已知这个方程,我可以尝试将其“烘焙”到这个潜在状态和这些红色坐标中,以尝试用我的机器学习模型学习正确的坐标。如果我融入了这些已知的物理知识,我可能会做得更好。或者,我可以尝试纯粹从这些测量数据中学习这个微分方程。
再次聚焦这个例子,我们知道,如果我们要使用教科书方法来做这件事,有两个关键要素:首先,我需要学习一个好的坐标系θ,在这个坐标系中我可以表示这个钟摆运动。例如,θ比末端的X和Y位置要好得多。然后,一旦我学习了那个坐标,我想学习一些运动方程,一些描述系统如何随时间演化的微分方程。
这就是我们所说的物理与机器学习的含义。通常,这意味着学习正确的坐标和学习一些控制方程或物理定律,这些定律通常是描述时间演化的微分方程。同样,我们可以从数据中学习这些,也可以将这些元素“烘焙”到我们的机器学习模型中。
好的,现在我们将放大视角,具体讨论构建经典机器学习模型所涉及的阶段。我将把它分解为五个关键阶段,我们通常用这五个阶段来构建任何机器学习模型,然后我将展示如何将物理学“烘焙”到这五个阶段的每一个中。
需要说明,这并非100%准确,大约有80-90%的准确性,但这是一个很好的指导方针,可以帮助我们组织本系列讲座。
以下是构建机器学习模型的五个阶段:
第一阶段:定义问题
第一阶段本质上是决定问题:我们要用机器学习模型建模什么?这意味着决定输入和输出是什么,以及我想要建模的关系是什么。例如,我有狗和猫的图片,我想构建一个分类器来将它们标记为狗或猫。我们决定了要建模的问题。
第二阶段:收集与整理数据
一旦完成第一阶段,我需要收集和整理用于训练该模型的训练数据。什么数据将为模型提供信息?我如何收集这些数据?同样,在狗和猫的例子中,我需要一堆狗和猫的图片,并且我必须决定:我是否真的有标签?我知道哪些图像是狗,哪些是猫吗?这就是我的数据整理过程。这通常是整个流程中最昂贵的环节之一,有时获取这样的数据集可能需要数百万甚至数千万美元。
第三阶段:设计架构
这是很多人(包括我自己)感到兴奋的阶段。在第三阶段,你可以设计某种架构。我们已经知道要建模的问题,知道我们想要学习的输入和输出之间的关系。第三阶段是我们选择架构的地方,比如一种特殊类型的神经网络、SINDy模型或自编码器等。你选择某种架构,是因为你认为它能很好地表示输入和输出之间的函数关系。因此,很多工作都投入到为特定类型问题设计定制架构中。我们知道,如果要做图像分类,我们使用卷积神经网络;如果要建模时间序列,我们使用循环神经网络等。因此,在选择架构方面有很多专门知识。事实上,这是一个用于在扩展回之前压缩输入维度的自编码器架构。
第四阶段:构建损失函数
现在我们知道问题,有了数据,并且有了我们认为可能能够训练以建模输入输出关系的候选架构。第四阶段是构建损失函数,即某种目标函数,它告诉你模型是否表现良好。通常,这包括诸如你的神经网络(或任何机器学习架构)的输入输出预测与实际用于训练的数据之间的误差等项。你还可以添加各种其他损失函数,例如添加正则化项以使模型更稀疏或更平滑等。同样,第三和第四阶段是现代机器学习以及物理信息机器学习大量研究存在的领域。
第五阶段:优化训练模型
一旦我们有了架构和损失函数,我们本质上就是选择某种优化算法来训练模型。通过训练模型,我们的意思是使用优化来调整架构的参数,以最小化损失函数在数据上的平均值。
这一点非常重要,我再重复一遍:我们的架构是可用于表示你想要建模的输入输出关系的某类函数。这个架构本质上存在可以调整的参数。在神经网络的情况下,就是网络中所有连接的权重。你可以调整这些权重来学习某种输入输出函数。因此,我们使用优化算法(如Adam优化器和其他类型的随机梯度下降优化)来调整架构的参数,以最小化损失函数在训练数据上的平均值。
这就是机器学习的整个过程。我们决定问题,收集数据,选择我们认为可以表示输入输出关系的函数类(我们称之为架构,如特定类型的神经网络),设计或构建一个告诉我们是否做得好的损失函数,然后使用优化来调整架构的参数,以学习那些能最小化损失函数在训练数据上平均值的参数。

我之所以这样将其划分为五个阶段,是因为这五个阶段中的每一个都为将物理学嵌入过程提供了独特的机会,在某些情况下也为发现物理学提供了机会。因此,如果我们对物理学有部分了解,例如我知道我正在尝试建模机翼上的升力、某种材料特性或具有关节和连杆的机械臂,那么在这五个阶段的每一个阶段,我都可以嵌入物理知识并改进这个机器学习过程。我可以约束架构,可以添加自定义损失函数,我可以使用某些比其他方法更尊重物理的优化类型。因此,所有这些阶段都为我们提供了将物理学融入过程的独特而强大的方式。
我们将使用这个图表来组织几乎整个短期模块或训练营,在这个更大的系列讲座中。我们将深入探讨这五个例子中的每一个,并研究如何在机器学习的每个阶段嵌入和提取物理知识。

如果你想了解更多,其中一些内容在我和Nathan Kutz合著的教科书《Data-Driven Science and Engineering》中有所涉及,你可以在这里下载免费的PDF。我希望在这段视频发布时,会有其他资源,比如相关笔记等,所以请查看视频描述以获取更多可用资源的链接。
再次强调,我们经常思考架构,这是让很多人感到兴奋的事情之一。尤其是在物理信息机器学习中,人们会对可以尝试的所有酷炫架构感到兴奋。仅就神经网络而言,就存在一个可能的架构“动物园”。我想强调一个重要观点:并非所有机器学习都只是神经网络。还有很多其他非神经网络的架构可以用来从数据中学习模型。但即使在仅看神经网络的领域,也存在这种“动物园”。
很多时候,我们所做的事情类似于炼金术,一种现代炼金术。你有一个问题,通过某种直觉组合,也许是阅读Reddit帖子或看到朋友做了什么,我们对哪些类型的神经网络架构可能或可能不适用于我们的问题有一些想法。然后我们常常最终只是尝试一堆架构,有时它们有效,有时无效。有时你可以(比喻性地)把铅变成金,有时则不能。因此,将机器学习应用于物理系统的一大推动力在于,我们实际上对这些系统有一些先验知识,我们知道很多关于这些系统的信息,也许我们可以开始学习不同神经网络架构如何以及何时适用于给定问题的原理。
这是一个非常重要的观点。显然,我们希望做更好的工程和更好的科学,我们希望使用我们掌握的最佳工具,而如今,机器学习就在这个工具箱中。但还有另一个视角:通过将机器学习应用于我们有时知道答案的物理问题,我们可以比将其应用于我们不知道答案的系统(比如试图治愈癌症)时,对这些机器学习算法和模型有更多的了解。通过将其应用于我们知道答案的系统,我们或许能够从机器学习的这个“炼金术”阶段,过渡到更类似于“化学”的阶段,即对于特定问题,何时以及如何使用这些构建块存在实际的原则和组织。这是我们作为一个社区非常感兴趣的事情。通过将机器学习应用于我们知道答案的物理系统和工程系统,来学习这些机器学习的基本原理,这方面投入了大量的努力。
这实际上是美国国家科学基金会(NSF)资助的动态系统人工智能研究所的主要目标之一。你可以访问网站搜索查看。这个NSF资助的动态系统人工智能研究所,真正专注于理解如何将物理学嵌入机器学习系统,如何使用机器学习系统学习新物理以解决各个应用领域的工程任务,以及如何从那种只是猜测、检查和试错的“炼金术”模式,转变为更有原则的模式。这是与许多人合作的成果,实际上比这个NSF研究所本身更大,旨在学习这些机器学习原理。这是一个非常令人兴奋的领域、主题和领域,现在是进入这个领域的研究人员的绝佳时机,因为存在大量未解决的开放问题和挑战,并且在未来几年,许多价值数十亿美元的行业都可以通过这些技术进行转型。
好的,现在我将深入探讨机器学习的这五个领域,并举例说明我们如何将物理学“烘焙”进去。这将是一个非常快速的高层概述,我将有专门的视频深入探讨每个子问题。我们将有整个视频讨论如何将物理学融入第一阶段和第二阶段等等。但让我们先从一个非常高的层次来了解一下。
第一阶段:定义问题
机器学习的第一阶段是决定问题。有时这甚至没有被提及,人们认为这是理所当然的。但这是机器学习过程的一个重要部分:选择你实际上认为可以用数据建模什么,你想要建模什么,什么是有用的模型,你为什么想要一个模型?这些都是重要的问题。从根本上说,归根结底,如果你正在对一个物理系统进行建模,比如熔岩灯、钟摆或流体流动,或者材料加工过程等实际上是物理的事物,那么你已经在某种程度上在进行基于物理的机器学习。当你决定尝试对某个物理过程进行建模时,物理学已经在这个过程中了。
例如,如果我要在我的机器学习模型中尝试学习这个钟摆上的力,我们知道 F = ma。如果我尝试用机器学习模型学习这些力,我已经通过问题陈述将物理学“烘焙”到了过程中。同样,我可以尝试学习哈密顿量或拉格朗日量,可以尝试学习自由能势等等。有很多很多不同的方法,你可以通过巧妙设置问题来融入物理学。
第二阶段:整理数据
那么,我将使用什么数据?同样,如果数据来自物理系统,本质上你正在通过数据收集嵌入物理学。有时我开玩笑说,第二阶段是将物理学融入模型的“谷歌方式”。因为其理念是,如果你收集了足够多的自然世界数据,它就必须学习像 F = ma 这样的物理学,甚至最终可能学习像 E = mc² 这样的东西,以协调它所收集的所有数据。但我说这是“谷歌方式”的原因是,它非常非常昂贵,依赖于拥有近乎无限的数据量,而作为科学家和工程师,我们通常没有这种奢侈。我们更经常拥有有针对性的、有限的、狭窄的数据集,我们必须用这些数据集来学习能够更广泛外推的物理学。这一点很微妙,我们将有整个视频深入探讨,但我想简要提一下。
例如,我是否要将流场作为我的训练数据?我是否要在不同的流速下获取它们?如果只有一个流速,或者有一个速度范围,这将改变我在模型中捕获的物理特性,这是非常不同的模型。同样,如果我有流体流动、地球物理流体流动的数据(这实际上是瓜达卢佩岛过去的云层形成),在我的数据整理过程中,为了增加物理学,我可以做的一件事是:如果我认为物理学实际上不依赖于旋转角度或平移,如果我认为我的物理学对某种对称性(如平移或旋转)是不变的,我可以用根据该对称性变换的额外副本来增强我的数据。例如旋转,在其他情况下是平移。这是人们经常做的一件非常常见的事情:如果你知道你的系统具有某种对称性或不变性(这是物理学的另一种形式),你可以增强数据,使其具有那些对称性和不变性。
例如,如果我正在构建一个分类器,可以区分普锐斯和福特皮卡,也许还有其他汽车和卡车,我将获取汽车和卡车的图像,我可能会旋转、平移和缩放它们,因为这些都不应该影响分类。所以我可以获取我的数据并增强它,以包含我们认为模型应该对其不变的对称性和不变性。
另外,我将多次谈到的一点是,坐标通常在我们对物理系统进行机器学习时非常重要。这是Mar和Christensen的一幅漫画,我非常喜欢,经常使用。它展示了太阳和地球的两种不同坐标系。右边的是地心说观点,即从我们以地球为中心的视角看事物的样子。在这个坐标系中学习物理学和模型非常困难。而如果我们固定坐标系,将太阳放在中心,就容易得多,数据更有意义,也更容易从数据构建模型。因此,整理数据通常意味着找到正确的坐标系。有时我们学习它,有时我们通过物理学的先验知识来强制实施它,这对学习过程有巨大的影响。
第三阶段:设计架构
我们将在这里花费大量时间,可能专门用五到十个小时来讨论市场上所有不同的架构,以及这些架构的不同损失函数。从一个很高的层次来看,我们可能有像拉格朗日神经网络这样的东西。如果你知道你的系统具有这种欧拉-拉格朗日方程框架,如果它是一个像双摆这样的机械系统,你可能会使用像拉格朗日神经网络这样的特定架构,以便你的系统能够守恒能量。
重要的一点是,几乎所有这些架构都有一组相应的自定义损失函数来训练它们。所以第三和第四阶段有时确实会有点混合。
这只是针对物理系统的特定结构的一个例子。我们还有另一种关于什么是“物理”的概念,即简约性。我们喜欢我们的模型尽可能简单来描述数据,但又不能更简单。这就是我们的SINDy自编码器中的方法,你使用自编码器来学习一个好的坐标系,然后你在某类模型中拥有描述数据的最稀疏模型。所以我们将使用低维和稀疏的原则来促进模型尽可能简单来描述数据,但又不能更简单。这种简约性原则已经伴随我们2000年,从亚里士多德到爱因斯坦,这是我们衡量一个系统是否“物理”的方式之一,即其简单性和描述测量数据的能力。这是另一种类型的架构。
然后,这实际上是我最喜欢的架构之一,也是现代物理信息机器学习时代较早的架构之一,由Julia Ling及其合作者提出。他们使用神经网络来尝试为湍流流体流动构建闭合模型。他们的架构与标准的深度神经网络架构不同,他们有一个额外的辅助张量输入层,使他们的网络对伽利略变换具有不变性。同样,我们知道这些流体流动在某些旋转和平移下应该是相同的。因此,通过架构的选择,他们使得他们的模型必须具有那种不变性,并且性能比不将其纳入机器学习过程要好得多。
这只是数百种不同类型的定制架构中的三种,你可以使用它们来将某些类型的物理学注入你的系统。
实际上,我早些时候和我的妻子Bing谈到了这一点。她指出,当你选择一个架构来使你的系统更“物理”,使你的机器学习模型更“物理”时,这被称为归纳偏置。这是一种不言而喻的偏置,但它高度引导或影响了下游的机器学习过程。因此,我们将在本节的后面更多地讨论归纳偏置和架构选择。
第四阶段:构建损失函数
这是另一个非常丰富的研究领域:如何构建损失函数来促进模型在某些方面更“物理”?我们已经讨论过那些稀疏模型、简约模型,它们尽可能简单地描述数据,这由损失函数中的一个项来量化。L1范数或L0范数量化了稀疏性和简约性。因此,通常物理学是通过训练过程中额外的正则化项或损失函数来促进的。
这方面最著名的例子可能是物理信息神经网络(Physics-Informed Neural Network, PINN),如图所示。这只是一个标准的深度前馈神经网络,用于将一些输入(如空间和时间)映射到一些输出(如流场)。通常,我只会有一个损失函数,平均计算这个模型在一些训练数据上的准确性,这是天真的做法。PINN所做的是,从这个输出数据中,你实际上可以计算偏微分方程中的项,并且可以将系统应该满足的实际物理(偏微分方程)作为另一个损失项添加到你的损失函数中。所以,如果你知道物理学,如果你知道你的系统是无散的,或者满足纳维-斯托克斯方程,或者弹性梁方程,无论是什么方程,如果你知道它,你可以将其作为正则化损失项添加到你的机器学习过程中,这应该能显著提高学习性能。如果你将物理学作为损失函数包含进来,你可以用少得多的数据获得更好的模型性能。同样,我们将有整整一讲专门讨论这个话题,因为它非常重要,包括代码、示例和案例研究等。
第五阶段:优化
最后一步,我认为超级重要,虽然不如第三和第四阶段那样普遍用于嵌入物理学,但它非常重要,我和我的合作者团队在这方面做了很多工作,那就是使用优化来强制实施物理学。如果我将物理学作为损失函数中的一个项添加,那本质上只是添加了“我们希望物理学得到满足”的建议。但它总是在“战斗”——我们想要低模型误差,我们也想要物理学得到满足,它们有时是相互冲突的目标。所以,仅仅将物理学作为损失函数添加,只是促进了物理学,但并没有强制物理学得到满足。然而,通过优化,你通常可以约束和强制你的物理学以更高的精度、更严格的方式得到满足。
例如,我们在流体流动建模与机器学习方面做了一些工作。我们知道存在某些对称性和属性,比如在这些不可压缩流动中能量是守恒的。那么,我可以做的是构建一个损失函数,其中包含我的模型误差和一些对于守恒能量所必需的约束。或者,不仅仅是将其作为损失函数,我可以做一个约束最小二乘,使得这些约束在构造上始终满足数值精度。
同样,如果现在不完全理解也没关系,我们将深入探讨每个主题,并至少有一个视频,但可能每个主题都有几个小时的资料。其理念是,你可以促进——如果我知道我的系统要具有物理性应该满足的一些约束,比如能量守恒,或某种对称性,我可以将其作为损失函数中的一个项添加,但如果它只是在我的损失函数中,通过优化过程它不会变为零。或者,我可以使用拉格朗日乘子或约束最小二乘等方法,改变我的优化问题,使得这些约束在我每次优化这个函数时都精确满足。这是我们经常做的事情,并且有非常强大的方法来以这种方式强制实施物理学。它稍微复杂一些,能给你更好的物理约束,但构建到优化函数中也需要更多的人力投入。
另一个例子,我们将在本系列讲座中发现一个主题:我们将大量讨论“物理学到底是什么?我们谈论的这个物理学是什么?”通常,物理学通过对称性表现出来。我是双侧对称的,意味着我有镜像对称性,所以如果我在镜子中翻转自己,本质上没有任何变化。许多物理系统具有其他类型的对称性,我们讨论过平移对称性、旋转对称性。这是一个具有六边形势的量子势阱,因此它具有这种有趣的旋转和反射对称群。我稍后会谈到这一点,但有一些方法,比如物理信息动态模式分解(Physics-Informed DMD),你实际上将你的解约束在满足该对称性的某个解流形上。同样,这将是一个完整的短期课程,可能很多都是关于对称性,以及如何将对称性“烘焙”到机器学习中,以及如何使用机器学习从数据中提取对称性。这是一个巨大、非常重要的话题,它将改变我们进行机器学习的方式,目前正在改变,并且只会在未来五到十年继续提高我们的能力。
好的,以上就是五个阶段,至少是五个将物理学“烘焙”到机器学习过程中的明确机会。现在,我将给你一个超级快速的预览,看看接下来你将看到什么,至少是接下来几个小时的内容。
首先,我将向你展示这五个阶段的图示示例,以便你能以不同的方式看到它,然后我将给你一些我们接下来要做的事情的预览。
同样,第一阶段是设定问题。我现在将介绍一个具体例子,其中我想要解决的问题是流体流动的模型降阶。问题是:我想获取一个复杂的流体模型,并得到一个更简单的模型,一个能在更小的计算机上更快运行的模型。所以我需要一些数据,需要整理一些测量数据。在这种情况下,也许我有一个模拟,一个昂贵的、全复杂度的流体流动数值模拟。所以我的问题是试图得到一个更简单的描述。我从高维数据开始。
第二阶段是整理数据。我从高维数据开始。
第三阶段是选择架构。在这种情况下,我将选择的架构是这种自编码器架构,因为它具有我想要的属性:从高维到低维,并且这些低维状态Z被选择为最有可能重建高维状态。我还想说,我希望能够学习一个动力系统,即在该低维潜在状态上的某个微分方程。这就是我所说的模型降阶:我想获取我的高维系统,将其压缩到低维状态,并学习该低维状态中的一些动力学、一些微分方程。这样运行这个模拟会快得多,也许能实时运行,并且我能获得系统中发生的大部分物理现象。以上就是前三个阶段。
第四阶段是构建损失函数。我们需要构建某种函数来告诉我模型是否表现良好。记住,我们的架构是某种将输入映射到输出的函数,用于解决问题。它有参数θ,这些参数是可以调整以使该函数更好地拟合数据的可调参数。在这种情况下,我有三个神经网络,每个都有一组参数θ1、θ2和θ3。我可以调整这些参数以使该函数更好地拟合数据,这由损失函数量化。所谓“更好拟合”就是这个意思。
最后,第五阶段是对所有这些θ进行优化,实质上是调整θ以最小化损失函数在训练数据上的平均值。这只是对我们已经说过的话的重述,但以稍微不同的图示方式呈现。
好的,现在我们将再次放大视角,预览本系列接下来将看到的内容。
应用与工程
我认为这是一个巨大的领域。我们将有很多案例研究和应用,探讨这实际上是如何在各种用例中使用的。我在这里展示的只是众多应用中的一小部分,也是我们将在本系列中探索的一小部分。例如,再次是建模流体流动和湍流。还有形状优化:你如何实际设计一个具有正确升阻比特性和正确结构特性的机翼?这是一个大的多目标优化问题。记住,训练机器学习模型也是一个多目标优化问题,所以它们结合在一起是有道理的。例如建模流体流动,也许设计飞机、汽车或风力涡轮机的形状,设计将用于这些下游工程应用的复合材料或合金,再次是多目标优化,对于材料来说是非常高维的设计空间。
数字孪生
我可能有一些物理资产,比如机械臂、飞机或工厂车间,我可能想要一些数字表示、一些我可以设计和优化的数字模型,就像这里的数字孪生。然后,总的来说是机器人技术。机器人技术和自主性是随着新机器学习技术迅速发展的领域。同样,这只是我们将要讨论的应用中相当小的一个子集。其他例子包括药物发现、蛋白质设计,这些系统受物理学支配,蛋白质折叠和化学作用的方式都有物理学,所以这些也是很大的应用领域。其他领域,如气候科学,理解天气现象、模式和气候趋势,再次与湍流相关,但背景非常不同。这方面的应用非常多。
数字孪生在这里是一个非常重要的概念,当我们考虑构建一个从数据训练而来、具有这种混合物理和数据驱动风格的机器学习模型时,这正是数字孪生所追求的。它就像是某个复杂系统(如飞机、工厂车间或材料烘烤过程,如复合材料烘烤过程)的“活”模型。你希望你的物理资产的这个数字孪生尽可能准确,你希望你的模型在收集新数据时能够更新。所以你的机器学习模型需要能够更新,你需要有关于模型有多好或最不确定的地方的不确定性估计,这样你才能知道是否可以信任你的模型,并且在最好的情况下,知道如何去收集更多数据来改进你的模型。所有这些都朝着数字孪生的概念努力,原则上,它应该允许我们进行更好的工程设计,更便宜、更快、更安全。
因此,我们将再次有一个关于数字孪生工程的完整短期课程,讨论如何构建这些数字孪生模型,以及如何将它们用于更好的设计、测试和评估等。我真的很喜欢这篇由Cap等人发表在《自然·计算科学》上的论文中的图表,它很好地表示了物理资产与其数字孪生之间的这种二元性。
同样,物理学和机器学习,如果你要将数字孪生用于像飞机这样的东西,它最好具有物理性,最好将物理学“烘焙”到那个过程中。
基准系统的重要性
我们还将讨论基准系统的重要性。经典机器学习、图像科学、自然语言处理等领域的大部分进展,是因为我们拥有非常好的基准问题和数据集,社区可以用来测试他们的方法。因此,研究人员不必创建基准问题和机器学习算法,他们可以专注于机器学习算法的工作。我们越来越发现,我们需要那种用于动力学和控制、物理和工程问题的基准问题。所以我可能需要这些系统的静态数据集——在系统随时间演化的意义上它们不是静态的,但一旦我收集了数据,数据就不会改变,它是一个动力系统的静态数据集,可以是模拟的或实验的。但实际上,我希望为工程目的开发这些基准系统,我们实际上试图操纵系统的行为,我们实际上想用我们的机器学习模型控制流体。所以我需要能够与那个模拟交互,并实际用我的机器学习模型闭合回路。因此,我们也在那种交互式控制框架中开发基准问题。然后,理想情况下,我们会走向实际的活生生的信息物理系统,比如一个实际的实验室设备,你可以实时在上面训练你的机器学习模型。这更接近我们将要达到的数字孪生概念。同样,这将是一个关于所有现有基准的完整短期课程,物理信息机器学习基准需要哪些特征等等。这是一个重要的话题,我们将再次讨论,但我们需要思考如何测试我们的模型,以及什么是基本事实?在某些情况下我们是否有基本事实?

架构
我们已经讨论了第三阶段的重要性,实际上是架构以及我们用来训练这些架构的损失函数。但我们将涵盖许多非常重要的架构,比如ResNets和U-Nets,我们将涵盖傅里叶神经算子和一般的算子方法,我们将讨论SINDy和简约符号回归建模,我们将讨论物理信息神经网络、深度算子网络等等。这只是我们将要研究的一些架构的快速列举,但我们将花费大量时间,用整个视频甚至整个视频系列深入探讨这些非常重要的主题:如何构建这些损失函数?如何训练它们?它们在哪些应用上有效?我们如何实际编写代码并自己尝试?所以我们将真正深入研究很多这些应用,然后你可以实际使用这些来构建你自己的示例并自己尝试。

物理学的本质
再次强调,在整个系列中,我们将重新审视“物理学到底是什么?”这个概念。为什么我们想将物理学“烘焙”到我们的系统中?当我们试图从数据中学习物理学时,为什么需要将物理学“烘焙”到我们的系统中?那到底意味着什么?我们在学习什么?一次又一次,我们会发现,像守恒定律、不变量和对称性这样的事物,是我们最终封装物理学的一些方式。因此,我们将再次看到对称性在很多地方出现,例如在药物发现和蛋白质折叠中存在对称性,流体流动和机械系统、材料系统、量子系统中,对称性是物理学的基础。所以对称性、守恒定律和不变量将反复出现。同样,还有简约性或模型简单性的概念。


历史视角
在这个过程中,我们也不会忽视科学史和物理学史,因为这将为我们在这个现代机器学习时代提供许多可以学习的重要相似之处。例如,占星术和天文学之间的区别是什么?发生了什么变化?炼金术和化学之间的区别是什么?确实,当今机器学习中正在发生很多这样的相似之处,所以当我们进行这种新的物理信息机器学习时,我们可以从科学史中学到很多。

好的,这就是主题,这就是课程——物理信息机器学习。我们将有很多关于这些主题的简短、集中的模块。我希望这能融入一个更大的课程体系,我们希望在未来的某个时候在华盛顿大学实际提供学分。我希望你喜欢这个课程,这是我的热情所在,也是机器学习最重要的领域之一,这将日益成为你解决现实世界问题工具箱中非常强大的工具。好的,谢谢。


总结

在本节课中,我们一起学习了物理信息机器学习(PIML)的高级概述。我们首先明确了PIML的两个核心目标:将已知物理知识融入机器学习模型以提升其性能与泛化能力,以及利用机器学习从数据中发现新的物理定律。接着,我们系统地拆解了构建机器学习模型的五个标准阶段:1) 定义问题,2) 收集与整理数据,3) 设计模型架构,4) 构建损失函数,5) 优化训练。我们重点探讨了如何在这五个阶段的每一个环节中,巧妙地嵌入物理约束(如对称性、守恒定律)或利用物理原理(如简约性)来引导和改善学习过程。最后,我们预览了本系列课程将深入探讨的应用领域(如工程设计、数字孪生)、关键架构(如PINN、傅里叶神经算子)以及核心物理概念(如对称性与不变性)。物理信息机器学习是一个强大且快速发展的交叉领域,有望彻底改变我们解决复杂科学与工程问题的方式。
002:选择建模对象


欢迎回来。我们刚刚开始这个关于物理信息机器学习的系列讲座。本讲座的核心是探讨当我们了解物理知识时如何改进机器学习,或者如何利用机器学习从数据中学习物理。在上一次讲座中,我们讨论了机器学习的五个主要阶段,并且所有这些阶段都可以通过融入物理知识而受益。我们实际上也可以利用这些阶段来学习物理。因此,今天的讲座将聚焦于机器学习流程的第一个阶段:决定问题,即我们真正想要建模的是什么,或者我们机器学习模型的目标是什么。
起初,我认为制作这个视频会是最简单的。因为决定问题以及在哪里融入物理知识能有多复杂呢?但事实证明,我花了几个小时思考这个问题,每次我以为自己弄明白了,总会有新的想法涌现。这可能确实是所有阶段中最重要的一个。在这个阶段,科学方法、工程流程和设计过程仍然适用,即使你打算使用机器学习来构建模型。因此,这是任何模型构建过程中最基础的一步:决定你要建模的对象是什么、模型的目的是什么、你将如何使用它。在深入探讨“决定问题”这个第一阶段之前,我将先退一步,谈谈它如何与其他阶段相契合。
有时,我们对要解决的问题有清晰的认识。例如,我在做湍流建模,我知道存在一个闭合问题。像雷诺应力这样的东西,我们对其行为没有很好的数学模型,但我有一堆数据,我知道我将尝试用数据更好地建模这些量。
但有时,我并不确切知道问题是什么。我有一个模糊的概念,比如我想造一辆更好的赛车,或者一个更好的机翼。这还不够具体。因此,你必须深入思考:为了改进那个过程或实现那个大目标,我可能使用什么数据?你开始分解问题。也许你对适合这类问题和数据的架构类型有模糊的想法。但一旦你真正开始审视你能获取什么数据、数据的成本高低、数据量有多少以及可能的架构,你可能不得不回过头来完善问题陈述。我们经常发现自己沿着这条路走下去,甚至一直走到训练完模型,然后意识到它没有完全达到你的期望,或者性能不够好,或者不像你想象的那样有用。但在这个过程中你学到了很多,于是你回去完善你的问题陈述,现在你更清楚自己要建模什么了。
因此,我再次强调,在经典的工程和科学中,我们习惯于使用实验和数值模拟来设计新系统,比如iPhone、赛车或飞机。在工程设计和科学发现过程中,我们都习惯于使用模拟和实验。这与机器学习实验的设计并无太大不同。就像你会设计一个实验来回答某个问题,以服务于更大的目标一样,设计这种机器学习实验的方式完全相同。你会有一个假设:我认为我可以建模这个现象,比如升力作为不同机翼形状的函数。然后,你获取数据,实际构建模型,看看是否有效。你可能需要调整实验,可能需要完善问题陈述。所以,你在实验室和数值实验中积累的关于工程设计和科学发现的所有直觉,很多相同的原则在这里也适用。关于这一点,我还有很多要说的。我们将在最后回到这个图表,并重新审视我们学到的一些经验教训,以及关于决定一个好问题与坏问题的一些关键主题。这确实需要一些试错,很像建立一个实验或模拟来开始回答问题,但也许我们可以用数据做得更好。
现在,让我们聚焦于决定问题。在我的第一个视频中我说过,如果你正在建模物理系统的某个方面,你本质上就是在做物理和机器学习的交叉。你的机器学习模型应该捕捉一些物理知识,但这有点模糊。所以我想更深入地探讨我们可能面对的问题类型,以及其中的细微差别,比如学习是否适合解决这些问题,并从中总结一些关于如何正确设置问题陈述的经验教训。
我认为,总的来说,数据科学是从以数据为中心的视角提出和回答问题的过程。很多科学史都是由数据和观察驱动的,这与此并无太大不同。我非常喜欢下面这句引言,我认为它非常适合这个关于“我们建模什么、问题陈述是什么”的部分。这张幻灯片来自我的朋友Nathan Cotz,他喜欢在他的学术研讨会上引用它,我认为这正是我们需要思考的。
人们常常把机器学习看作问题的解决方案。很多时候,我看到人们仅仅因为能够构建机器学习模型就去构建它们。我认为这是错误的方法。毕加索的这句引言一针见血:“计算机是无用的,它们只能给你答案。”这与数据驱动模型的情况如出一辙。数据驱动模型是无用的,它们只能建模你的数据。你必须自己决定什么是正确的模型、什么是正确的保真度、什么是有用的模型以及你将如何在后续使用它。这是人类的工作。一旦你弄清楚了这真正重要的一环,那么训练模型本身可能就不是最具挑战性的部分了。
在查看一些例子之前,我们先过一些原则。首先,我们需要思考为什么一开始就需要一个机器学习模型。这将会是一个昂贵且耗时的过程,数据不便宜,训练模型也常常昂贵且耗时。因此,你最好理解为什么一开始就需要这个机器学习模型,以及你将如何使用它。这将极大地影响所有后续决策。我们讨论的不仅仅是任何普通的机器学习模型,而是真正应用于工程和物理系统的机器学习模型,这些系统受物理定律支配,比如设计材料或飞机,或者建模湍流等。
首先,机器学习真正至关重要并能将我们的能力提升到没有机器学习时无法达到的领域之一,就是学习新物理。有很多系统,我们对它们的工作原理有很好的理解,比如流体流动、摆锤和机械系统,我们有大量的控制方程。但也有许多系统,我们不知道其物理原理。例如,神经科学中,我们实际上没有大脑的控制方程;流行病学系统,甚至气候系统,都存在我们尚不知道如何建模的大块物理知识。但我们有大量数据,所以也许我们可以开始利用这些数据来改进和构建我们的第一性原理物理模型,以学习我们以前从未能够写下的新物理。这是机器学习的一个巨大机遇。然后,你或许可以像使用基于物理的模型一样使用这些模型,但你可以将其应用于更复杂的系统,在这些系统中,人类尚未能像发现F=ma那样发现物理定律。实际上,我的实验室和合作者小组的很多工作都属于利用机器学习发现新物理的范畴。
但这只是机器学习模型的众多用途之一。另一个使用或构建机器学习模型的原因可能是,有些系统或物理你实际上理解得很好,我们知道如何模拟或进行实验,只是成本非常高。比如模拟流体流动,或者模拟材料的所有尺度。原则上,我们有这些物理知识,也许模拟蛋白质折叠或某些生化分子,我们理解第一性原理物理,技术上可以模拟它们,但成本极其高昂。那么,我们能否使用机器学习来增强这些模型,帮助我们构建更快且仍然足够准确的代理模型,用于设计和优化等任务?比如,我们能否加速药物发现、材料设计或流体模拟?即使我们知道物理原理,但因为该物理模拟成本太高。
我在底部添加了第三个小要点,我认为这在后续讲座中会非常重要。机器学习模型通常(并非总是,但经常)本质上是自动可微的。这意味着你可以使用反向传播等方法计算输出对输入的敏感性,反之亦然。我们可以利用机器学习模型的这种自动可微性,将其应用于经典的工程设计和优化循环中。例如,如果我想对机翼或汽车等进行形状优化,我们或许可以利用这种我们已经用于训练神经网络等模型的自动微分技术,来进行更好、更快、更便宜的设计优化。稍后你会听到更多关于这方面的内容,这真的非常重要且有趣。
所以,学习新物理是合理的,有些东西我们还不理解,也许我们可以学习模型来封装或捕捉现有的昂贵物理。机器学习模型可能帮助我们更好地做到这一点,这完全说得通。还有一种介于两者之间的情况,我称之为捕捉多物理场相互作用。很多时候,我们擅长用单一类型的物理建模单尺度物理,比如模拟单一流体、轨道上的行星系统或简单材料。但当你开始增加复杂性时,比如多相流,或者模拟行星运动但涉及潮汐力和海洋等多物理场相互作用,情况就会迅速变得非常复杂。我最喜欢的一个例子来自加州理工学院Tapio Schneider小组的气候科学领域,那就是云物理。云的形成方式、冰晶、凝结、降水等所有这些物理过程,我们认为只是一个简单的东西,实际上是一个令人难以置信的多尺度、多物理场过程,我们远未达到能用第一性原理建模的程度。因此,我们有一些现有的模型,但有些部分的物理我们并不了解。捕捉这些多物理场相互作用,这种超越我们分析能力甚至模拟能力的复杂性,是机器学习实际上可以帮助我们做的事情。模拟或为这些非常复杂的多物理场系统建立实验通常超出了我们的能力范围,机器学习提供了一些帮助的方法。
实现这一点的一些方式包括:如果存在多物理场相互作用,而你理解其中一部分,你可以使用你理解的那部分物理模型,然后用机器学习来建模差异或剩余部分。我们稍后会详细讨论所有这些内容。
最后一点是,当我们拥有机器学习模型时,我们通常有机会用新数据更新这些模型。例如,F=ma不会改变。我在实验室建模一个摆锤时,那个方程不会改变。但随着物理系统随时间老化,也许轴承润滑变差,也许某天有风扇吹而另一天没有,也许在盛夏温度略有不同。如果你使用机器学习,就有机会用新数据、新信息更新这些模型。这对于数据同化、数字孪生等建模可能随时间变化的系统来说,是一个非常令人兴奋的机会。
所有这些都只是我们应该牢记的事情。为什么我们需要一个机器学习模型?是因为我们的物理未知、昂贵、非常复杂,还是可能发生变化?这些都是我们需要思考的。
很好,现在让我们看一些我正在谈论的例子,然后总结一些要点。
物理科学中经常出现的一项任务是超分辨率。超分辨率是图像科学中的一个概念,你有一张低分辨率图像,通过收集大量数据的统计信息,你可能能够学会如何将低分辨率图像填充成高分辨率图像。这对于物理应用非常重要。它可以帮助我们改进实验测量技术:如果我的实验测量保真度有限,我或许可以使用这些技术来提高分辨率。它可以加速数值计算:也许我可以在粗网格上模拟,并利用超分辨率的思想来加速高保真度模拟,获得更高分辨率。如今,人们正在气候模拟和流体模拟中使用这些思想。所以,这是你可能写下的物理类型问题的一个例子。我思考这个问题的方式是:如果我的任务是获取低分辨率数据并填充高分辨率细节,那么我已经知道我的训练数据将需要大量高分辨率-低分辨率数据对来训练那个模型。如果我没有用于训练的高分辨率数据,我就无法做到这一点。
其他你应该思考的事情包括:我知道这是一个物理系统,这是一股流体射流。是否存在执行超分辨率任务的方法,能够真正尊重物理定律,比如尊重质量守恒或动量守恒?如果我取一小块区域进行边界元守恒计算,它是否与物理相符?我能否通过融入这些物理知识来改进超分辨率?这些都是问题。老实说,作为一个社区,我们仍在努力弄清楚这些问题。但如果我们打算进行超分辨率并将这个流场用于某些下游任务,那么我希望这个流场实际上满足纳维-斯托克斯方程,这对于我作为一名工程师来说很重要。
其他任务,我们之前提到过,发现新物理是一个巨大的机遇。例如,如果我测量夜空、行星等数据,我能否真正发现开普勒定律,甚至更好的牛顿第二定律F=ma?我能否从观测数据中发现物理?我们将有一个完整的章节来讨论如何做到这一点,以及如何发现像这样的可解释模型。这里有很多信息,我可能会在描述中或上方添加链接。

这不仅仅是重新发现像F=ma这样我们已经知道的东西。如果我们的数据中存在一些我们无法解释的东西呢?我们能否开始发现新物理来解释数据中的差异?这在广义相对论中就发生过,对吧?水星凌日观测中存在一个微小差异,无法用F=ma解释,但可以用相对论给出的修正来解释。今天有很多这样的例子,也许我正在处理一个球形聚变反应堆中的等离子体,我的模型并不完美,但我有数据。我能否发现改进我的模型的新物理,从而让我能进行更好的控制和设计?所以,发现新物理在某种意义上也是一个问题陈述。
材料发现是另一个重要领域。我想加速材料发现过程吗?我想用机器学习来表征材料吗?我想用机器学习来寻找更好的设计空间进行参数化吗?当你设计一种新材料时,这是一个非常高维的优化空间,有很多可以调整的东西。所以,也许机器学习可以帮助我们学习低维模式,从而简化我们作为人类的搜索过程。机器学习在材料发现方面有很多机会。
另一个我认为非常重要且迷人的领域是计算生物化学或广义的计算化学。例如,理解蛋白质折叠、用于更好药物发现的药物设计、理解燃烧过程和其他化学反应。计算化学,特别是计算生物化学,是一个因机器学习技术而迅速发展的领域。
这里有很多内容需要展开。但同样,你应该思考一些任务:你的机器学习模型的实际用途是什么?通常,研究人员试图做的是加速他们用于模拟这些大分子在许多时间尺度上行为的高保真度代码,这些时间尺度非常快或非常长。他们使用机器学习本质上是为了构建代理模型,以加速这些计算,从而为我们带来更快的药物发现、更快的蛋白质设计等。在这方面已经有一些相当成功的案例,比如开发COVID疫苗(这不是COVID的图片)。开发COVID疫苗就依赖于这类加速计算框架。
所以,这里有很多很多内容。同样,我们知道这个系统受物理定律支配,存在守恒定律、量子力学和支配物理的规则。你希望你的机器学习模型也能尊重这些物理。
数字孪生和差异建模,我们将在很多上下文中详细讨论这一点。但同样,如果我有一个物理资产,出于很多原因,我可能想要一个描述其行为的数字表示。也许我想控制那个物体,我需要一个能让我进行模型预测控制的模型,这将是机器学习模型的一个很好的用途。也许我想了解那个资产如何随时间老化,我希望我的模型能用数据更新,这是机器学习用于数字孪生的另一个很好的用途。差异建模是另一个例子:也许我有一个用于这个机器人的第一性原理物理模型,但它有时似乎与实际不符,因为这个机器人存在非线性轴承颤振、风阻等各种因素,会导致实际设备与理想化物理模型之间存在微小差异。因此,我们或许可以建模这种差异,并闭合回路,使我们的数字孪生更准确。
其他我认为我们将详细讨论并且非常重要的内容,包括形状优化。形状优化是许多领域中非常重要且困难的工程任务。例如,构建人工心脏或心血管流动的手术干预、设计飞机机翼或一级方程式赛车的车身,或者你可能只是想让你横跨太平洋的运输船更省油,从而减少二氧化碳排放。在许多情况下,我们试图优化在流体中运动的物体的形状,以达到某种优化目标。例如,我们可能试图最大化升力并最小化阻力,或者最大化下压力等。有时我们的优化目标相对简单,有时则非常复杂。这是一个非常复杂的多目标优化问题的例子。
你可能会想:从大局来看,我想设计一个更好的机翼。那么,“更好”是什么意思?列出你所说的“更好”的含义:更省油、更灵活等等。你需要定义“更好”的含义。然后,今天设计机翼的挑战是什么?是因为模拟流体流动非常昂贵吗?是缺少某些物理知识吗?是什么阻碍我们今天进行我们想要的优化?这是一个我们可以开始集中精力应用机器学习模型的好地方。例如,如果我们能构建更好、更快的流体模拟器,我们就可以直接将该模块插入到这个形状优化设计流程中。
这里有很多内容需要展开,我们将详细讨论。但总的来说,形状优化是许多行业中的一个巨大问题。想想设计风力涡轮机或子弹头列车,所有这些本质上都是形状优化问题。但同样,这不仅仅是形状优化,不仅仅是拥有高升阻比。你还需要考虑所有其他因素:实际可用的材料是什么?它的重量会是多少?可靠性如何?维护是容易还是困难?在现实世界中,我们处理的是多目标优化问题。同样,原则上机器学习可以帮助我们解决这个问题。我可以构建一个模型,输出许多性能指标或关注量,然后我可以使用这个机器学习模型作为代理,来进行这种复杂的多目标优化。如果我的目标函数发生变化,比如五年后燃料价格与今天大不相同,或者我们有一种在某个维度上性能更好的材料,你可以调整你的目标函数,仍然可以在那个机器学习代理模型上进行优化。
这本质上就是数字孪生的思想。我们将详细讨论,我们将有一个关于使用这些物理和机器学习模型进行数字孪生建模的完整章节。这里的想法是,数字孪生包含不同保真度的模型层次结构。有些是来自传统模拟代码的非常粗略的模拟,有些是真正昂贵的高保真度模型,我们可能让这些机器学习模型处于中间,将这些不同保真度的模型连接起来。因此,在数字孪生中,我们将拥有混合的物理和机器学习模型。这确实意味着你的机器学习模型需要满足物理定律,它们需要能够与物理模型协同工作。同样,我们将详细讨论这一点。当我们谈论形状优化和多目标设计优化时,数字孪生为你提供了很大的灵活性。
同样,我想指出第三个小要点。这是一个人们经常忽略的微妙之处,但却是将机器学习引入这个建模过程中最重要的部分之一。如果我们有一个机器学习模型,比如一个神经网络,来描述这个数字孪生的某个部分,那么我们可以利用该神经网络的自动可微性。我们使用这种可微性来训练模型,通过反向传播损失函数信号来调整模型参数。我们也可以在实际的优化过程中使用它。如果我们试图优化这架飞机,或者优化一个风力涡轮机,如果我的模型是自动可微的(就像大多数机器学习模型一样),我或许能够更轻松、更便宜地进行伴随优化。我们也会详细讨论这一点。但同样,你需要思考你的最终目标是什么:是设计目标吗?是建模目标吗?还是仅仅为了加速模拟以用于某些下游目的?所有这些都很重要。
我们将在下一次关于“数据从何而来”的讲座中讨论这一点,大致是关于数据整理。但粗略地说,如果我实际上在设计一个复杂系统,比如一架新飞机、一辆汽车或一个风力涡轮机,现实中我不只有一个数据源。我将拥有许多不同保真度的数据源,随着我沿着这个金字塔向上,数据可能越来越昂贵。我可能有很多低保真度模拟,较少的高保真度模拟,更少的昂贵实验室测量,最终我实际上会建造这个东西并试飞它,或者在现场收集数据,这些将是最昂贵的。所以,再次强调,这个数字孪生的目标,也许我想做的是构建一个代理模型,它接收这些数据,并能够预测该系统在不同使用场景下的行为。因为这样,我就不必花费大量资金在实际系统中进行调整和进行所有这些测试。如果我的代理模型足够好,我或许可以在这种虚拟世界中完成很多优化工作。这就是我们可能想用机器学习模型做的事情之一。
这种做法的好处示意图是:你拥有所有这些不同来源的数据,有些更昂贵、更准确,有些更便宜但误差更大。你会希望你的代理机器学习模型能够接收所有这些数据,并构建一个兼具两者优点的模型,即成本较低、误差也较低。这就是一个好的机器学习模型可以为我们做的事情。你可以将其用于形状优化、材料设计等任务。
很好,现在让我们更技术性、更数学化一些。我们几乎完全要处理随时间变化的系统。这并非总是如此,例如在材料发现中,这可能不是一个时变过程,尽管制造复合材料需要在高压釜中烘烤,那是一个时变动力学过程。但是,如果我使用机器学习来模拟气候、模拟湍流流体流动、模拟机翼或汽车上的流动,归根结底,它是一个动力系统,是一个微分方程。可能有一个微分方程支配着这个过程。这只是一个洛伦兹系统的示意图,红色的小立方体代表初始条件,当我传播它时,你会看到那些初始条件扩散开来,这是混沌的一个例证。
因此,如果我试图用机器学习对这个系统建模,我有很多选择,而这些我们并不经常讨论。例如,我是试图建模微分方程的右侧吗?也许我可以测量系统的状态,即X、Y和Z坐标随时间的变化。我希望我的机器学习模型构建一个函数F(x)的模型表示,以便我可以积分那个机器学习模型并预测未来吗?我希望它是离散时间的连续微分方程,还是离散时间步进器?这样,如果我在时间T或时间K有一个点,我可以构建一个机器学习模型F,将其向前推进一个离散的ΔT,然后再一个ΔT,如此反复。即使这也是一个你必须做出的选择,而且这两者之间存在巨大差异。整个ResNet架构属于后者,而神经ODE架构属于前者。它们解决的是相关但不同的问题。学习支配你数据的微分方程是一个机器学习问题,有时这就是我们试图做的事情。
或者,也许我知道这是一个机械系统(这个不是),但也许我正在建模的系统是一个机械系统。也许我知道它受F=ma支配,力等于质量乘以加速度。所以我知道我的加速度等于某个势函数梯度的负值。也许我的测量机器学习任务是学习那个势函数V。所以,不是学习微分方程,也许是学习描述系统的势。在计算化学中,也许我正在尝试学习自由能势之类的东西。也许我正在尝试学习哈密顿量,我知道我的系统是哈密顿系统,所以我想学习哈密顿量,或者我想学习拉格朗日量。所有这些都是问题陈述,根据我们对物理的了解,它们各有独特的优缺点。在这个例子中,我认为这是一个很好的例子:将系统建模为随时间向前演化可能有用,但因为系统是混沌的,如果我对初始条件有微小的不确定性,它将在未来被极大地放大。因此,要求对系统未来的行为进行确定性预测可能期望过高。也许我想要的是给定某个初始条件,在未来某个时间处于某个位置的概率。
这又很像天气与气候的区别。如果我想模拟天气,如果我想知道五天后的天气是什么样子,那是一条轨迹,我必须准确预测那条轨迹。但如果我想知道50年后的气候会是什么样子,我关注的是通过这个动力系统的概率分布。所以,我们将更多地讨论所有这些内容,但这确实引出了像不确定性量化和混沌动力学这样的问题,它们需要不同的描述和不同的模型。在某些系统中,我可能试图建模概率而不是确定性动力学。很好,是的,这基本上就是我刚才所说的:混沌改变了你能回答和不能回答的问题类型。所以,如果你知道你的系统是混沌的,那么你设置问题陈述的方式——预测你的系统100年后的精确轨迹——就是一件用任何方法(模拟、实验或机器学习)尝试建模都很愚蠢的事情。相反,也许我们应该尝试学习概率或分布之类的东西。所以你必须思考:对你系统物理的了解确实在很大程度上告诉了你如何用机器学习模型来建模它。

机器学习不是魔法,它不会让你做那些数学上不可能的事情,比如确定性地预测混沌系统远期的未来。同样,气候建模是一个很好的例子。人们正在投入大量精力,利用机器学习来改进气候建模,通过加速流体模拟、改进不确定性估计、传播概率密度等。气候建模问题有很多很多不同的方面。我从微软的ClimaX小组引用了这个图表,你可以看到有所有这些不同的任务:降尺度、临近预报、次季节预测等。所有这些任务都有不同的数据要求、不同的架构,以及你可以要求机器学习模型做的不同事情。因此,了解系统的物理知识对于获得一个好的机器学习模型仍然非常重要。这确实指出了对基准系统的需求。
我已经提到过这一点,我们将有一个关于基准系统的更长的系列。我们需要基准系统,就像图像分类中的ImageNet一样。我们需要类似的基准系统用于动力系统、工程系统、控制系统,以便我们可以测试我们的机器学习模型,确保它们真正解决了我们希望它们解决的任务,并了解哪些任务适合哪些模型,反之亦然,对于流体或机械系统,我们可以提出哪些问题。



我经常思考流体力学,这是我的专业领域。我与KTH的Ricardo和USAa合写了一篇论文,他主导了这项工作,论文主要探讨了机器学习如何帮助我们进行计算流体力学。就像我们讨论过的,我们可以加速模拟,这是我们可能想要的任务。我们可能想要改进湍流建模,那些我们在湍流中不知道如何建模的东西。我们可能想要发现新物理或降阶模型。所有这些都是在用计算机建模流体这类问题时,你可以采用的不同方法,而机器学习可以在其中提供帮助。




我最喜欢的例子之一是这个现在堪称经典的论文(在机器学习领域,一篇八年前的论文就算经典了),由Julia Ling和她的合作者完成,他们建模了湍流闭合问题。有一个湍流模型叫做雷诺平均纳维-斯托克斯方程,如这里所示。这些黄色的雷诺应力项,我们没有非常好的模型来描述它们,我们必须近似它们,这就是闭合问题。我们必须从我们可以测量的东西中近似它们。Julia和她的合作者意识到,这是一个使用机器学习的绝佳机会。这是难以建模但拥有大量数据的东西。因此,我们可以开始集中精力让机器学习模型预测这些量,并且从构造上讲,它将是一个物理模型,因为它建模的是我们知道如何在方程中物理地进入的东西。他们更进一步,实际上约束了他们的架构,以确保他们的预测满足已知物理必须满足的某些对称性。这是我最喜欢的论文之一,我喜欢向我的学生传达的道德故事是:湍流闭合建模、雷诺平均纳维-斯托克斯建模是一个领域,直到20世纪70年代和80年代,我们取得了巨大进展,有很多基于第一性原理物理的分析进展,关于这些项必须意味着什么、它们遵循什么对称性。但在某个时刻,研究人员碰壁了,因为这些是非常难以近似的函数。多年来,人们仅用纸笔无法取得进一步进展。这是一个很好的例子,说明机器学习可以真正提供帮助。许多聪明人将我们带到了某个点,我们对物理有了很多部分了解,比如需要满足的对称性。但实际的表达式非常复杂,以至于他们无法用纸笔以封闭形式写下来。这正是机器学习擅长的完美例子,因为它本质上给了你用足够的数据近似任意复杂函数的能力。所以,对于这些非常复杂的函数,我们可以获得一个非常准确且满足那些对称性的神经网络表示。这是我最喜欢的关于你能做什么的例子之一。
我们已经提到了超分辨率问题。超分辨率原则上可以帮助你使用大涡模拟等方法进行更快的湍流建模,大涡模拟是高保真度流体模拟和气候模拟的主要方法。
好了,谈论机器学习在解决这些问题中有用的例子很有趣,但同样重要甚至更重要的是,谈论何时不应该使用机器学习来解决问题。我经常看到这种情况,我不会点名,也没有任何评判或羞耻感,因为我们都有过这种情况。但很多时候,我们会选择一个系统,那里有一个完美、简单、易于使用的模型。例如,我可以用一个简单的二维线性方程组,使用像动态模态分解这样简单的方法来模拟这个流体流动。你可以争论这是否算机器学习,但简单的机器学习可以描述这个系统。我见过一些论文,研究人员使用一个庞大的深度神经网络来建模这个系统。这个东西可能有数百万个自由参数,训练需要很长时间,需要大量数据。是的,它可以模拟这个流体流动的演化,但这是巨大的过度杀伤。对于这个问题,使用这个工具毫无意义。因此,同样重要的是要问自己:我需要机器学习来解决这个问题吗?我的基于物理的模型足够好吗?线性回归等更简单的方法可行吗?如果线性回归可行,请使用线性回归。
我不知道你是否收到过Peloton健身自行车或那些由人工智能驱动的新型智能健身中心的广告。我不想对此负责,但我猜很多“由AI驱动”实际上只是线性回归。何时使用和不使用机器学习与如何设置问题同样重要。同样,这里有很多相似之处。


在我们了解天文学、开普勒定律、牛顿定律和爱因斯坦相对论之前,在我们真正有描述天文学的物理之前,有很多糟糕的占星术。本质上,人们问了错误的问题。他们试图用数据建模那些无法建模的东西,试图解决错误的问题。比如,我是否应该在这一天结婚?我是否会倒霉?我应该待在家里吗?行星的运动真的会影响这些事情吗?现在知道了F=ma,我并不真的相信这些。但绝对有一些问题,我们拥有的数据确实会影响它们,确实能告诉我们何时发射火箭去火星,确实能告诉我们何时播种以获得基于季节的最大产量。有很多有用的问题可以用这些数据建模,但也有很多愚蠢的问题可以建模。所以,你不想成为水晶能量组,你想用你的机器学习模型做真正的物理。
好的,这基本上只是第一层,这是冰山一角。我们甚至还没有涉及数据、架构、损失函数或优化,但它已经变得很有趣了。但你会发现,决定问题可能是最重要的阶段。即使你从问题开始,并沿着这个流程走下去,你可能也必须回过头来,至少调整问题、调整数据。这不是一个线性的过程,所有这些阶段之间都存在耦合。这两者之间的联系出人意料地紧密。决定问题和拥有什么数据之间有很多联系。你可能不得不根据你能获取的数据来完善问题,反之亦然。
但再次强调,这真的非常重要。你应该思考不要抛弃我们所知道的关于物理和工程设计的一切。就像我们试图解决一个物理问题或理解物理中我们不理解的东西一样,就像我们设计一个工程系统一样,当我们决定用机器学习建模什么问题时,我们需要同样的原则。
好的,谢谢。
003:训练数据遴选


在本节课中,我们将探讨物理信息机器学习的第二阶段:如何遴选和整理用于训练模型的数据。数据是机器学习的基石,而融入物理知识可以极大地影响我们收集、选择和使用数据的方式。我们将讨论数据多样性、坐标系统、仿真与实验数据对比、数据偏见、罕见事件以及数字孪生等关键概念。
数据多样性与物理约束

上一节我们介绍了物理信息机器学习的基本框架,本节中我们来看看数据遴选的具体策略。数据的形式多种多样,没有一种放之四海而皆准的方法。关键在于思考如何将物理知识融入数据整理过程。
一个核心观点是:融入物理知识通常可以减少对数据量的需求。例如,对于一个昂贵的实验,获取大量数据样本非常困难。传统的机器学习,尤其是大型神经网络,通常需要海量数据。但如果能通过物理知识来约束神经网络,缩小其搜索空间,就常常可以用少得多的数据成功训练模型。这对于数据样本稀少的物理或工程系统至关重要。
利用对称性进行数据增强
在数据整理阶段,将物理知识融入模型的一个直接方法是数据增强。如果你知道所研究的系统具有某种对称性(如平移不变性或旋转不变性),就可以利用这些对称性来扩充数据。

例如,如果你认为要建模的流体系统具有旋转不变性(即旋转系统不会改变其物理本质),那么原则上你可以通过旋转原始数据来创建新的数据副本,从而丰富数据集。这样,有限的数据就能发挥更大作用,训练出更强大、更通用的模型。这种方法在经典机器学习和物理工程系统的机器学习中已应用多年。

坐标系的重要性
测量数据所使用的坐标系极其重要,这是人类专业知识和物理直觉能在机器学习过程中发挥巨大作用的地方。
以一个经典图示为例,它展示了太阳系的日心说和地心说模型。地心说以地球为宇宙中心,而日心说以太阳为中心。关键在于:如果我试图训练一个机器学习模型来预测这些彩色点的运动,在地心坐标系下,模型将需要处理复杂得多的曲线,需要更多项来解释物理,训练难度大大增加。而在日心坐标系下,物理规律更简洁,模型训练起来就容易得多。
因此,如果你了解正确的坐标系,选择合适的测量坐标系能为你的机器学习模型提供一个巨大的先发优势。反之,如果你不知道正确的坐标系,可以尝试不同的坐标变换。哪个坐标系下的模型训练更快、误差更低,就可能暗示了哪个是更合适的坐标系。发现正确的坐标变换本身就是一个重要的研究问题。
仿真数据与实验数据
你的数据是来自仿真还是实验,会极大地影响数据的性质及其在机器学习模型中的使用方式。
以下是两者的主要对比:
- 仿真数据:通常能提供更丰富的空间信息和高分辨率的空间场,这些在实验中很难获得。但仿真往往计算成本高昂,难以长时间运行或覆盖大量参数。
- 实验数据:可能无法提供完整的流场信息,但可以长时间运行,获得长时间序列的数据,尽管空间测量点可能较少。
此外,仿真数据基于已知的物理原理(如 F = ma 或纳维-斯托克斯方程)。如果仿真中做了近似或忽略了某些未知物理,这些偏差就会 inherent 地存在于数据中。因此,实验数据仍然是黄金标准,它能揭示模型假设的缺陷。例如,一个真实摆锤的运动可能包含线性摩擦、轴承间隙、非线性风阻等细微效应,这些在基于欧拉-拉格朗日方程的简化仿真中很难完全体现。
很多时候,我们会面临混合数据的情况:拥有大量基于简化物理的仿真数据,以及少量但更贴近真实物理的实验数据。机器学习可以作为一个通用的数据处理框架,帮助我们融合来自不同来源、不同模态、不同保真度、不同时空分辨率的数据。

数据代表性、泛化与设计优化
在考虑数据时,需要思考:你的数据在时间、空间和参数上是否足够丰富和具有代表性?你是否在尝试建模一个已经被建模过的东西,从而可能将先验偏见带入模型?
这一点在设计优化中尤为重要。我们常常试图设计一个前所未有的新设备(如性能更优的飞机机翼)。显然,这个最优的设计目标并不在你的训练数据中(如果在,你就不需要设计它了)。
想象一个设计参数空间,每个点代表一种设计(如不同的机翼形状),对应不同的性能(如升力和阻力)。我们寻找的是训练数据分布之外的、具有更好性能的新设计点。这意味着,对于设计优化,我们需要机器学习模型能够泛化到训练数据之外。
大多数机器学习模型擅长在已见过的数据点之间进行插值,但要获得革命性的新设计,需要模型能够外推。实现外推泛化的一个关键方法,就是将物理知识(如对称性、守恒律)融入模型,并确保模型是简洁的(如使用稀疏性促进的正则化项)。这样,模型就更有可能对未见过的案例做出合理预测。

数据偏见与罕见事件
数据偏见是另一个需要重点考虑的问题。例如,在药物发现或材料科学中,训练数据通常只包含那些“成功”的样本(如实际有功能的蛋白质)。但存在一个近乎无限的“失败”样本空间,它们不会出现在训练数据中。这种偏见会使模型倾向于发现与传统类似的东西,难以实现真正的创新。

罕见事件是数据偏见的另一种形式。例如,海洋中的畸形波是破坏性极强但极其罕见的事件。在海洋波浪数据中,99.999% 的数据都不是畸形波。如果直接用这样的数据训练模型,模型很容易通过专注于预测“普通”波浪而获得很高的准确率,完全忽略罕见但重要的畸形波。

处理这类问题,需要采取措施平衡数据(例如人为增加罕见事件的权重),并在机器学习过程中融入物理知识,以确保动力学被准确捕获,从而能在模型中观察到这些罕见事件。
微弱信号与隐藏变量
有时,我们需要建模的信号非常微弱。例如,水星近日点进动现象,牛顿力学解释了其 99.9% 的运动,而广义相对论只需修正那剩下的 0.1%。如果训练一个仅以最小化误差为目标的机器学习模型,它几乎肯定会选择牛顿定律,因为要捕捉那微小的相对论效应信号非常困难。这凸显了人类逻辑和科学方法在识别和解释微弱信号方面的重要性。
隐藏变量在物理和工程系统中是普遍存在的。我们通常无法测量系统中所有重要的变量,而只能基于部分信息建立模型。例如,在研究大脑活动或流体绕机翼流动时,很多状态变量是无法直接测量的。
机器学习为解决这个问题提供了强大工具。例如,对于洛伦兹系统,我们可能只测量到 x 坐标的时间序列。通过设计特定的神经网络架构,我们可以学习一个坐标变换,从单个测量中推断出系统的完整状态,并学习描述该状态演化的微分方程。这展示了如何利用部分数据和机器学习来填补信息空白。

数字孪生与主动学习
数字孪生是物理与机器学习结合的一个重要工业应用,旨在为物理资产构建数字模型,以改进优化、设计和控制。数字孪生的生命线是真实世界的数据。
理想的数字孪生构建涉及多保真度数据源:从廉价低精度的仿真,到昂贵高精度的仿真和实验,再到最终的实物测试数据。所有这些数据都将用于构建机器学习模型(即数字孪生)。
更先进的概念是主动学习。我们不仅希望数字孪生能给出预测(如某机翼设计的升力),还希望它能估计预测的不确定性。然后,可以建立一个反馈回路:如果数字孪生对某个有前景的设计不确定性很高,它可以主动请求在该设计点收集更多数据(可能是不同保真度的仿真或实验)。这种数据生成方式更高效、成本更低,是未来设计复杂系统的趋势。

总结
本节课我们一起探讨了物理信息机器学习中数据遴选阶段的多个关键方面。我们了解到,融入物理知识可以减少数据需求,通过对称性进行数据增强是有效手段。选择合适的坐标系至关重要,而仿真与实验数据各有优劣,常需结合使用。我们特别强调了数据代表性和泛化能力对于设计优化的重要性,并指出了数据偏见、罕见事件和微弱信号带来的挑战。最后,我们介绍了利用机器学习处理隐藏变量的潜力,以及数字孪生结合主动学习的未来方向。数据整理是一个需要反复迭代的微妙过程,它连接着你要解决的问题和你能获取的数据,是构建成功模型的基础。

接下来,我们将进入更引人入胜的架构、损失函数和优化部分,期待与你共同探索。
004:架构设计 🧠

在本节课中,我们将要学习物理信息机器学习的第三阶段:架构设计。我们将探讨如何通过选择或设计特定的机器学习架构,来构建本质上更具物理特性、能发现新物理规律或将已知物理知识嵌入学习过程的模型。架构设计是整个机器学习流程中非常关键且有趣的一环。
什么是架构?🔧
上一节我们介绍了物理信息机器学习的整体流程,本节中我们来看看什么是“架构”。在机器学习中,“架构”指的是模型的结构或框架,它定义了模型如何从输入数据映射到输出预测。
本质上,架构定义了我们搜索的函数空间。一个机器学习模型通常接收输入 X,并试图构建一个函数 F 来预测我们感兴趣的输出 y。这个函数 F 由可调整的参数 θ 参数化。例如,在神经网络中,θ 代表所有权重。
核心公式:
y ≈ F(X; θ)
不同的架构(如全连接网络、自编码器、支持向量机)定义了不同的函数空间。我们的目标是通过优化算法和损失函数,在这些空间中找到最能拟合观测数据 (X, y) 的那个函数 F。选择架构,就是在约束可能用于描述输入输出关系的函数空间。
物理在架构中的体现 🌌
当我们谈论“物理”时,在机器学习的语境下,我们通常希望模型具备以下特性:
- 可解释性与泛化性:像
F=ma这样的物理定律既简单可解释,又能广泛适用于不同场景(如苹果下落和火箭发射)。 - 简约性与简单性:遵循爱因斯坦的名言“一切都应尽可能简单,但不能过于简单”。简约的模型通常能抓住物理核心,避免过拟合,从而更具泛化能力。
- 对称性、不变性与守恒律:这是物理学的基石。例如,物理定律通常具有平移、旋转不变性;许多偏微分方程源于质量、动量或能量守恒。
因此,设计“物理信息”的架构,意味着选择或构建一个函数空间,该空间能天然地促进、强制执行或便于发现这些物理特性。
架构设计实例 🛠️
以下是几种在物理信息机器学习中常见且有趣的架构示例,每种都通过其结构隐式或显式地融入了物理假设。
1. 自编码器与稀疏识别(SINDy)🔍
这是一个将两种架构结合以发现物理的经典范例。
- 自编码器:假设物理系统是低维的。它通过一个“瓶颈”层,将高维观测数据(如图像序列)压缩到低维潜在空间(如摆的角度和角速度)。
- SINDy(稀疏非线性动力学识别):假设支配动力学的微分方程是稀疏且简约的。它在一个可能包含多项式、三角函数等的庞大函数库中,寻找最少的项来描述潜在变量的动力学。
通过结合两者,我们可以从高维数据中自动发现低维坐标及其简约的支配方程。
核心思想:通过架构选择,同时促进模型的低维性和简约性。
2. 定制张量层(如 Galilean 不变网络)🌊

在湍流建模中,Julia Ling 等人设计了一种具有定制输入层的神经网络架构。该架构通过其特殊的张量运算结构,确保了无论输入数据来自哪个惯性参考系,其输出的雷诺应力模型都自动满足伽利略不变性。
核心思想:通过精心设计的架构,将重要的物理不变性直接内建到模型中,从而减少所需数据量并提升泛化能力。
3. 残差网络(ResNet)与 U-Net 🕸️
- ResNet:通过引入“跳跃连接”,其每个残差块的功能近似于一个数值积分器(如欧拉法)。这种架构天然适合处理随时间演化的动力学系统数据。
- U-Net:其编码器-解码器结构带有跳跃连接,隐式地假设了真实世界数据(如图像、物理场)具有多尺度的空间结构。这使得它在图像分割、超分辨率等任务上非常有效。
核心思想:通过架构设计,融入对数据演化方式或空间结构的物理直觉。
4. 傅里叶神经算子(FNO)📐
这种架构直接在傅里叶域进行学习。它基于一个物理观察:许多物理场(如流体速度、温度场)在傅里叶域中具有紧凑且高效的表示,并且天然具有多尺度特性。FNO 的傅里叶层隐式地融入了这一物理假设。
核心思想:利用对物理场频谱特性的先验知识来设计高效的学习架构。
5. 图神经网络(GNN)🕸️
GNN 非常适合描述由实体及实体间相互作用构成的系统,如多体系统、分子动力学、网格上的物理模拟。其架构核心是“消息传递”机制,它假设一个实体的状态更新取决于其邻居的状态。
核心思想:通过架构直接编码系统的交互结构,并假设物理规律在局部是相似的,从而能够高效模拟复杂物理。
对称性与等变性:架构设计的核心数学概念 ⚖️
对称性是物理学的核心,也是将物理融入机器学习架构的最有力数学工具之一。这里有两个关键概念:
- 不变性:模型输出
F(x)在输入x经过某种变换G(如旋转、平移)后保持不变。即F(G(x)) = F(x)。例如,图像分类中,“狗”的标签不应因图片旋转而改变。 - 等变性:模型输出会随着输入做相同的变换。即
F(G(x)) = G(F(x))。例如,在图像分割中,如果输入图像旋转了,分割出的掩膜也应相应旋转。
核心思想:通过设计具有等变性或不变性的架构,我们可以将已知的物理对称性直接构建到模型中。这能极大减少训练所需的数据量,并显著提升模型的泛化性能。卷积神经网络(CNN)的平移不变性就是一个早期成功例子。现在,研究者们正在为更复杂的对称群(如旋转群)设计等变网络。
架构与损失函数的关系 🔗
需要强调的是,架构设计与下一阶段(损失函数设计)紧密耦合。
- 特定的架构通常需要搭配定制的损失函数来训练(例如,自编码器使用重建损失)。
- 一些方法(如物理信息神经网络 PINNs、拉格朗日神经网络)的核心思想虽然主要通过损失函数体现,但也依赖于神经网络架构能够方便地计算导数等特性。
因此,架构和损失函数共同决定了我们如何将物理知识注入机器学习模型。
总结 📚
本节课我们一起学习了物理信息机器学习的第三阶段——架构设计。我们了解到:
- 机器学习架构定义了我们搜索的函数空间。
- 通过选择或设计特定的架构,我们可以将物理先验知识(如低维性、简约性、对称性、守恒律、多尺度结构)嵌入模型中。
- 这样的“物理信息”架构能够帮助我们用更少的数据进行学习,并得到泛化能力更强、更可解释的模型。
- 对称性和等变性是连接物理与架构设计的核心数学概念,是当前研究的热点。

在接下来的课程中,我们将深入探讨损失函数设计,并详细研究本节课提到的各种具体架构及其应用案例。
005:构建损失函数

在本节课中,我们将学习如何为机器学习模型构建损失函数,以将物理知识嵌入到学习过程中。这是物理信息机器学习中最常用且最直接的方法之一,能有效提升模型的泛化能力、学习效率和样本效率。
损失函数的作用
上一节我们讨论了模型架构,本节我们来看看如何通过损失函数来引导模型学习物理规律。损失函数定义了模型预测与目标之间的差距,是训练过程中优化的目标。通过精心设计损失函数,我们可以将已知的物理定律(如守恒律、偏微分方程)作为约束加入,使模型学习结果更符合物理规律。
以下是几种将物理知识融入损失函数的核心方法。
1. 物理信息神经网络
物理信息神经网络是一种巧妙的方法,它在标准的数据拟合损失之外,增加了一个基于物理方程的损失项。
- 核心思想:假设我们用一个前馈神经网络来预测某个物理场(如流体速度场
U、V、W和压力场P)。除了让预测值匹配训练数据(数据损失),我们还可以利用现代框架(如 PyTorch、JAX)的自动微分功能,计算网络输出对输入(空间、时间)的偏导数。 - 物理损失项:然后,我们增加一个额外的损失项,该损失项衡量网络预测的物理量在多大程度上违反了控制该系统的偏微分方程(例如纳维-斯托克斯方程)。公式表示为:
总损失 = 数据损失 + λ * 物理方程残差
其中,λ是一个超参数,用于平衡两项损失。 - 优势与局限:这种方法允许用更少的数据训练出更符合物理的模型。但需要注意的是,物理损失项只是“促进”而非“强制”方程被精确满足,最终模型是数据拟合与物理约束之间的一个折衷。
2. 促进守恒律
类似地,如果我们知道系统必须满足某个守恒律(如质量守恒),可以直接将其作为损失项加入。
- 具体示例:对于不可压缩流体,速度场
U的散度必须为零:∇·U = 0。我们可以在损失函数中加入一项||∇·U_预测||²,以促进模型预测满足不可压缩条件。 - 效果:研究表明,加入此类守恒损失项的模型,能更好地捕捉精细结构,并更准确地保持物理量(如质量)守恒。
3. 架构与损失函数的协同
模型的物理特性往往通过架构和损失函数共同实现。以拉格朗日神经网络为例:
- 架构角色:网络被设计为学习系统的拉格朗日量
L。 - 损失函数角色:训练时,损失函数要求由学到的
L通过欧拉-拉格朗日方程推导出的动力学,必须与实际观测数据匹配。这确保了整个架构确实表现为一个拉格朗日系统。
4. 通过范数促进简约性与可解释性

物理学长期遵循“简约性”原则,即用尽可能简单的模型描述现象。在机器学习中,我们可以通过损失函数中的特定范数惩罚来促进模型的简约性。
- L2范数与低维性:L2范数(欧几里得距离)常用于促进模型的低维表示。例如,在自编码器中,我们用L2重构误差来学习数据的一个低维潜在空间。
- L1范数与稀疏性:L1范数(曼哈顿距离)能促进解的稀疏性,即让模型中的大多数参数为零。这在学习动力学方程时非常有用。
- 应用示例:在一个结合自编码器和动力学学习的模型中,可能会同时使用L2范数损失来确保低维编码的重构质量,并使用L1范数损失来确保学到的微分方程尽可能简洁(项数少)。

5. 稀疏识别与模型选择
稀疏识别非线性动力学 方法是一个直观的例子,展示了损失函数中的范数选择如何直接影响模型的物理性。
- 问题设定:假设我们有系统状态
X随时间变化的数据,希望找到一个微分方程Ẋ = Θ(X)Ξ来描述它,其中Θ(X)是候选函数库(如多项式、三角函数),Ξ是系数矩阵。 - 损失函数设计:我们不仅希望模型拟合数据(使用L2损失衡量误差),还希望模型系数
Ξ稀疏(即多数为零)。这可以通过在损失函数中加入L1正则化项来实现:
损失 = ||Ẋ - Θ(X)Ξ||₂² + λ||Ξ||₁ - 平衡准确与复杂:超参数
λ控制对复杂性的惩罚力度。通过调整λ,我们可以在“欠拟合”(过于简单)和“过拟合”(过于复杂,如包含81个项)之间找到“金发姑娘区”,即那个用最简单且足够准确的模型描述数据的平衡点。
6. 在损失函数中嵌入对称性
物理系统通常具有对称性(如旋转对称、平移对称)。除了通过数据增强来学习对称性,我们也可以将其直接编码进损失函数。
- 实现方式:例如,如果系统具有镜像对称性,即输入
x和-x应产生相同的输出,我们可以在损失函数中添加一项:||F(x) - F(-x)||²。这相当于在损失函数中进行“虚拟”数据增强,促使模型学习这种对称性,而无需显式复制训练数据。
总结

本节课中,我们一起学习了如何通过精心设计损失函数,将物理知识嵌入机器学习模型。我们探讨了多种方法:
- 添加基于控制方程的物理损失项。
- 引入守恒律作为约束。
- 利用L2和L1范数分别促进模型的低维性和稀疏性,从而获得更简约、可解释且泛化能力强的模型。
- 将对称性要求直接编码进损失函数。
损失函数为我们提供了“引导”模型学习物理规律的灵活手段。下一节,我们将讨论优化过程,它与损失函数紧密相关,是调整模型参数以最小化损失函数的关键步骤。通过约束优化等技术,我们甚至能够更严格地“强制”模型满足物理规律。
006:采用优化算法


在本节课中,我们将探讨物理信息机器学习的第五个阶段:采用优化算法来训练机器学习模型。我们将了解如何将物理知识直接嵌入到优化步骤中,从而获得更符合物理规律的模型。
概述
我们已经介绍了机器学习的五个阶段,并讨论了在每个阶段嵌入物理知识的机会。本节将聚焦于第五个阶段——优化算法。一旦确定了模型、问题和训练数据,接下来的架构选择、损失函数构建和优化算法应用这三个步骤通常是紧密相连的。优化算法的任务是调整架构参数,以最小化在数据上平均的损失函数。我们将看到,通过改变优化算法本身,我们可以更严格地将物理约束融入模型。
约束优化:以流体建模为例

上一节我们讨论了损失函数,本节我们来看看如何通过优化算法直接施加物理约束。第一个例子来自Jean-Christophe Loiseau的工作,展示了如何将约束优化与机器学习结合,用于流体建模。
在标准的稀疏识别(SINDy)建模方法中,我们试图找到一个稀疏的系数向量 C,使得库函数矩阵 Θ 的列线性组合能近似表示状态导数(如 ẋ, ẏ, ż)。标准的做法是构建一个包含模型误差和稀疏性惩罚项的损失函数进行最小化。
然而,对于不可压缩流体流动,从第一性原理可以推导出一组必须满足的等式约束条件(例如能量守恒)。Jean-Christophe Loiseau指出,与其仅仅将这些约束作为惩罚项加入损失函数,不如直接进行约束最小二乘优化。这样,我们可以在精确满足这些物理约束的前提下,最小化模型误差。
具体来说,他使用了KKT(Karush-Kuhn-Tucker)条件来求解这个约束优化问题。这种方法比在损失函数中添加惩罚项更强大,因为它能保证得到的模型严格满足物理定律(如能量守恒),而不会让误差项和约束惩罚项在优化中相互冲突。
物理信息动态模式分解(piDMD)
另一个通过改变优化算法来提升模型性能的领域是物理信息动态模式分解(piDMD),由Peter Baddoo等人提出。
在某些情况下,我们从物理知识中知道系统模型应具有特定的对称性(例如厄米性)。piDMD的核心思想是,在优化过程中直接约束搜索空间,只寻找满足特定对称性(即位于某个矩阵流形上)的线性动力系统模型 A。
标准的DMD本身也是一种约束优化,它搜索的是低秩(rank-R)的矩阵 A。piDMD则进一步改变了搜索的矩阵空间,将其约束到具有特定对称性(如厄米、三对角、循环等)的矩阵流形 ℳ 上。
对应的数学优化问题称为Procrustes问题。通过这种流形约束优化,piDMD能够比标准DMD更准确地捕捉系统的真实本征结构。当无法获得精确解时,也可以将对称性作为惩罚项加入损失函数。
这个方法的通用流程是:
- 将物理知识(如平移不变性、旋转不变性、能量守恒)解释为数学表达式。
- 将该数学表达式映射为模型必须满足的特定结构(如矩阵流形或等式约束)。
- 设计一个优化算法,在满足该结构的约束下求解优化问题。
约束优化:子空间与流形
我们讨论了SINDy中的等式约束和piDMD中的流形约束,现在来总结一下这两种约束的几何意义。
在SINDy的例子中,Jean-Christophe Loiseau提出的等式约束在可能的模型函数空间中定义了一个子空间,我们希望找到的模型位于这个子空间内。
在piDMD的例子中,对称性约束(如厄米性)则定义了一个子流形。所有满足该对称性的矩阵构成了全部矩阵空间中的一个弯曲子集。
这两种都是非常通用的思路。线性约束通常有容易的闭式解(如KKT优化),而许多流形约束问题(如Procrustes问题)也有精确解法。
当然,我们也可以不改变优化算法,而是通过在损失函数中添加一项来“促进”模型接近该子空间或流形。例如,在标准的L2误差损失函数中加入模型预测到该流形投影距离的度量。
然而,直接设计或采用一个约束优化算法,强制解位于该流形或子空间上,通常是更优的方法。它能保证解严格满足约束,而损失函数惩罚项只能促使解接近约束,无法保证严格满足。因此,在可能的情况下,应优先采用约束优化。
对称性是编码已知物理知识的主要方式之一。即使我们只观测数据,有时也能发现数据中存在的对称性,这可以指导我们如何约束模型。Sam Otto等人的工作系统地讨论了如何在机器学习中强制执行、促进和发现对称性。
其他优化算法:符号回归与稀疏性
优化算法的应用远不止于此。以下是另外两个重要的领域。
符号回归(或称遗传编程)是另一种有趣的机器学习方法。它使用组合函数树来表示模型(架构),并通过进化优化算法(如交叉、变异)来训练这些树,以发现描述数据的微分方程或守恒律等可解释模型。这里,优化算法本身(进化算法)就是引导搜索、融入对简单函数块偏好的关键。
稀疏性与简约性是物理建模的核心原则,即“如无必要,勿增实体”。我们希望机器学习模型尽可能简单(低维、稀疏),同时又能充分描述数据。
这通常通过最小化L2范数(促进低维)和L1范数(促进稀疏)来实现。针对这些目标,存在专门的优化算法。例如,在SINDy中,为了发现最简单的微分方程,我们需要寻找最稀疏的系数向量 C。
我们可以使用最小二乘法(有闭式解)、Lasso回归或弹性网络等,它们各自对应不同的优化算法。我们团队也与合作者一起开发了新的优化算法(如SR3),以更高效、更准确地求解这类稀疏优化问题。
此外,我们通常还需要优化超参数(如正则化强度λ),通过交叉验证来寻找模型复杂度与误差之间的帕累托最优解,从而得到泛化能力最佳的模型。
总结
本节课我们一起学习了如何将物理知识嵌入机器学习流程的优化算法阶段。

- 我们看到了通过约束优化(如KKT条件)可以严格保证模型满足物理等式约束(如能量守恒)。
- 我们了解了通过将搜索空间限制在特定的矩阵流形上(如piDMD),可以将对称性等物理知识直接编码到优化过程中。
- 我们讨论了与在损失函数中添加惩罚项相比,约束优化通常是更严格的物理信息嵌入方式。
- 我们还提到了符号回归中的进化算法和稀疏性促进中的专用优化算法,它们都是将物理直觉(如简约性)融入优化过程的例子。
归根结底,机器学习最终都归结为一个优化问题:寻找最小化损失函数的解。虽然很多时候我们可以使用现成的优化器(如随机梯度下降),但为了强制执行特定的物理约束,或高效处理特定的损失函数(如稀疏惩罚),开发或采用定制化的优化算法往往是获得更物理、更可解释模型的关键。这是将物理知识嵌入机器学习中最具挑战性,但也常常是最有效的方法之一。
007:回顾与总结 🧠

在本节课中,我们将对物理信息机器学习系列讲座进行回顾与总结。我们将梳理构建物理模型的核心流程,并探讨如何将物理知识融入机器学习的各个阶段,以帮助初学者理解这一交叉领域的核心思想。
概述
物理信息机器学习,特指利用优化方法从数据中构建物理模型的过程。例如,我们可能拥有一个物理系统(如钟摆的视频、脑电波数据等)的数据,并希望从中学习描述该系统的坐标,以及在该坐标系下描述系统演化的动力学方程。
构建机器学习模型的五个阶段
构建任何机器学习模型通常都遵循以下五个主要步骤。在物理信息机器学习中,我们着重探讨如何将物理知识融入每一个阶段。
1. 问题定义
第一步是决定我们要建模的问题。例如,我们是否要建模机翼升力与其几何形状之间的函数关系。
2. 数据整理
第二步是数据整理。这涉及如何获取用于训练模型的数据。是通过建造不同几何形状的机翼并测试其升力来获取数据,还是运行大量仿真?我们需要考虑数据的可信度、成本以及如何增强数据以体现物理特性(如对称性)。
3. 架构设计
第三步是设计模型架构。这一步充满灵活性和创造性,它定义了我们要搜索的函数空间。架构可以是自定义的神经网络(如循环神经网络、自编码器、卷积神经网络),也可以是其他模型,如线性模型、高斯混合模型或决策树。某些架构在融入物理知识或数据有限时尤为重要。
4. 损失函数构建
第四步是构建损失函数。当模型在目标任务上表现良好时,损失函数的值应该很小。例如,在预测机翼升力时,损失函数可以衡量预测升力与训练数据集实测升力之间的误差。我们通过调整模型参数(如神经网络权重)来最小化这个损失函数。
5. 优化算法
第五步是优化。所有机器学习模型底层都有一个优化算法,用于调整模型中的自由参数,以最小化数据上的平均损失。如果损失函数足够小,模型就有望解决我们设定的问题。
融入物理知识的核心阶段
在上述五个阶段中,我们都有机会融入物理知识。虽然问题定义和数据整理阶段可以引入物理概念,但我们讨论物理信息机器学习时,大部分精力集中在后三个阶段:架构设计、损失函数构建和优化算法。
这三个阶段通常紧密相连,界限模糊。一个自定义的物理驱动架构往往需要一个自定义的损失函数来训练,而自定义的损失函数又可能需要一个特定的优化算法。
示例一:坐标与动力学发现
假设我们有一段钟摆的视频,我们希望学习一个低维坐标系以及描述在该坐标系下系统演化的微分方程。
- 架构:我们可以使用自编码器来学习坐标,使用稀疏库回归(如SINDy)来学习动力学方程。
- 损失函数:需要设计一个自定义的损失函数,同时衡量重构误差和动力学方程的稀疏性。
- 优化:可能需要使用像SR3这样的专用回归算法来优化这个包含稀疏促进项的损失函数。

这个例子清晰地展示了架构、损失函数和优化算法是如何交织在一起,共同嵌入物理知识的。
示例二:符号回归与遗传编程
符号回归通过遗传编程发现可解释的数学模型。
- 架构:函数树(一种组合函数结构)定义了模型空间。
- 损失函数:用于评估模型在任务上的表现。
- 优化:使用进化算法(如变异、交叉)作为自定义的优化算法来“培育”函数。
这同样是一个融合了三个阶段来促进物理发现的例子。
示例三:拉格朗日神经网络
对于机械系统等,其方程具有额外的结构(如拉格朗日结构、能量守恒)。
- 架构:选择用神经网络来建模拉格朗日量。
- 损失函数:构建一个损失函数,要求神经网络输出的拉格朗日量必须满足欧拉-拉格朗日方程。
- 效果:这本质上是一个具有物理结构的自定义神经微分方程,通过架构和损失函数的共同作用来保证物理一致性。
为何需要物理信息机器学习?🤔
你可能会问,为何要费心嵌入物理知识?以下是一些关键原因:
- 数据有限:在科学和工程领域,获取高质量数据通常成本高昂(如风洞实验、新材料合成)。嵌入已知的物理约束(如对称性、守恒律)可以将模型搜索空间限制在更符合物理规律的子集内,从而显著减少训练一个良好模型所需的数据量。
- 泛化能力:工程师常希望模型能用于设计新系统,这要求模型能泛化到训练数据分布之外。捕获系统的底层物理规律是实现良好泛化的关键。例如,在流体模型中嵌入能量守恒定律,能提高模型在远离训练数据区域的可靠性。
- 科学发现:机器学习也可用于从数据中发现新的物理规律,例如从脑波数据或鱼群运动数据中发现支配其演化的方程。
应用与挑战 🛠️
我们将把物理信息机器学习应用于具体的工程领域,如流体力学、材料科学、机器人学和数字孪生。每个应用领域对“物理”的定义、可获取的数据类型以及模型性能要求都有其特殊性,这在构建模型时必须加以考虑。

此外,由于物理信息机器学习与传统机器学习的目标不同,我们需要新的基准测试问题和数据集来推动和验证该领域的发展。例如,针对动力系统、闭环流控制或实际实验室硬件测试的基准框架。
总结

本节课我们一起回顾了物理信息机器学习的整体框架。我们明确了构建模型的五个阶段,并深入探讨了如何在架构、损失函数和优化这三个核心环节中融入物理知识,以应对数据有限、提升模型泛化能力并助力科学发现。我们看到,这些环节在实践中常常相互交织。后续课程将通过具体案例研究,帮助我们更深入地理解如何为不同的工程和科学问题构建有效的物理信息机器学习模型。
008:即将推出的模块与训练营预览 🚀


欢迎回来。我们关于物理信息机器学习的简短入门训练营即将结束。我们认为,向大家展示这门课程的后续发展方向会很有帮助。
本课程是一个更大规模的物理信息机器学习课程的入门部分,时长约四到五小时。在后续课程中,你可以根据自己的兴趣选择不同的主题进行深入学习。
接下来,我将概述一系列我们即将深入探讨的后续模块。这些模块的时长从一小时到十小时不等,但我的目标大致是每个模块四到五小时。
课程模块概览
以下是这个物理信息机器学习大型课程的第一个模块。
1. 简约模型
这个模块将探讨如何利用数据和机器学习技术,结合我们讨论过的不同架构、损失函数和优化算法,来发现可解释且可泛化的微分方程。同时,我们也会研究如何将这些模型应用于机械系统或流体系统等场景,使其更具物理意义。
2. 物理信息神经网络
PINNs是目前最流行、应用最广泛的物理信息机器学习算法之一。我们将详细讨论其设计原理、训练方法、适用场景、局限性以及各种变体。PINNs有很多不同类型,我对这部分内容感到兴奋,因为我一直想更深入地研究相关文献,自己也能学到更多。
3. 算子方法
与PINNs相关的是算子方法,例如傅里叶神经算子、深度算子网络、神经隐式流等。许多物理信息机器学习算法都致力于学习这些微分方程的解算子。我们将在算子方法上投入相当多的时间。
4. 对称性
对称性模块是我个人非常关注的部分,可能会深入探讨。如果时间允许,它甚至可能发展成一门完整的课程。对称性是我们在现实世界中编码物理知识的基础部分,因此也是引导、偏置或约束机器学习模型使其更具物理性的极其重要的方式。我希望能邀请该领域的顶尖专家共同参与。
5. 数字孪生
数字孪生在工程设计和优化中是一个非常重要的主题,而具有物理意义的机器学习模型在数字孪生框架中扮演着核心角色。降阶建模、从数据中发现模型、确保这些模型包含物理规律和对称性,对于未来设计和优化复杂工程系统的数字孪生革命至关重要。这部分内容理想情况下至少需要五小时,但根据我们的目标,很容易扩展到十小时甚至一门完整的课程。
6. 案例研究与基准测试
最后一部分是案例研究和基准测试。我们将花大量时间深入研究实际的物理示例,如流体力学、材料发现、机器人等,探讨简约模型或特定工程领域的研究。许多专家都有很棒的案例可以分享。同时,我们迫切需要基准问题来测试这些物理信息机器学习算法,因此也会投入大量时间梳理文献中现有的基准、它们各自适用于哪些问题类型,以及未来五年我们需要什么样的新基准问题。
以上六个模块是我目前明确计划的内容。每个模块都将是一次深度探索,有些较长,有些较短,有些最终可能发展成一门完整的课程。它们都围绕着如何在真实的工程、科学发现、设计与优化中应用物理信息机器学习这一核心理念展开。这让我非常兴奋,因为其中很多内容要么是我过去喜欢或研究很多的,要么是我渴望学习的。希望你们也同样感到兴奋。
核心框架回顾
好的,再次强调,这个物理信息机器学习课程的整体框架基于一个理念:机器学习不是魔法,它只是利用优化从数据中构建模型的过程。
构建机器学习模型有一些标准阶段,你可以在每个阶段中嵌入物理知识。正如我们之前所见,有时你可以在多个阶段嵌入物理。因此,这些模块将深入探讨这一过程的不同方面。例如,当我们讨论PINNs时,主要是在讨论设计损失函数;当我们讨论算子网络时,可能更多地涉及架构设计等。所有这些模块都会包含机器学习建模过程的某些元素,大多数会包含多个元素。
此外,当我谈论物理信息机器学习时,我们主要讨论以下两个对偶问题:
- 将部分已知或已知的物理知识融入机器学习算法。这里的“已知物理”含义广泛,可能是一个偏微分方程、一个守恒定律,也可能是系统具有的某种对称性或不变量。我们可以在机器学习模型中强制或促进这些物理规律,从而通常能用更少的数据获得更好的模型,并且这些模型的泛化能力往往更强。这在工程设计中至关重要。
- 为更复杂的系统发现新的物理规律。对于许多我们尚无法写出像 F=ma 这样简洁物理定律的复杂系统(如神经科学、人类新陈代谢等),或许我们可以利用丰富的测量数据和新兴的机器学习工具来开始发现新的物理规律。
我们将通过案例研究、基准问题等多种形式,重点探讨这种“融入与发现”的对偶范式。
模块深入预览
以上讨论的很多内容与我和Nathan Kutz合著的《Data-Driven Science and Engineering》一书中的章节相关。当然,并非全部,有些内容会出现在其他讲义中。随着讲义的编写,我会在描述中提供链接。但如果你想开始学习这些方法,这本书是一个很好的起点,其中包含了许多数学基础。
接下来,我将对每个模块进行一页幻灯片的更深入预览,让大家先睹为快。当然,你也可以选择现在停止观看,直接等待这些模块上线。

1. 简约建模与模型发现
大多数动力系统(如流体、大脑、金融市场、气候、流行病学等)都随时间演化,并遵循常微分方程或偏微分方程。简约建模模块的重点是,如何利用日益丰富的系统测量数据和机器学习算法,纯粹从数据中学习微分方程。这是一个非常激动人心的领域。
2. 物理信息神经网络
除了用于训练神经网络的标准损失函数外,如果你知道你的神经网络试图预测或重建的物理场(如流体速度场)受某个偏微分方程支配,你通常可以添加一个定制的损失函数,在训练过程中封装这种物理知识。这样做有很多好处:易于添加物理信息损失、通常可以用更少的数据进行训练,并且能实现一些很酷的应用。
3. 算子网络
神经网络通常被视为通用函数逼近器。但还有一种观点认为,神经网络不仅可以建模输入-输出函数,还可以建模作用于函数的算子。微分方程的解就是一个算子。我们将深入探讨像深度算子网络、傅里叶神经算子这样的架构,研究它们的可解释性、外推失败原因、所需训练数据量以及泛化扩展等问题。


4. 对称性
对称性是编码物理知识的基础。我们将深入讨论对称性,特别是“等变性”这一概念。如果一个神经网络 F 将数据 X 映射到 Y,那么该网络对于某个对称群 G 是等变的,当且仅当先应用 G 再应用 F,与先应用 F 再应用 G 的结果相同。这是一个数学概念,但具有深刻的物理意义(如平移不变性、旋转不变性)。相关的数学(流形理论、李群)非常优美,也是数学物理史的核心。


5. 数字孪生
这是机器学习在工程设计中“落地”的关键。它涉及如何构建模型的模型(其中一些可能是基于物理的,一些是机器学习的,一些是混合的),如何用新数据更新这些模型,如何利用它们设计和优化新的工程系统,以及如何将主动学习和不确定性量化融入模型。如果我们希望将机器学习应用于飞机设计等工程系统,那么将已知的物理知识构建到这些机器学习模型中至关重要。
6. 案例研究与基准测试
我不仅希望大家了解对称性和PINNs的理论,更希望我们一起看看这些方法如何实际改变机器人系统、材料系统、流体系统或制造系统。我们将通过案例研究,探讨不同方法的重要性、数据类型和质量上的细微差别、在不同场景中“物理”的具体含义,以及哪些方法适合数字孪生建模。

同时,我们也将一路研究基准系统,以测试这些不同的算法并观察它们的效果。
总结
以上就是关于这个更大规模的物理信息机器学习课程的预览。
我们刚刚完成了入门和概述模块。希望不久之后,就能推出关于这些超级有趣主题的深度探索模块和短期课程。可能还会有更多内容,这些是目前已经在规划和筹备中的。

我非常期待与大家一起学习这些内容,并在这个过程中共同成长。希望你们也同样兴奋。
谢谢,我们很快再见。
009:深度学习探索动力学坐标
概述

在本节课中,我们将学习一个新兴的机器学习领域:如何同时为复杂系统学习坐标系和动力学。具体来说,我们将探讨如何使用深度学习来发现坐标系,使得在这些坐标下,系统的动力学能够获得简单或简约的表示。
核心目标与挑战

上一节我们介绍了课程的核心目标。本节中,我们来看看实现这一目标所面临的主要挑战。
在建模动力学系统 ẋ = f(x) 时,我们通常会遇到几个关键挑战:
- 模型未知:我们常常不知道描述系统演化的模型
f(x)。 - 非线性:即使是非线性程度不高,也会严重阻碍我们基于有限测量进行模拟、预测和控制的能力。找到合适的坐标变换可以极大地简化非线性动力学。
- 高维性:现实世界的数据(如视频、流体模拟)往往维度极高。我们需要利用数据中存在的模式,找到低维表示(即自编码器的潜在坐标),从而发现动力学并处理非线性问题。
从线性到非线性:自编码器的演进

上一节我们讨论了高维数据中的低维模式。本节中,我们来看看如何利用自编码器网络来发现这些模式。

奇异值分解(SVD)、主成分分析(PCA)或本征正交分解(POD)是发现线性低维子空间的经典方法。我们可以将其视为一个浅层的线性自编码器网络:
- 编码器:将高维状态
X映射到低维潜在变量Z。 - 解码器:将
Z映射回X,目标是尽可能多地保留原始信息。
然而,线性子空间可能不足以有效表示复杂数据。因此,我们将其推广为深度非线性自编码器。
以下是深度自编码器与线性自编码器(如SVD)的关键区别:
- 结构:编码器
Φ和解码器Ψ由多个具有非线性激活函数的隐藏层构成。 - 表示能力:它学习的是一个由
Z参数化的非线性流形,而非线性子空间,从而能以更少的维度更高效地表示数据。 - 训练:通过定义损失函数(如重构误差)并固定潜在变量
Z的维度,我们可以训练网络学习输入数据的潜在特征。

但我们的目标不止于此。我们不仅要高效地表示数据,还要能准确、高效地预测潜在空间中的动力学演化。这意味着我们需要同时学习编码器、解码器以及描述系统随时间演化的动力学模型 F。
坐标系的重要性:一个经典案例
在深入具体方法前,理解坐标系选择对动力学简化的重要性至关重要。

地心说与日心说模型是坐标系重要性的绝佳例证。在地心坐标系中,行星的轨迹是复杂的本轮运动,难以用简单定律描述。而在日心坐标系中,所有行星围绕太阳运动的轨迹变得简单,从而易于发现开普勒定律等基本物理规律。
这个例子表明,拥有正确的坐标系是学习简单动力学模型 F 的关键。历史上,物理学的进步往往伴随着坐标系的革新。
方法一:学习稀疏非线性动力学(SINDy-AE)


上一节我们强调了坐标系的重要性。本节中,我们来看看第一种具体方法:学习潜在空间中稀疏的非线性动力学。
Kathleen Champion 等人开发了一种结合自编码器与稀疏非线性动力学辨识(SINDy)的网络。其核心思想如下:
- 网络结构:使用深度神经网络作为编码器
Φ和解码器Ψ。 - 动力学建模:在潜在空间
Z中,动力学Ż = f(z)被建模为一个稀疏的候选非线性函数库的线性组合。 - 损失函数:除了标准的自编码器重构损失,还引入了额外的SINDy相关损失:
- 稀疏性正则化(L1项):迫使动力学方程中的项尽可能少,确保模型简洁、可解释。
- 动力学一致性损失:确保通过网络不同部分(如从
X到Ż,或从Ż解码回Ẋ)计算的时间导数保持一致,防止网络通过无意义地压缩Z来作弊。
这种方法能够为复杂系统(如摆的视频)学习到非常简约的动力学模型。

方法二:学习线性化动力学(Deep Koopman)
如果我们的目标不仅是简化,而是完全线性化动力学呢?这引出了基于库普曼算子理论的方法。


为什么追求线性化?
线性动力学具有解析解,并且可以使用成熟的线性代数工具(如MATLAB或Python的一行代码)进行最优估计和控制,优势巨大。
核心思想与挑战:
库普曼理论指出,对于许多非线性系统,存在一个(可能是非线性的)坐标变换 Φ,使得在新坐标 Z = Φ(x) 下,动力学是线性的:Ż = L z,其中 L 是一个矩阵。


然而,找到这样一个线性化坐标变换 Φ 对编码器网络施加了极强的约束,因此训练通常更困难、成本更高。但好处是,一旦通过昂贵的离线训练找到 Φ,就可以在线快速、高效地使用这个线性模型进行预测和控制。

与经典方法的联系:
如果 Φ 和 Ψ 是线性的,那么这种线性动力学自编码器就等价于动态模态分解(DMD)。DMD是一种在流体力学等领域广泛使用的线性建模技术。因此,深度库普曼自编码器可以看作是DMD的非线性推广,它学习一个非线性坐标系,使得原始非线性系统在其中看起来是线性的。
架构变体:收缩式 vs 扩张式

在库普曼框架下,社区主要发展出两种不同的架构哲学:
以下是两种主要的库普曼网络架构:
- 收缩式自编码器:将高维状态
X压缩到低维潜在空间Z,并在Z中建立线性模型。这更符合物理直觉,即在高维系统中存在少数主导的相干结构,且低维空间通常更具可解释性。 - 扩张式方法:将状态
X提升到更高维的潜在空间Z̃,并在该高维空间中用线性矩阵K建模动力学,最后映射回X。这与机器学习中的核方法等思想一致,因为在更高维空间中非线性过程可能显得更线性。
两种方法各有优势,都是有效的探索路径。

扩展与应用
上述方法不仅限于常微分方程(ODE)系统,还可以扩展到更复杂的场景。
1. 偏微分方程(PDE)的线性化:
对于时空演化系统(如描述激波形成的非线性Burgers方程),也存在使其线性化的经典变换(如Cole-Hopf变换)。利用适用于PDE的库普曼网络,我们可以仅从数据中自动学习这种线性化变换,而无需知晓任何控制方程。


2. 非线性格林函数:
通过类似的非线性自编码器网络,我们可以学习非线性边值问题的“类格林函数”。这在处理大变形非线性梁理论或机翼设计等线性近似失效的领域有广泛应用。
总结与展望

本节课中,我们一起学习了如何利用深度学习联合学习坐标系和动力学模型。这是物理信息机器学习或物理发现中最令人兴奋的领域之一。

我们探讨了两种主要思路:
- 学习使动力学
F稀疏且非线性的坐标嵌入(SINDy-AE方法)。 - 学习使动力学
F完全线性的坐标嵌入(Deep Koopman方法)。
这两种思路正在被广泛研究,并应用于各种复杂系统。未来的研究方向包括在网络上施加更多物理约束,例如:
- 对称性:使嵌入尊重系统的已知对称性。
- 守恒律:将动量或能量守恒等定律嵌入网络结构。

这个领域充满了机遇,鼓励大家尝试并思考如何为特定问题设计合适的网络架构和约束条件。
010:非线性动力学的稀疏辨识
概述
在本节课中,我们将要学习一种名为“非线性动力学稀疏辨识”的算法。该算法旨在从时间序列数据中,提取出可解释且可泛化的动力学系统模型。我们将从算法的高层概述开始,逐步深入到其核心步骤、常见挑战以及实际应用。
算法核心思想
非线性动力学稀疏辨识是一种从时间序列数据中提取可解释、可泛化动力学系统模型的流程。这里的“可解释”意味着模型结构清晰、项数少;“可泛化”意味着模型在训练数据之外的新场景下依然有效。

本质上,你可以将其视为一种从时间序列数据中提取动力学系统模型的机器学习算法。这些模型可以是常微分方程形式:
dx/dt = f(x)



也可以是偏微分方程形式:

∂u/∂t = N(u)

其中,x 是描述系统所需的最小状态变量,u 是随空间和时间演化的时空场。

动机:为何需要稀疏模型?
上一节我们介绍了算法的目标,本节中我们来看看为何要追求模型的稀疏性。在从数据中发现模型时,我们必须优先考虑那些可解释和可泛化的模型。例如,牛顿第二定律 F = ma 就是一个典范:它只有三个项,易于分析和解释;并且它从地球上苹果下落的现象中总结出来,却可以泛化到设计登月任务中。

我们希望得到的模型更像 F = ma,而不是庞大、不透明的黑箱神经网络。物理建模的一个基本原则是,正确的物理模型通常是尽可能简单但又不失准确性的。用数学工具实现这一原则,就是要求模型是低维的(用尽可能少的自由度描述)和稀疏的(动力学方程中只包含描述观测动态所必需的最少项数)。这就是非线性动力学稀疏辨识算法背后的核心理念。

算法流程详解
基于上述理念,非线性动力学稀疏辨识算法的具体流程如下。我们以经典的洛伦兹系统为例进行说明。



假设我们只有洛伦兹系统的时间序列数据 x(t), y(t), z(t),并且可以计算出其导数 ẋ, ẏ, ż。我们的目标是发现其背后的动力学方程。
最简单的方法是尝试用线性模型,即一个3x3矩阵 A 来拟合,使 [ẋ, ẏ, ż]^T ≈ A * [x, y, z]^T。但这无法捕捉洛伦兹系统的丰富动力学。
非线性动力学稀疏辨识的做法是,构建一个包含非线性项在内的候选动力学项库。以下是构建候选库的步骤:
- 构建数据矩阵:将状态数据排列成矩阵
X = [x, y, z]。 - 构建候选库矩阵:基于状态数据
X,计算一系列候选函数项(例如多项式项)。例如,可以包含常数项、线性项x, y, z、二次项x², xy, y², xz, yz, z²,甚至更高阶项。所有这些项构成了一个矩阵Θ(X),其每一列对应一个候选函数在每一时间点上的取值。 - 构建回归问题:我们希望找到一组稀疏的权重向量
Ξ,使得[ẋ, ẏ, ż] ≈ Θ(X) Ξ。这意味着时间导数可以被候选库中少数几项的线性组合很好地近似。
接下来是寻找稀疏解的关键步骤。以下是常用的稀疏优化方法:
- 序列阈值最小二乘法:一种迭代算法,通过不断剔除小权重对应的项来促进稀疏性。
- LASSO回归:在最小二乘损失函数中加入L1正则化项,以促使权重向量稀疏。
- 稀疏促进正则化:使用其他形式的正则化(如L0)来直接惩罚非零项的数量。
当对这个库进行稀疏优化时,你本质上就学习了动力学系统的结构和参数。对于洛伦兹系统,算法会发现 ẋ 方程是 x 和 y 的线性组合,ẏ 方程包含 x、y 的线性项和一个非线性项 xz,ż 方程包含 z 和 xy 项。这正是真实的洛伦兹方程。


扩展到偏微分方程
非线性动力学稀疏辨识同样可以应用于发现偏微分方程。如果你拥有时空数据(如流体流过圆柱的涡量场 ω(x, y, t)),你可以构建一个包含空间偏导数(如 ∂ω/∂x, ∂²ω/∂x²)和非线性乘积项(如 ω * ∂ω/∂x)的候选库。

然后,通过稀疏回归寻找 ∂ω/∂t 的稀疏表示。应用此方法,可以从数据中重新发现纳维-斯托克斯方程等经典偏微分方程,甚至发现前所未有的新模型。

面临的挑战与展望


尽管非线性动力学稀疏辨识功能强大,但在实际应用中仍面临几个关键挑战:
- 坐标挑战:如何知道我们测量的是否是能够产生稀疏动力学系统的“正确”变量?例如,测量大脑活动时,什么才是合适的动态变量?
- 库函数挑战:即使变量正确,如何设计候选函数库?动力学可能是多项式、三角函数或其他特殊函数。库的设计需要足够丰富以包含真实动态,但又不能过于庞大导致难以求解。
- 优化挑战:采用何种优化算法来可靠地找到稀疏解?如何将已知的物理约束(如对称性、守恒律)融入优化过程,以确保发现的模型不仅稀疏而且物理上合理?
- 数据挑战:算法依赖于高质量数据。需要多大量、多快采样频率、多低噪声水平的数据才能可靠地发现模型?这是更基础但至关重要的问题。

在接下来的课程中,我们将详细探讨这些挑战,并展示该算法在流体动力学等多个领域的成功应用案例。
总结

本节课中我们一起学习了非线性动力学稀疏辨识算法。该算法通过构建候选动力学项库并施加稀疏性约束,能够从时间序列数据或时空数据中自动发现可解释、可泛化的常微分方程或偏微分方程模型。其核心优势在于追求模型的简洁性与物理可解释性。理解算法流程及其面临的挑战,是将此工具成功应用于新科学问题发现的关键。
011:训练数据与模型消歧



在本节课中,我们将深入学习稀疏辨识非线性动力学(SINDy)算法中关于数据的关键挑战。我们将探讨为了获得一个良好的SINDy模型,需要何种质量与数量的数据,并介绍处理噪声数据与模型消歧的核心方法。

上一节我们介绍了SINDy算法的基本框架和主要挑战。本节中,我们将聚焦于第一个挑战:数据。
数据质量与采样率

SINDy算法本质上是一个回归问题,需要从数据中近似时间导数 ẋ、ẏ、ż。如果测量数据含有噪声,近似导数将变得非常困难。因此,数据质量至关重要。
研究表明,如果数据足够干净且采样率足够高,即使观测时间非常短,也能成功辨识出非线性动力学系统。例如,对于洛伦兹系统,即使只观测到其动态轨迹中一个“叶瓣”的一小部分,只要数据干净且采样快,也能辨识出完整的模型。

然而,如果采样率低或测量噪声大,上述结论将不再成立。在实际应用中,数据噪声是SINDy面临的主要问题之一。
处理噪声数据

在实际应用中,我们通常无法获得干净的 x、y、z 测量值,更不用说它们的导数了。我们拥有的往往是带有噪声的时间序列数据。

在原始的SINDy论文中,我们展示了即使使用噪声数据,也可以通过基于全变分正则化的导数近似方法,获得相对干净的导数估计,从而得到相当准确的SINDy模型。Sam Rudy在其PDE-FIND版本中则使用了多项式拟合策略。


一个重要的创新是使用SINDy的弱形式或控制体积版本。其基本思想是将优化问题的两边进行积分,通过在许多样本上平均来抵消噪声的影响。这种方法使研究者能够处理系统中更大量的噪声。
以下是几篇应用此方法处理噪声数据并发现新偏微分方程的重要论文:
- Roman Grigoriev小组的工作:他们通过对时空数据(如流体流动、等离子体)在小的控制体积上进行积分,成功地从高噪声实验数据中辨识出准确的PDE模型。
- Alves和Fiuza的工作:他们从等离子体系统的动力学模型数据出发,利用SINDy的弱形式发现了描述该系统的粗粒度PDE模型,并应用于识别典型的不稳定性动力学。

这些进展使得从嘈杂的实验或数值测量中发现全新的、此前未被写下的PDE成为可能,为科学发现打开了新的大门。
数据数量与模型消歧



SINDy需要解决一个回归问题,其目标是找到系数矩阵 C 中最稀疏的列向量。为了得到正确的稀疏系数 C,库矩阵 Θ 必须具有良好的条件数。
获得良好条件数 Θ 矩阵的方法是添加更多能够激发系统瞬态过程的数据。这些数据点有助于消除动力学中哪些项是活跃的歧义。

例如,假设我们测量到一个在吸引子上做圆周运动的振荡器。描述此行为的最简单稀疏模型是一个简单的线性振荡器。然而,立方Hopf范式同样可以描述极限环行为。
区分这两种模型的唯一方法是收集吸引子之外的更多初始条件数据。如果所有初始条件都产生完美的圆周运动,则系统是线性振荡器;如果观察到所有轨迹都收缩包裹到极限环上,则系统更可能是立方Hopf范式。如果没有这些额外的瞬态数据,库矩阵中某些项(如线性项和立方项)可能近乎平行,导致条件数极差,无法区分这些项。

在偏微分方程建模中也能看到同样的情况。例如,对于一个从左向右传播的单个孤波,多个PDE都可以产生行波现象。要区分是简单的线性波动方程还是更复杂的非线性方程,就需要测量具有不同振幅的波,并观察它们是否以不同速度传播。额外的、能激发不同非线性项的数据对于模型消歧至关重要。

总结

本节课我们一起学习了SINDy算法中关于数据的关键考量。我们了解到:
- 高质量、高采样率的数据可以极大减少所需的观测时间。
- 对于噪声数据,可以使用正则化导数近似、多项式拟合,特别是SINDy的弱形式(积分形式) 来有效处理,从而应用于真实实验数据。
- 为了获得唯一且正确的稀疏模型,需要足够数量且多样化的数据(如不同初始条件、不同参数下的瞬态数据)来改善库矩阵的条件数,实现模型消歧。


在接下来的课程中,我们将讨论如何选择测量变量、如何构建有效的函数库以及使用何种优化算法。
物理信息机器学习:P12-12:稀疏非线性动力学模型与SINDy,第三部分:简约模型的有效坐标



在本节课中,我们将要学习SINDy算法的一个关键挑战:如何为模型选择正确的坐标变量。我们将探讨当数据维度过高或过低时,如何通过坐标变换来获得一个允许稀疏非线性动力学模型的有效表示。
欢迎回来。我们正在讨论SINDy算法,它允许我们从时间序列数据中发现稀疏非线性模型。在本系列视频中,我们已经概述了SINDy算法,并指出了四个关键挑战。
上一节我们讨论了数据本身的挑战,包括数据的数量和质量。本节中,我们将聚焦于坐标问题:在SINDy算法中,我们应该测量哪些变量?
让我们回顾这张示意图,它很好地阐释了SINDy的核心思想。我们首次用它来说明SINDy:假设你有一个复杂系统(如洛伦兹模型)的数据,你测量了变量X、Y和Z,计算了它们的导数,构建了一个函数库,然后找到了描述X点、Y点和Z点所需的最少数量的候选项。

但这里有一个巨大的、我们通常一笔带过的假设:我们如何知道X、Y和Z就是需要测量的正确变量?对于洛伦兹系统,我们知道测量X、Y和Z是正确的,但这需要大量的先验知识。如果数据在坐标中稍有旋转或扭曲,我们可能无法得到一个稀疏的非线性表示,而可能需要一个包含库中所有项的密集模型。

因此,一个关键问题是:我们如何从一开始就知道应该测量哪些正确的变量?在许多情况下,作为专家科学家或工程师,我们对所研究的系统有所了解。我强烈建议将SINDy作为一种引导式模型发现的工具,它并非完全自动化。你是专家,你知道你的数据在告诉你什么,你知道可能从系统中得到什么样的模型,并且可能对测量的变量、单位以及是否存在物理关系有所了解。因此,作为研究人员,你通常能很好地判断是否处于正确的坐标系中。
但也可能存在我们确实一无所知的情况。例如,如果我们测量大脑活动并希望获得其模式的SINDy模型,或者测量疾病在大陆上的传播,我们如何知道我们测量的是正确的变量?我们如何知道这些变量是否允许在模型空间中得到稀疏表示?这就是我们今天要讨论的问题。
现在,如果我有一个像流体流动这样的高维系统,我已经展示过你可以发现描述它的偏微分方程(纳维-斯托克斯方程)。这没问题。但如果我想要一个常微分方程,以便进行ODE分析呢?

这个SINDy函数库表达了一个非常大的可能模型空间。例如,在这个包含X、Y和Z的五阶多项式的集合中,我认为库中有81个项。这意味着矩阵 Ξ 的每一列都有81个系数,因此可以编码许多可能的模型结构。例如,如果我想要一个恰好包含两项(即 Θ 的两个列向量)的模型,那么我有 81选2 种可能的两项模型。如果动力学中包含三项,则有 81选3 种可能,这个数字会迅速变得非常庞大。

如果我们定义稀疏性为模型包含 Θ 中10个或更少的项,那么可能的模型数量是 81选10 + 81选9 + ...,这超过了千万亿个模型。SINDy算法的部分威力在于,它允许你通过稀疏优化,高效地从这千万亿个模型的巨大空间中,找出真正描述你动力学的正确结构。
但这里有一个问题。不同结构的可能模型空间是巨大的,但这个库本身随状态向量X、Y、Z的维度扩展得非常糟糕。我将在下一讲关于库的讲座中讨论这个库的扩展问题,但现在我希望你记住这一点:我们无法为100个变量构建一个五阶库,那将过于庞大。
这就是我们处理像流体流动这样的高维系统时面临的问题。当我在计算机上模拟这个流体流动时,我将其模拟为一个离散化的常微分方程组,可能包含1万或10万个自由度,具体取决于离散化程度。

然而,我们知道通常存在低维坐标系,可以更有效地描述这些数据。因此,即使在我的计算机上模拟需要1万或10万个自由度,我们知道存在这些低维模式来描述大部分行为。如果我在这三个模态的振幅构成的坐标系中写出动力学方程,这些模态的振幅允许一个非常简单的微分方程。
因此,为SINDy获取正确坐标的一种方法是:如果我有一个像流体流动或等离子体流动这样的时空系统,我通常可以采用奇异值分解(也称为主成分分析或本征正交分解)来获得一个低维基,我可以用这三个模态的振幅X、Y和Z来表示这些动力学。这些振幅通常是表示我动力学的非常好的坐标系。
所以,如果你对系统一无所知,但它是高维的,你可能想尝试的第一件事就是进行SVD,以获得一个低维基,在那里你可以构建一个高效的库并开始识别模型。

当我们对圆柱绕流这个例子这样做时,我们可以在那三个变量中构建我们的模型库,这仍然是可处理的,这个库不会太大而无法工作。
我们可以识别出一个在这个坐标系中具有正确结构和正确动力学的模型。因此,如果你有高维时空数据,这只是一个普遍的好主意:首先尝试SVD,看看是否能给你一个好的坐标系来构建模型。
我们有很多理论基础来解释为什么我们认为这在流体力学、等离子体物理和许多时空系统中可能是一个好主意。因为奇异值分解是一个正交基,它针对你的特定数据进行了优化,以尽可能少的自由度尽可能好地表示它,这对我们的建模有好处。我们还知道,如果我采用这个展开(伽辽金展开)并将其代入控制方程纳维-斯托克斯方程,当我展开时,我会得到一个关于这些模态振幅的非线性常微分方程。这给了我们希望,存在一个描述这种演化的微分方程,我们可以使用SINDy算法发现它。长话短说,尝试SVD。它在很多情况下确实有效,尤其是在流体力学中,效果非常好。

现在,奇异值分解在现代神经网络语言中可以被视为一个浅层线性自编码器。它本质上可以构建成一个具有高维输入和输出以及由这个Z变量给出的单个低维潜在层的神经网络,其中你的网络损失函数试图最小化输入和输出之间的误差,同时知道你将维度压缩到只有几个自由度,然后再提升回来。当然,你永远不会真的想用这种方式计算SVD,但你可以将SVD视为一个浅层线性自编码器。
这意味着如果你的SVD坐标对你来说不太适用,如果它们对于构建SINDy模型不够好,你可以将其推广到一个深度非线性自编码器。因此,深度自编码器不是只有一个隐藏层,而是有许多编码器层和解码器层,并且还具有非线性激活函数。这允许你做的不是构建一个正交的线性子空间,而是设计一个由Z参数化的非线性流形。通常,这允许我们大幅减少描述这些动力学所需的自由度数量。
这正是Kathleen Champion在设计她的SINDy自编码器框架时所采用的策略。我认为这是实验室里我最喜欢的论文之一。这是与Kathleen Champion(Nathan Kutz和我的博士生)、Bethany Lush(我们的博士后)以及Nathan和我本人的合作成果。本质上,Kathleen在这里所做的是将自编码器学习良好坐标系的能力与潜在空间Z中的稀疏非线性模型相结合。
这非常酷。自编码器学习描述你数据的良好坐标系或流形,并且你可以在这个神经网络训练的损失函数中添加额外的约束,使得该潜在层上的动力学是SINDy框架下的稀疏非线性模型。本质上,这些额外的损失项使我们能够训练这个模型,以找到良好的坐标和SINDy模型。

我将在下一讲关于库的内容中再次讨论这一点,但我想在这里提一下:通常多项式并不是描述你动力学的正确项,也许你需要正弦和余弦、贝塞尔函数或一些奇异的非线性项。然而,通常通过应用正确的坐标变换,你可以将你的系统转换到一个坐标系中,在那里多项式是建模你动力学的更好库。这与经典动力系统中的范式理论密切相关,范式理论本质上指出,通过连续的坐标变换,你基本上可以消除泰勒展开中的项,并为你的动力学获得稀疏多项式模型。因此,有很多理论基础支持这是一个好主意,这也是当我面对复杂数据时,最喜欢的SINDy方法之一。
在这个例子中,你可以取一个非常复杂的高维系统(这可能是在空间和时间序列测量中具有100个自由度的演化数据),通过自编码器,你可以学习一个坐标变换,使得动力学是稀疏的。在这个案例中,我相信发现的模型实际上是一个不同的稀疏模型,但如果你旋转这个模型,你就能恢复原始的洛伦兹系统。这非常酷。在上方,我们只有高维数据,而在其下方存在一些洛伦兹动力学,因此我们可以学习坐标变换,从而得到一个稀疏模型,该模型与真实的洛伦兹动力学之间只差一个旋转。我认为这非常酷,我们稍后会更多地讨论这个。


好的,你还可以做其他几件事。到目前为止,我一直在讨论如果你有非常高维的测量数据,如何通过线性SVD坐标或非线性自编码器来压缩它们。
但是,如果你的测量数据太少怎么办?这也是非常常见的情况。也许我有一个复杂系统,但我只有一个或两个标量测量值,例如大脑中有一个电极,我能从那种数据中得到什么?
这篇论文真正改变了我对这些稀疏模型的看法。这是与JC Lazo和Barrett Noack的合作成果。我们当时正在建模像绕过三个圆柱的流动这样的流体系统。我们不想假设我们拥有各处完整速度场的全部测量数据,这是一个相当大的假设。如果我驾驶一架波音飞机,我并没有机翼后方完整的尾流速度测量数据,我可能只有沿机翼的一些压力测量值,或者我可能能够测量我的升力和阻力。
JC展示的是,如果你只有这三个圆柱上的升力和阻力测量值,并且你的测量足够干净以计算导数,你实际上可以在那些升力和阻力坐标(这些内在坐标)中构建非常准确的SINDy模型。这是模拟(直接数值模拟)中三个翼型上的升力,这是地面实况,而我们的SINDy模型用蓝色虚线表示,几乎完美吻合。SINDy模型的一个优点是,因为它使用回归,它可以找到稀疏模型来近似你通常不会想到去建模的奇怪变量(如升力和阻力)上的动力学。在这些坐标中建模还有很多相关的好处,我将在关于稀疏流体建模的视频中讨论。

好的,我在这里要展示的最后一点是:如果你再次遇到测量数据太少的情况,即存在一些你没有测量的变量或潜在状态,你该如何处理?这源于五年前我们最初的SINDy论文中一位审稿人的评论。我们收到了一些非常有见地的审稿意见,其中一条是这样的:在我们的洛伦兹系统中,我们假设可以访问X、Y和Z并计算它们的导数。但如果我们只能访问X呢?如果存在隐藏变量Y和Z,在这个测量中无法获得,我们能用SINDy做什么?
这实际上开启了我们合作小组中关于潜在动力学和时间延迟坐标的全新研究方向,这是一个引人入胜的故事。这里有很多内容,我只是给你一个高层次的概述。
假设我们测量的是一个有限的子集,无法访问完整状态。例如,我们只有X的测量值。在某些条件下(由非线性混沌系统的Takens延迟嵌入定理或线性动力系统的可观测性给出),你基本上可以构建这个标量测量X的时间延迟坐标矩阵。这是一个汉克尔矩阵,其中每一列是你的状态在过去或未来时间的增广向量:X在时间1,时间2,时间3,...,到时间Q。你可以构建这个大矩阵,计算其奇异值分解,并基本上发现本征时间延迟坐标或这些短时间轨迹,它们允许你将这个X测量嵌入到由V的这些行给出的更高维空间中。这是一个经典的延迟嵌入,这不是我们发明的,自80年代以来就存在对汉克尔矩阵进行SVD的做法。
但当你尝试将SINDy应用于这个系统时,会发生一些非常有趣的事情。你基本上可以尝试在这些V坐标和时间延迟坐标中设计一个SINDy模型。

当我们寻找最稀疏的模型,并允许自己包含非线性项和线性项时,我们发现最稀疏的模型往往是线性的,千真万确,没有二次项,没有三次项,只有线性项。这与库普曼算子理论有深刻的联系。我们偶然发现了这种联系:时间延迟坐标本质上提供了一个几乎最优的坐标系,以获得一个库普曼线性系统,一个稀疏的库普曼线性系统。我们已经写了四五篇后续论文来探索其结构、为什么有效、如何工作,并将其应用于混沌系统和确定性系统,我们学到了很多。我会在描述中放一些这些论文和视频的链接。
这个模型允许你做诸如预测甚至非常混沌的动力学这样的事情。例如,你可以预测何时即将切换到洛伦兹吸引子的另一侧,你甚至可以根据其何时表现得像一个线性系统以及何时即将切换来为你的吸引子着色。我们了解到这一点是因为我们试图处理具有潜在变量的系统上的SINDy,结果发现时间延迟坐标加上SINDy可以给你一个非常非常准确的库普曼线性模型。关于这个有很多论文和一个小时长的视频,所以我不会在这里停留太久,只是长话短说:你通常可以通过延迟嵌入来处理潜在测量。
这实际上是Kathleen Champion探索了很多的东西:对于非混沌系统,你通常可以使用延迟嵌入和SINDy回归过程得到一个完美封闭的模型。
好的,我们一直在讨论这个SINDy概述,特别是这些关键挑战。现在我们已经涵盖了挑战零(数据)和挑战一(坐标),在接下来的视频中,我们将讨论库的问题:如何实际构建那个 Θ 矩阵,使其条件良好,能够描述你系统的动力学,同时又不会太大;以及我们首先使用什么优化算法来实际找到那些稀疏模型。所有这些内容即将到来。谢谢。




本节课中,我们一起学习了为SINDy算法选择有效坐标的重要性。我们探讨了处理高维数据时使用SVD或深度自编码器进行降维的方法,以及处理测量不足时利用内在物理量(如升力/阻力)或时间延迟嵌入技术来构建有效模型坐标的策略。理解并选择合适的坐标是获得简约、可解释动力学模型的关键一步。
013:候选非线性函数库
在本节课中,我们将深入探讨稀疏辨识非线性动力学算法中的一个核心环节:如何构建候选非线性函数库。我们将学习如何设计这个函数库,以有效地从时间序列数据中提取出尽可能简单且可解释的动力学模型。

概述

SINDy算法的核心目标,是获取复杂系统的时间序列数据,并从中提取出可解释、可推广的动力学系统模型。这些模型可以是常微分方程或偏微分方程,其核心特征是尽可能简单,即动力学方程中的项数尽可能少。


上一节我们介绍了SINDy算法的整体流程和关键挑战。本节中,我们将聚焦于如何构建候选函数库矩阵 Θ。这是算法中极具创造性的部分,设计良好的函数库能大大提高我们找到正确稀疏模型的成功率。
构建函数库的基本策略
构建函数库矩阵 Θ 是SINDy算法的关键步骤。最终,SINDy是一个广义线性回归问题,目标是找到 Θ 矩阵列的一个稀疏组合,来描述测量数据的时间导数。因此,大量的工作都投入在构建这个矩阵上。
以下是设计函数库时的一些基本建议和策略。
从简单开始:多项式函数库
在许多物理系统中,多项式是一个很好的起点。例如,在流体力学中,纳维-斯托克斯方程具有二次非线性项。因此,在建模流体系统时,通常从在函数库中添加线性和二次项开始。
对于新系统,建议遵循以下步骤:
- 尝试线性项:计算动态模态分解模型,评估其在重构 Ẋ 和未来预测方面的准确性。如果模型准确有效,那么你已经获得了一个良好的线性动力学模型。
- 添加二次项:如果线性模型拟合不佳,尝试添加二次项。如果线性加二次项模型有效,则问题解决。
- 逐步增加复杂度:如果二次项仍不足,则继续添加三次项等,逐步增加复杂度,直到模型能够准确描述系统。不建议一开始就使用五阶多项式基,因为那可能过于复杂。
超越多项式:其他基函数

对于某些系统,多项式并非描述动力学的合适基函数。你可能需要考虑其他类型的函数。
- 三角函数:如果你处理的是摆或已知存在于周期性构型空间的系统,变量具有 2π 周期性,那么应该加入 sin 和 cos 等周期基函数。
- 其他函数:理论上,你可以向函数库中添加任何函数,如贝塞尔函数等。

重要提示:在组合不同函数库之前,建议先单独尝试它们。因为需要时刻关注矩阵的条件数。如果矩阵病态,将很难准确求解稀疏系数,尤其是在数据含有噪声时。要避免函数库过大或列之间过于线性相关。例如,sin(x) 可能与 x、x³、x⁵ 的线性组合非常相似,如果多项式和正弦函数出现在同一个函数库中,可能导致病态问题。
扩展函数库以纳入物理效应
函数库的灵活性允许我们纳入更多物理效应,例如外部强迫或控制变量。
纳入控制输入

通常,动力学系统不仅是状态变量的函数,还可能存在外部强迫、控制变量或时间依赖性。你可以通过添加额外的列将这些因素纳入函数库。


在SINDy with Control的工作中,可以将右侧的函数库进行扩展,使其不仅包含状态 X 的函数,还包含控制输入 U 的非线性函数以及交叉项。这对于区分系统内部动力学和外部控制效应至关重要。

示例:捕食者-猎物系统
考虑一个简单的捕食者-猎物系统。假设系统存在一个未受迫的自然动力学。如果在某个时间点(例如第100年)引入人为控制(如捕猎),而建模时未考虑这个控制变量,那么在新的控制策略下,模型预测(黄色曲线)将完全错误。反之,如果在函数库中加入与控制相关的项,则模型(蓝色曲线)几乎能完美预测未来的动态。

这表明,如果你正在主动控制系统,必须在SINDy函数库中考虑这一点,否则将得到错误的动力学模型。这种方法允许我们在不关闭控制的情况下,同时辨识内部动力学和控制效果。

基于这些稀疏SINDy模型,可以开发模型预测控制器等,用于基于模型的各类控制策略。
纳入参数与分岔

在原始论文中,我们展示了除了控制变量,还可以将参数(分岔参数或调节参数)纳入模型。
通过将参数(如 μ)作为列加入SINDy函数库,我们可以学习参数化系统的形式。例如,对于带有分岔参数 μ 的混沌逻辑斯蒂映射,通过在不同 μ 值下测量数据,并在函数库中包含 μ 以及与 μ 的交叉项,我们可以从少量含噪测量中学习映射的形式,然后利用学到的模型,在其他参数值下无噪声地填充整个分岔图。
这一切都取决于函数库的设计:你需要根据测量的数据,思考应该在函数库中加入什么,是否存在参数依赖,以及它可能如何影响系统。

处理更复杂的动力学形式
SINDy研究的另一个重要方向是扩展该框架以处理更广泛的动力学系统类别。
隐式SINDy与有理函数系统

之前展示的方法允许你在固定基函数(如多项式、三角函数)中辨识稀疏模型。但如果动力学是有理函数形式(即分子和分母都是多项式),用标准SINDy建模将非常困难,因为有理动力学不易表达为 Θ 矩阵列的稀疏组合。
思路:对于形如 Ẋ = f(x)/g(x) 的有理函数,我们可以在等式两边乘以未知的分母 g(x),得到一个隐式方程:g(x)Ẋ - f(x) = 0。然后,可以将其写成类似原始SINDy问题的形式:Θ(X, Ẋ)C = 0。此时,函数库 Θ 必须更大,需要包含描述 f 的项,以及描述 f 乘以 Ẋ 的项。
然而,这带来了一个严峻的优化问题:因为使 ΘC = 0 的最稀疏向量 C 是零向量,这显然不是一个好模型。研究发现,我们需要的不是在 Θ 的零空间中寻找最稀疏的 C。虽然存在相应的优化方法,但对于含噪数据,这个问题通常是病态的。
鲁棒的隐式SINDy

最近的工作对上述隐式SINDy建模过程进行了改进,使其更加鲁棒。


核心思想是:如果你知道动力学中肯定存在某个特定项,可以将其移到等式的右侧。这样,回归问题就不再是等于零,从而避免了零空间问题。具体做法是,遍历所有可能存在于模型中的候选项,逐一将其移到右侧并尝试建模。其中必有一种方式能产生一个既准确又稀疏的模型。
这种方法解决了原始隐式SINDy的许多问题,具有与标准SINDy相似的鲁棒性,能够处理中等程度的噪声,并且可以并行计算。利用这种方法,甚至可以成功建模像BZ化学反应这样复杂的、含有有理项的四变量耦合偏微分方程系统,这是原有框架难以企及的。
应对维数灾难与病态问题
在构建SINDy函数库时,我们还需要面对维数灾难和矩阵病态等挑战。
维数灾难
SINDy的一个关键优势在于,其函数库表达了大量可能的模型结构。对于包含五、六项的模型,可能存在数百万种组合,稀疏优化程序能以高概率从中搜索出正确的稀疏模型。
然而,Θ 矩阵的列数也存在维数灾难。例如,对于3个变量和5阶多项式,大约有81项,尚可接受。但对于10个变量和10阶多项式,函数库将变得极其庞大(可能达到数百万列),矩阵会过于病态,无法进行伪逆运算和稀疏优化。
因此,存在一个根本性的维数灾难。我们希望函数库能够良好地扩展,既希望列数尽可能少,又希望保持表示大模型空间的灵活性,这是一对相互竞争的目标。一个重要的动机是减少状态 X 的维度。如果你能找到用更少自由度描述系统的方法,将有助于改善函数库的扩展性。

矩阵条件数与精确恢复

关于 Θ 矩阵的条件数,有一个更广义的概念称为“受限等距性质”相关的条件。它给出了基于 Θ 的广义条件数,何时可以期望精确恢复稀疏模型的条件。
关键在于:如果真实的稀疏模型列集与函数库中其他列高度相关或几乎线性相关,那么稀疏辨识将变得非常困难。因此,我们需要改善矩阵的条件数,保持其尽可能小(添加的列越多,线性相关性可能越高),同时通过采样更多初始条件来增加数据丰富性,以提高这些列线性独立的可能性。
这是一个技术细节,但非常重要。你关心的真实稀疏模型结构,不能与你不在乎的模型列近乎线性相关,否则会导致错误辨识。

应对高维问题的先进方法
以下是几种应对高维和病态问题的先进方法:
- 降维:对高维数据使用奇异值分解获取主成分,或使用深度自编码器网络,将数据压缩到更少的动态变量中,以保持函数库较小。
- 张量列车方法:通过张量列车公式将广义线性模型 Ẋ = Θ(X)C 压缩成张量表示,允许使用更紧凑的模型表示更大的多项式空间,从而规避一些病态问题和维数灾难。
- 融入物理先验知识(如对称性):可以将对物理系统的先验知识(如对称性)融入到函数库中。如果你知道系统具有某种对称性(如奇对称性或 2π 周期对称性),可以构建反映这种对称性的函数库元素。这能立即排除大量不符合对称性的项,显著缩小函数库规模,从而用更少的数据、在条件数更好的情况下辨识出更好的模型。

这是SINDy中最令人喜爱的部分之一:在设计候选项函数库、强制执行对称性和物理约束、以及融入你对试图发现的动力学的专家直觉方面,具有极大的灵活性和自由度。
总结

本节课我们一起深入探讨了SINDy算法中构建候选非线性函数库的关键问题。我们学习了从简单的多项式基开始,逐步增加复杂度的基本策略,并探讨了如何将控制输入、系统参数等外部效应纳入函数库。我们还了解了处理有理函数等复杂动力学形式的隐式SINDy方法及其鲁棒性改进。最后,我们讨论了函数库面临的维数灾难和病态问题,并介绍了几种先进的应对策略,包括降维、张量列车表示以及融入对称性等物理先验知识。设计一个良好的函数库是成功应用SINDy进行科学发现的核心,它允许研究者将领域知识灵活地融入到数据驱动的建模过程中。

在下一讲中,我们将探讨SINDy的另一个关键挑战:优化问题。
014:优化算法

在本节课中,我们将要学习SINDy算法中的核心环节——优化算法。我们将探讨如何从候选函数库中,通过稀疏回归技术,找到能够准确描述系统动力学的、最简洁的模型。



概述

上一节我们介绍了构建候选函数库的方法。本节中,我们来看看如何通过优化算法,从庞大的候选库中识别出真正起作用的少数几个项,从而得到一个稀疏、可解释且可推广的动力学模型。
SINDy算法流程回顾
首先,让我们快速回顾SINDy的整体流程。该流程旨在从时间序列数据中发现可解释的动力学系统模型。
- 收集系统状态数据 X。
- 近似计算状态变量的导数 Ẋ。
- 构建候选非线性函数库 Θ(X)。
- 通过稀疏回归求解系数矩阵 Ξ,以识别出描述 Ẋ 动力学的活跃项。
整个SINDy过程可以表述为一个广义线性回归问题:
Ẋ = Θ(X) Ξ
我们的目标是找到一个尽可能稀疏(即非零元素尽可能少)的系数矩阵 Ξ,同时保证模型对数据有良好的拟合。
从最小二乘回归到稀疏回归
最简单的求解方法是普通最小二乘回归,例如使用伪逆求解:
Ξ = pinv(Θ(X)) * Ẋ
这种方法会使 Ξ 中几乎所有项都非零,虽然可能获得较好的拟合,但我们认为这是对训练数据的过拟合。基于我们对物理学的认知,真实的动力学模型通常只由少数几个关键项支配。
因此,我们需要一种稀疏惩罚回归方法。它在保证良好拟合的同时,促使系数向量 Ξ 尽可能稀疏。在原论文中,我们将其类比为Lasso算法,但实践中我们发现其他算法通常效果更好。
序列阈值最小二乘法
我们开发了一种名为序列阈值最小二乘法的自定义算法。其步骤简单有效:
以下是STLSQ算法的基本步骤:
- 对全部候选项进行最小二乘回归,得到初始系数向量。
- 将系数绝对值小于某个阈值 λ 的项设为零(硬阈值化)。
- 仅对剩余的非零项再次进行最小二乘回归,更新其系数。
- 重复步骤2和3,直到模型结构(非零项集合)不再变化。
该算法快速、准确,并且通常比Lasso等算法具有更好的模型收敛性。
模型复杂度与拟合误差的权衡

在回归过程中,我们始终在平衡模型的拟合误差和模型的稀疏性(由非零项的数量衡量)。我们希望在保持良好拟合误差的同时,使非零项尽可能少。
这种平衡由一个关键参数 λ(阈值)控制。λ 越大,对稀疏性的惩罚越强,模型越简单,但误差可能越高。λ 趋近于0时,则恢复为最小二乘解,模型复杂但误差低。
通过调节 λ,我们可以得到一系列从欠拟合到过拟合的模型。理想情况下,会存在一个帕累托最优的“拐点”,此处的模型在复杂度和泛化能力之间达到最佳平衡。最小二乘法在训练数据上表现良好,但在验证数据上可能因过拟合而表现不佳。我们期望通过交叉验证选出的SINDy模型就位于这个“拐点”附近。

核心要点:
- 我们通常使用序列阈值最小二乘法。
- 通过调整阈值参数 λ,可以选择模型的稀疏度。
- 当不了解真实物理时,获取帕累托曲线上的几个模型进行比较,可以帮助我们理解系统。

先进的优化算法:SR3
与优化专家合作,我们证明了序列阈值最小二乘法实际上是 L0 稀疏优化问题的一种形式化松弛。基于此,我们提出了一个更通用的稀疏优化算法——稀疏松弛正则化回归。
SR3引入了一个辅助变量 W,将优化问题分解,让 Ξ 尽可能稀疏,同时让 W 接近 Ξ 并保证拟合优度。这种分裂和松弛技术使算法具有更好的收敛性。SR3框架还可以方便地加入额外的正则化项和对系数的先验约束。
融入先验物理知识:约束优化

在许多物理系统中,我们拥有先验知识。例如,在不可压缩流体流动中,我们知道能量是守恒的,并且这种守恒源于二次非线性项的特定对称性。

我们可以将这些知识作为等式约束融入到优化过程中。例如,要求某些系数彼此相等或互为相反数。由于序列阈值最小二乘法的每一步都涉及最小二乘求解,因此可以很容易地在每一步中满足这些等式约束(例如通过KKT条件)。
对于Navier-Stokes方程,可以推导出一组保证能量守恒的等式约束条件。在SINDy优化中强制实施这些约束,可以从构造上保证模型是能量守恒的。将此应用于流体系统建模时,约束SINDy模型相比传统降阶模型,在定量精度上取得了显著提升。
此外,我的博士生Alan Kaptanoglu近期的工作将全局稳定性条件也融入了SINDy优化,从而能够得到构造上保证全局稳定的线性加二次模型。
处理系统突变:快速模型恢复

许多动力系统会随时间发生突变。我们开发了适用于突变系统的SINDy变体。当系统参数发生微小变化时,该算法可以快速学习对原有SINDy模型的小幅修正,这比从头学习一个全新模型要快得多。这种能力对于控制系统的实时应用至关重要。
总结

本节课中,我们一起学习了SINDy算法中的优化部分。我们了解到:
- 序列阈值最小二乘法是求解稀疏系数矩阵的有效且常用的方法。
- 通过调节阈值参数 λ,可以在模型复杂度与拟合精度之间进行权衡,并利用交叉验证选择最优模型。
- SR3 算法提供了更强大、更灵活的优化框架。
- 优化算法允许我们将先验物理知识(如守恒律、对称性、稳定性)以约束形式融入模型,从而得到更物理、更精确的结果。
- 针对系统突变,有专门的快速模型恢复算法。

稀疏优化现已是一类成熟的算法。选择合适的优化算法,结合正确的坐标、数据和函数库,能够帮助我们稳健地发现隐藏在数据背后的简洁物理规律。
015:基于物理信息机器学习的差异建模
概述
在本节课中,我们将学习一种名为“差异建模”的机器学习方法,用于对动力学系统进行建模。我们将探讨如何结合已知的物理原理与机器学习,以更高效、更准确地描述复杂系统。
从零学习与差异建模
上一节我们介绍了使用现代机器学习工具对动力学系统进行建模。本节中,我们来看看一种更现实的建模视角:差异建模。
通常,当我们尝试使用新的机器学习技术来学习动力学系统时,我们会进行端到端的学习。我们假设对系统一无所知,并试图从零开始学习一切。这种方法可以展示机器学习的能力,证明其能够学习这些复杂系统。

然而,与其在没有任何先验知识的情况下从零开始发现模型,更现实的情况是你从对物理的部分知识开始。你可能有一个理想化的模型,例如双摆或自动驾驶汽车的哈密顿量或拉格朗日量。你可能知道系统必须满足的某些约束或对称性,例如守恒定律。你并不确切知道动力学,但你拥有这种部分的物理知识作为起点。
因此,我认为更合理的做法通常是尝试学习差异。你从这个不完美的模型开始,并可能希望将机器学习的重点放在对差异的建模上。这是模型与数据不匹配的部分。我认为这是一种更现实的方法,用于处理自主系统和机器人,快速、动态地学习:从一个不完美或理想化的模型开始,然后将机器学习的努力集中在差异上。
今天,我将讨论如何做到这一点,并探讨何时应该进行端到端学习,何时应该让机器学习模型捕捉差异,以及何时不应该。这与历史上的概念有关,例如万有引力定律。
差异建模实例:双摆控制
以下是一个我非常喜欢的例子,由Kair Dan Kayman(与Nathan Cutzon和我一起工作的博士生)完成。这是我在华盛顿大学机械工程实验室的一个双摆装置。
你可以看到这里的设置,他试图做的是将其摆动起来并稳定这个倒置的双摆。这是一个相对简单的机械系统,在纸上,你可以推导出拉格朗日量或哈密顿量,并可以从这些框架推导出运动方程。

但事实证明,当你使用那个理想化的哈密顿量或拉格朗日量模型进行控制设计时,该模型存在缺陷,使得准确有效地摆动和稳定系统变得非常困难。
这些缺陷是什么样的?例如关节中的非线性轴承颤振或风阻。这些通常不在我们的第一性原理物理中进行建模,或者至少很难做到。但是,当你使用机器学习技术加入一个差异模型时,当你用实验数据对你的理想化模型进行差异建模时,你就可以开始在这个差异模型中捕捉那些细微的影响,然后你就可以执行相当出色的控制任务,比如摆动并稳定这个双摆。
差异建模的优势:结合两种方法的优点
我们可以从两个维度来看待这个问题:从易到难。
- X轴:建模扰动和未知物理。这是你知道的轴承颤振和风阻出现的地方,用第一性原理物理(纸笔、教科书物理)来建模这些非常困难。
- Y轴:整合已知物理的难度。例如,在那个双摆中,我知道系统被约束在角坐标θ1和θ2中,我可以用笛卡尔坐标X、Y来写它。但我需要知道系统强制执行一些约束,这些轴承约束。这对于机器学习来说通常很难学习。很难学习哈密顿能量是守恒的,或者系统被约束在一个圆环或某些环面构型空间上。
因此,我认为这是一组非常有趣的坐标轴,可以说明为什么需要这些混合差异模型。有些事情机器学习很容易做到,比如它们可以通过收集数据来学习那些轴承颤振和风阻模型。第一性原理模型可以学习哈密顿能量应该守恒,并且系统被约束在环面上。
所以你希望两全其美。你不想用第一性原理做所有事情,也不想用机器学习做所有事情。你希望在这两者之间找到一个最佳平衡点,在那里你能获得两者的最佳效果。
希望这条曲线实际上更像一条帕累托最优曲线,这里有一个最佳拐点,我们的差异模型就位于此处。我们用第一性原理获得尽可能多的信息,并尽可能多地融入先验知识,然后第一性原理模型无法捕捉的所有东西,比如风阻,我们将用机器学习来建模这种差异。

那个机器学习可以是任何东西。它可以是一个深度神经网络。它可以是一个动态模态分解模型,非线性动力学的稀疏识别,一个高斯过程模型。这不仅仅是深度神经网络,而是某种数据密集型或数据驱动的模型,这就是我认为的机器学习。所以这是一个两全其美的最佳平衡点。

差异建模的应用场景
你可以将此应用于许多系统。我向你展示了双摆的摆动,这是我们波音先进研究中心的一个机械臂系统。同样,随着这个系统老化,关节移动的方式和电机行为的方式会随时间变化,因此当你构建数字孪生并希望整合老化或不同环境等因素时,这些差异模型也非常重要。

核心思想总结
简单总结一下,这个想法是:你将在第一性原理物理擅长的地方使用它,在我们的不完美模型中强制执行诸如约束、守恒定律和对称性之类的东西;你将使用机器学习擅长的地方,即从数据中建模那些真正棘手、难以量化的部分;你将把它们结合起来,希望得到一些易于训练且满足基本物理原理的东西。
历史视角与哲学思考

现在,在这一点上,这是这个想法的核心内容。但我想退一步,谈谈这在历史上是如何体现的,以及我们作为工程师可以学到的一些关键要点和注意事项,关于如何以及何时应用机器学习来建模动力学系统,以及可能出现什么问题。
我有时会展示这部电影,我非常喜欢Moin Christen的这个可视化。它展示了地心太阳系和日心太阳系这两种世界观之间的差异。
当然,你可以看到,如果你把地球放在太阳系的中心(这是人们一千多年来所认为的),动力学非常非常复杂。很难得到一个简单、理想化的模型来描述这里的行为。当你有正确的坐标系时,得到一个简单模型要容易得多。
但我想在这里指出的是,从亚里士多德模型(抱歉,是托勒密的地心系统中的“本轮套均轮”模型)到日心系统中开普勒的运动定律和哥白尼体系,我们花了很长时间。我要指出的是,托勒密的体系,它处于错误的坐标系中,是错误的物理。实际上,在很长一段时间里,它比开普勒的模型更准确,而开普勒的模型拥有正确的物理,将太阳置于太阳系的中心。
在某种程度上,存在这些差异、未测量的变量(我们当时还不知道的行星)以及我们无法预测的力,使得开普勒实际正确的理想化物理模型不如托勒密的模型拟合得好。我认为这对于我们作为机器学习工程师在学习动力学系统时是一个非常重要的点。很容易对数据过拟合。托勒密模型本质上是太阳系数据的傅里叶变换,它极其准确,比正确的模型更准确,因为存在差异,因为有尚未被测量的行星。
因此,你必须思考你试图测量和建模的核心部分是什么。

另一个我非常喜欢思考的例子是伽利略的落球实验。在某种意义上,伽利略和这个著名的落球实验,他扔下两个不同密度的球,它们以相同的速率下落,并同时击中地面。
这是一个设计非常巧妙的实验,我认为关于这个故事有很多历史性的复述或小虚构。如果你看伽利略的落球实验,这本质上应该证明存在一种普遍的万有引力定律,一个引力常数,并且物体无论密度如何都以相同的速率下落。
但我们知道这并不完全正确。我们所有人都知道,如果你扔下一个沙滩球和一个保龄球,它们确实以不同的速率下落,因为存在这些额外的力。不仅仅是重力作用在这些物体上,你还有流体力、阻力、粘性阻力以及这些不同物体上的湍流力。例如,如果你增加下落物体的速度,随着流体力的变化和分叉,你会经历所有这些不同的阻力状态,根据非常非常复杂的物理。
因此,在某种程度上,伽利略的落球实验试图说这些球以完全相同的速率下落,因为存在一个恒定的重力加速度,这忽略了一堆差异物理。那些落球中存在差异,模型没有捕捉到,你必须忽略它们,如果你想揭示那种恒定的重力加速度。
事实上,伽利略不仅仅是通过从比萨斜塔上扔球来发现这一点的。他做了非常仔细的实验。抱歉,让我退一步说。
如果你实际收集数据,你不是扔密度大的球,而是扔沙滩球、篮球、威浮球和高尔夫球,你很可能不会得出伽利略的恒定加速度。你更可能得出亚里士多德的模型,即球下落或穿过空气的速率在某种程度上与其质量或密度成正比。如果我扔一个棒球,它会比扔一个沙滩球飞得远得多,因为沙滩球的阻力在某种程度上与其密度有关。所以,这再次成为一千多年来的主流模型,因为它更符合数据。

因此,在某种程度上,如果你想揭示那种普遍的理想化模型(这正是伽利略所做的),你必须将系统中起作用的差异和不同类型的物理力分离开来。
在某种意义上,伽利略所做的不仅仅是从比萨斜塔上扔球。他还做了其他非常仔细的实验,观察摆如何在非常受控的静止环境中振荡,观察球如何沿着不同坡度的斜坡滚动,这样他就可以控制阻力类型和那些差异,并控制那些额外的影响。我认为这再次是一个极其重要的警示故事,对于我们作为机器学习工程师来说,当我们有一个新系统时,比如我们试图学习球如何在空中移动或下落,我们想学习物理。
我们更有可能学到亚里士多德的模型,这不是真正的底层物理,因为它由于那些差异项、由于现实世界的复杂性和流体阻力而更符合数据。
所以这是一个你必须问自己的非常重要的哲学问题:我想学习哪一个?这是一个公平的问题。我想学习在一个完美的世界中存在恒定的重力加速度,所有球都应该以相同的速率下落吗?还是我想学习完整的、棘手的湍流阻力物理,并获得真实球如何下落的更准确模型?这是一个公平的问题。在不同的情况下,你会想学习不同的模型。所以你必须记住这一点。

现代实验验证与模型选择
有一组实验被进行,这是与Brian De Silva(当时是Nathan Cutzon和我的博士生)以及Nathan的一些合作者一起完成的工作。他们基本上做了这个实验。他们拿走了所有这些不同的球,并从一座五层停车场的屋顶扔下它们,观察并跟踪它们落到地面的运动。所以你有高尔夫球、网球、棒球、威浮球、篮球,所有不同的密度,所有不同的阻力特性。

如果你看数据,这是高度,这是它们从大约40米高处下落时的频闪测量,你看到它们都以不同的速率下落。同样,原始数据更像亚里士多德模型,即下落速率在某种程度上取决于它们的密度。
如果你绘制高度随时间的变化图,你会看到它们都采取不同的轨迹,这些虚线是物理的不同模型。这是没有摩擦的理想化重力,然后白色和黄色的虚线是具有某种基于速度的阻力模型,这只是在对数图上的相同数据。
所以你看到数据实际上并不支持这些模型中的某一个,它到处都是。所以我们可以做许多实验,这是使用我们的非线性动力学稀疏识别算法,你输入一组可以描述加速度的候选项,仅通过回归,你试图看看哪些项最能描述数据。
对于这些不同的球经过多次下落,你会得到不同的项出现和消失。你会得到虚假项,这个x不应该在那里,这个v²不应该在那里,所以根据伽利略的说法,这是错误的物理。
现在,如果你添加一个组稀疏性惩罚。也就是说,相同的物理必须成立,相同的项必须存在于所有球的所有下落中。如果你添加组稀疏性,你基本上就排除了所有这些虚假项,并学习了实际的动力学:x的双点(加速度)等于一个大小为9.8的常数(重力),并且存在一种与速度成正比的阻力或耗散项。这是非常简单的基于速度的阻力模型。
因此,必须非常小心地约束你的机器学习算法以学习正确的物理,因为实际数据并不支持这一点。数据表明存在密度依赖项,如果你只看威浮球下落,还有其他物理更可能描述你的数据。
我只是发现这对我自己非常有启发性,我知道我们经常讨论这个问题,在我们的团队中。这确实开始引发一个问题:你想要什么样的模型?
你想要一个实际上捕捉了这些不同类型球之间所有变化的模型吗?这个模型确实包含一个密度项,并捕捉了这些球的湍流阻力尾流。还是你想要更像伽利略的简单、理想化的物理?这与差异建模的问题以及你如何建模、如何控制学习过程有关。
所以,当你用机器学习建模系统时,思考你想要什么样的模型,这是一个非常重要的想法。你想要一个可以分析、从中学习并能很好推广的理想化模型吗?还是你想要一个仅仅通过蛮力更准确地拟合你的数据的模型?你想要伽利略还是亚里士多德?
总结

本节课中,我们一起学习了差异建模的核心概念。我们了解到,结合已知物理原理与机器学习对差异进行建模,是一种更高效、更现实的系统建模方法。我们通过双摆控制实例看到了其优势,并从历史案例(如托勒密体系与伽利略实验)中认识到,在设计机器学习模型时,必须审慎思考我们究竟希望模型捕捉何种层面的物理规律——是追求普遍、简洁的理想化模型,还是追求对复杂现实数据的高精度拟合。这取决于具体的应用场景和目标。
016:哈密顿神经网络 🧠⚛️

在本节课中,我们将学习一种名为“哈密顿神经网络”的自定义神经网络架构。这种架构利用了许多动力系统固有的哈密顿结构,从而能够从嘈杂的观测数据中更好地学习系统动力学。
概述
哈密顿动力学在现实世界中无处不在,例如弹簧上的质量块、单摆、双摆等机械系统,以及许多流体流动。哈密顿系统通常与能量守恒的机械系统相关。本节课介绍的这篇2019年NeurIPS论文,巧妙地将我们已知数百年的哈密顿动力学结构(一种特定的对称性)融入到特定的神经网络架构和损失函数中。这使得我们能够用更少、更嘈杂的数据学习到更好的模型。
哈密顿动力学背景 📜
在深入神经网络之前,有必要了解哈密顿动力学本身并非机器学习领域的新概念。从伯努利、牛顿、欧拉、拉格朗日到哈密顿,我们对机械系统及其微分方程的理解经历了数百年的发展。哈密顿动力学在其当前形式下已存在至少150年。
哈密顿系统通常被认为是能量守恒或无耗散的系统。能量守恒是埃米·诺特定理中讨论的众多不变性和对称性之一,该定理深刻揭示了对称性如何影响特定系统的动力学。将物理原理融入机器学习是我们的核心目标,而对称性正是“物理性”最基本的概念之一。

数值积分中的结构重要性 🔄
有些系统(如单摆)很容易进行时间积分,其动力学是确定性和非混沌的。然而,像双摆这样的混沌哈密顿系统则非常难以数值积分。
传统的龙格-库塔积分方案通常会在这些系统上失败,因为它们的设计并非为了守恒系统的能量等守恒量。在理想的无摩擦情况下,双摆的能量应该守恒。但如下图所示,基准解(地面真值)的能量保持在常数60,而采用自适应步长的四阶龙格-库塔法(ODE45)的能量会迅速发散。

因此,存在一类专门的手工积分器,称为辛积分器或变分积分器,它们能保持哈密顿结构(辛结构)或满足欧拉-拉格朗日方程的结构。这些积分器在守恒系统感兴趣的量方面表现要好得多。
核心观点是:哈密顿动力学或欧拉-拉格朗日动力学的结构至关重要。如果不尊重这些结构,只是朴素地向前积分,会得到糟糕的结果;但如果将结构融入其中,则会得到好得多的结果。这正是哈密顿神经网络的核心思想——尝试将这种辛结构“烘焙”到神经网络架构中。
哈密顿神经网络架构 🏗️
哈密顿神经网络的基本思想非常巧妙。假设我们有一个系统,其状态由位置变量 Q 和动量变量 P 描述。
- 朴素方法(基线):构建一个前馈神经网络,直接根据 Q 和 P 预测导数 Q̇ 和 Ṗ。这类似于神经ODE中的常规做法。
- 哈密顿神经网络方法:不直接学习动力学 Q̇ 和 Ṗ,而是学习一个哈密顿函数 H(同样使用一个以 Q 和 P 为输入的大型神经网络)。然后,通过以特定方式取 H 的偏导数,使其满足哈密顿方程,从而间接得到 Q̇ 和 Ṗ。
这种方法在原则上融入了哈密顿结构,因此模型应该能更好地守恒能量,并且能够从更嘈杂、更粗糙的数据中学习,最终得到非常清晰、保守的相图轨迹。
哈密顿方程与损失函数 ⚖️
哈密顿方程的形式如下,它定义了系统必须满足的辛结构:
Q̇ = +∂H/∂P
Ṗ = -∂H/∂Q
其中,Q 是广义位置坐标向量(如摆角),P 是对应的广义动量向量。对于一个哈密顿系统,其支配 Q 和 P 的微分方程必须满足这种结构(注意第二个方程前的负号是关键)。
哈密顿神经网络学习函数 H,然后构建一个自定义损失函数来确保上述方程成立。该损失函数本质上要求:
- 预测的 Q̇ 应尽可能等于 ∂H/∂P。
- 预测的 Ṗ 应尽可能等于 -∂H/∂Q。
损失函数可以形式化地表示为:
Loss = ||Q̇ - ∂H/∂P||² + ||Ṗ - (-∂H/∂Q)||²
通过现代机器学习框架的自动微分功能,我们可以高效地计算这些偏导数。
因此,哈密顿神经网络可以看作是一种自定义的神经ODE,它增加了额外的结构约束。我们既通过架构选择(学习 H )来融入物理,也通过损失函数(促进辛结构)来融入物理。

性能表现与展望 📊

在质量-弹簧系统、理想摆和真实摆等相对简单的玩具问题上,哈密顿神经网络(下图中黄色线)在跟踪真实守恒能量方面,比朴素的基线神经网络(蓝色线)表现要好得多。

这验证了我们的预期:如果希望算法守恒已知的守恒量(如总能量),融入哈密顿结构是至关重要的。
一个有趣的课后挑战是:将哈密顿神经网络应用于双摆这样的混沌系统。在混沌系统中,准确跟踪总能量非常困难,这将是一个更有挑战性的测试案例,可以更深入地验证该方法的有效性。
总结
本节课我们一起学习了哈密顿神经网络。这是一种通过架构设计和损失函数,巧妙地将哈密顿力学(辛)结构融入机器学习模型的优雅方法。对于我们在科学和自然界中观察到的许多机械系统和物理系统而言,这种结构至关重要。实验表明,仅仅在损失函数中融入这种辛结构,就能对学习效果产生巨大的积极影响。
这是一个非常酷的想法,并且存在相关的扩展,例如拉格朗日神经网络,它基于欧拉-拉格朗日方程而非哈密顿方程,具有一些关键优势,我们将在另一个视频中介绍。
017:拉格朗日神经网络


在本节课中,我们将学习一种名为“拉格朗日神经网络”的巧妙神经网络架构。这种架构将欧拉-拉格朗日方程的结构融入神经网络,从而在估计、预测和建模机械系统(如双摆)时,显著提升其性能。这是一种我非常喜欢的定制神经网络,因为它巧妙地将物理学原理融入了网络架构和损失函数中,并展现出卓越的性能。
从哈密顿神经网络到拉格朗日神经网络
上一节我们介绍了哈密顿神经网络。如果你已知一个系统具有哈密顿结构(例如能量守恒),那么哈密顿神经网络不是简单地学习状态向量(位置 Q 和动量 P)的时间导数 Q̇ 和 Ṗ,而是学习一个中间的哈密顿函数 H。通过对其求特定偏导,可以得到 Q̇ 和 Ṗ。这是一种强制运动方程满足哈密顿或辛结构的巧妙方法。
拉格朗日神经网络是哈密顿神经网络思想的一种延伸或变体,但它具有一些关键优势,我们将在本节中探讨。
物理学的两种视角:拉格朗日与哈密顿
在物理学中,对于机械系统或经典力学,描述运动方程有两种本质上等效的视角:
- 拉格朗日视角:写出拉格朗日量 L,并建立欧拉-拉格朗日方程。这是一种物理学的变分方法。
- 哈密顿视角:写出哈密顿量 H,并建立哈密顿方程。
在大多数情况下,这两种视角是等效的,是同一图景的对偶版本。虽然存在一些细微差别,但可以认为它们是高度互补的。本文采用了拉格朗日视角。
朴素方法的局限性
如果我们采用朴素的方法,即直接使用前馈网络学习 Q̈ 作为 Q 和 Q̇ 的函数方程,对于已知具有能量守恒或某种对称性的系统,这种朴素方法通常无法保持该守恒量或对称性。
以双摆为例,能量可能会逐渐耗散或爆发。而如果强制网络满足拉格朗日量和欧拉-拉格朗日方程的结构,则更有可能保持系统的能量或已知的对称性。
因此,如果你知道系统具有某些对称性、守恒量或拉格朗日结构,这是一种将物理知识融入神经网络架构的极其简单而强大的方法。
与变分积分器的类比
在数值积分领域,也存在类似的思想。对于双摆这样的系统,如果使用朴素积分器(如四阶龙格-库塔法 ODE45),能量这个本应守恒的量会迅速发散。
然而,存在一类称为“变分积分器”的数值积分器,它们专门设计用于尊重给定特定拉格朗日量的欧拉-拉格朗日方程结构。这类积分器在保持能量守恒方面表现要好得多。
变分积分器在科学计算中广泛应用,例如预测行星、小行星等混沌系统的运动,这些系统也由欧拉-拉格朗日方程支配。
我介绍这一点,是因为它与我们使用拉格朗日神经网络的做法直接平行。朴素的方法(如龙格-库塔法)效果不佳,需要将欧拉-拉格朗日结构融入积分器才能取得好效果。神经网络也是如此:如果我们融入欧拉-拉格朗日结构,它就更有可能保持对称性和守恒量。
拉格朗日神经网络的核心思想
拉格朗日神经网络的核心思想如下:
它不直接学习支配状态变量(如摆的 θ 和 θ̇)的微分方程,而是使用神经网络学习一个称为拉格朗日量 L 的中间函数。
然后,它利用自动微分(如 JAX)以正确的方式计算该拉格朗日量所需的偏导数,从而恢复欧拉-拉格朗日方程。并在损失函数中强制要求该方程必须成立。

因此,拉格朗日神经网络是一种巧妙的选择:架构上选择对拉格朗日量建模,损失函数上确保该拉格朗日量满足欧拉-拉格朗日方程。你学习的拉格朗日量使得欧拉-拉格朗日方程被满足,这是一种将拉格朗日动力学融入神经网络的聪明方式。
相对于哈密顿神经网络的优势
与最接近的思想——哈密顿神经网络相比,拉格朗日神经网络有一些关键优势。
这是一个微妙但非常重要的点:在哈密顿神经网络中,你需要知道正确的变量选择,即位置 Q 及其对应的共轭动量 P。有时这很容易,但在某些拉格朗日或哈密顿动力学情况下,计算这些共轭动量变量 P 可能很麻烦。
哈密顿神经网络需要所谓的“正则坐标”,而拉格朗日神经网络不需要这些正则坐标。因此,拉格朗日神经网络对于任意选择的 Q 和 Q̇ 都更灵活,在难以计算共轭动量的复杂情况下更可能适用。
实现原理与损失函数
拉格朗日神经网络学习系统的拉格朗日函数 L,然后利用自动微分计算必要的偏导数。
我们知道,学习到的拉格朗日量应满足欧拉-拉格朗日方程。这是物理学中最基本、最普遍的方程之一,它概括了最小作用量原理。该原理在量子力学、广义相对论、经典力学、光学、电磁学中几乎总是成立的。
通过数学推导(详见原论文),我们可以得到 Q̈ 应该等于一个由拉格朗日量 L、Q 和 Q̇ 构成的表达式。在现代机器学习框架(如 JAX 或 PyTorch)中,可以利用自动微分相对容易地计算这个右侧表达式。
然后,可以将这个可计算的右侧项与真实的 Q̈ 之间的差异纳入损失函数。具体来说,可以计算 Q̈ 减去由 JAX 计算出的所有项,并取其范数。如果这个损失项很小,就意味着你的欧拉-拉格朗日方程得到了满足。
这是一个非常巧妙的想法:我们选择学习拉格朗日量的架构,并添加一个自定义损失函数,以确保欧拉-拉格朗日方程得到满足,所有这些复杂的数学计算都可以借助 JAX 完成。

与神经ODE的关系
拉格朗日神经网络是神经ODE的一个定制版本。神经ODE就像是残差网络的连续时间版本,它用神经网络学习微分方程右侧的函数 f,即 Ẋ = f(X)。

原则上,拉格朗日神经网络很像神经ODE,只是多了一个中间步骤:我们先学习一个拉格朗日量。


代码实现与总结
你可以下载相关代码,实际运行和测试它。代码实现起来实际上相当容易。以下是关键部分:构建一个简单的前馈神经网络(例如,三个全连接层加激活函数)来学习拉格朗日量 L。然后使用 JAX 计算关于 Q 和 Q̇ 的所有偏导数,以确保欧拉-拉格朗日方程公式得到满足。


本质上,它是一个带有额外结构的神经ODE:增加了学习拉格朗日量的中间步骤,以及一个自定义损失函数来确保学习到的拉格朗日量确实满足你数据上的欧拉-拉格朗日方程。
令人惊讶的是,我们可以用几行 JAX 代码实现这个操作。这原本可能很混乱,但借助 JAX 或 PyTorch 等现代机器学习工作流,它变得相对容易。
总结:本节课我们一起学习了拉格朗日神经网络。这是我最喜欢的物理启发式神经网络架构之一,因为它融入了物理学中最基本的思想之一——最小作用量原理。它通过两个阶段将拉格朗日物理学融入网络:一是通过架构选择对拉格朗日量本身进行建模;二是通过自定义损失函数,强制要求学习到的拉格朗日量 L 在你数据的轨迹上满足欧拉-拉格朗日方程。
这是一个非常酷的想法,我强烈建议你下载代码亲自尝试,看看能添加多少噪声数据它仍然有效,或者尝试将其扩展到非确定性或非经典力学系统。这是一篇非常出色的论文,也是对哈密顿神经网络的一次精彩改进,具有关键优势。
018:神经隐式流 🧠

在本节课中,我们将要学习一种名为“神经隐式流”的神经网络算子学习方法。该方法由邵攀博士在其博士后期间与我和Nathan Cutz共同开发,并于2023年发表在JMLR期刊上。我们将探讨其架构、工作原理、应用场景以及优势。
架构概览 🏗️
神经隐式流的架构与深度算子网络有相似之处。它包含两个主要部分:形状网络和参数网络。这种分离设计使得网络能够处理不同类型的任务。

网络组件详解
上一节我们介绍了神经隐式流的整体架构,本节中我们来看看其核心组件——形状网络和参数网络的具体功能。
形状网络的功能类似于物理信息神经网络。它负责对感兴趣的输出场(如速度场)进行建模,将其表示为空间坐标的函数。其核心公式可以表示为:
U = ShapeNet(x)
其中,U是输出场,x是空间坐标。
参数网络则负责参数化形状网络。它将系统参数(如流体流动的马赫数、雷诺数)或时间等外部变量作为输入,并输出用于调制形状网络的参数。这可以表示为:
params = ParameterNet(μ, t)
其中,μ是系统参数,t是时间。
这种设计的巧妙之处在于,它将主要与空间相关的部分(形状网络)和主要与外生变量相关的部分(参数网络)分离开来。
工作原理与应用示例 💡
理解了网络组件后,我们来看看神经隐式流是如何工作的,以及它能做什么。
神经隐式流通过在不同参数值和不同时间点的PDE解上训练这些网络来工作。训练完成后,它可以预测在新的参数μ和新的时间T下的PDE解。
以下是神经隐式流的几个关键应用方向:
- 数据压缩:该方法可用于压缩大型湍流数据集。通过训练形状网络和参数网络的权重来存储数据,其存储开销远小于原始流场数据,实现了高效的神经压缩。
- 稀疏传感与全场重建:该方法可以与QDMe等稀疏传感器布置技术结合。通过使用稀疏测量数据作为参数网络的输入,可以推断出整个流场在所有空间点上的数据。
- 处理任意网格数据:这是神经隐式流的一大优势。由于形状网络只是一个关于空间坐标的函数,因此可以处理来自不规则网格、甚至随时间或参数变化的网格的数据,这对于实际工程应用至关重要。
性能表现与网络定制 ⚙️
神经隐式流在基准测试中表现出色。例如,在模拟衰减各向同性湍流等物理过程时,它比许多其他MLP架构或傅里叶神经网络更能忠实捕捉真实的物理特性。

此外,形状网络的设计具有很高的灵活性。开发者可以根据对空间函数表示的理解来定制它。
以下是几种形状网络的构建方式:
- 使用类似于带有SIREN层的残差网络结构。
- 构建类似于U-Net的结构。
- 通过将时间依赖性和参数依赖性卸载到参数网络,形状网络可以专注于使用ResNet或U-Net等结构来最好地表示空间函数。
总结与展望 🚀
本节课中我们一起学习了神经隐式流方法。我们了解到,它是一种将形状网络与参数网络分离的算子学习方法,能够用于PDE解预测、大数据压缩、基于稀疏测量的全场重建,并且具有处理任意网格数据的强大能力。
这是一个非常新颖且令人兴奋的研究领域。所有算子学习方法都相对较新,存在许多可以改进、扩展和分析的空间。例如,可以考虑如何将已知的物理对称性先验知识融入到此类架构中,或者对网络间的潜在表示进行诊断分析。鼓励大家下载代码进行尝试,探索其边界并思考如何将其扩展应用到自己的研究问题中。


019:神经常微分方程 🧠➡️📈

在本节课中,我们将学习神经常微分方程。这是一种用于建模常微分方程等微分方程的强大现代机器学习架构。我们将了解其核心思想、它与残差网络的关系、工作原理以及其优势。
概述
神经常微分方程的核心思想是使用神经网络 F 来建模描述某个系统状态 X 的微分方程。我们知道许多系统,如钟摆、流体流动或机器人,都可以用微分方程 ẋ = F(x) 来建模。我们将尝试用神经网络来建模这个微分方程的右侧。
从残差网络到神经常微分方程
为了理解神经常微分方程的背景,回顾残差网络会很有帮助。残差网络是现代神经网络中一个基石性的算法。其思想很简单:如果我们想建模某个状态 X 在时间步 k 和 k+1 之间的输入输出关系,一个非常合理的方法是直接将输入复制过来,只建模输出与输入之间的差异。我们用神经网络 F 来建模这个所谓的“残差”。
用数学形式表达,这意味着输出 x_{k+1} 等于输入 x_k 加上建模残差的神经网络 F:
x_{k+1} = x_k + F(x_k)
对于有科学计算经验的人来说,这会认出这几乎就是教科书上的欧拉数值积分器。这是用最简单的方式积分微分方程 ẋ = f(x),取时间步长为1并向前积分。这是一个简单的欧拉积分器。
然而,我们知道欧拉积分,尤其是在大步长下,是一种较差的积分微分方程的方法。它虽然快速简便,但非常容易不稳定且误差很大。如果残差网络是通过某个向量场 F 进行欧拉积分,那么我们的神经网络学习的这个残差也可以被视为一个向量场,即某个微分方程 ẋ = F,我们本质上是用这个残差网络对其进行时间步进。
既然基于这个简单思想(建模残差并进行本质上的欧拉积分)的残差网络如此成功,那么也许我们可以使用更好的数值积分器,做出类似残差网络但更优的东西。这就是神经常微分方程背后的思想。
神经常微分方程的核心思想
神经常微分方程不是建模从 x_k 到 x_{k+1} 的大步长前向映射(即欧拉步),而是建模微分方程本身,即实际的向量场 ẋ = F(x)。我们可以非常精确地建模那个向量场,然后使用更高级的数值积分方案来步进那个状态,并根据训练数据(图中的白点)来训练这个 F。
换句话说,神经常微分方程建模连续时间微分方程的右侧。这是对该连续时间微分方程的一种离散时间近似。我们可以用神经网络直接建模 F。如果我们有这个函数 F,根据经典的数学(如牛顿、莱布尼茨、欧拉、拉格朗日,已有数百年历史),我们知道如何求解这些微分方程。即使在现代计算时代,我们在数值步进求解这类微分方程方面也比在现代机器学习方面有更多经验。数值积分比现代机器学习古老得多。
因此,如果我们有这个微分方程的神经常微分方程表示,并且我们用神经网络学习这个 F 函数,我们本质上可以精确地写出 x_{k+1} 关于这个函数 F 的表达式。这不是一个近似,这是给定这个微分方程下,时间步 k+1 时 x 的精确表达式。
虽然这个表达式本身很难计算,但存在比这种粗糙的前向欧拉解更好的数值积分器来近似 x_{k+1}。例如,我们可以使用二阶龙格-库塔方案、四阶龙格-库塔方案,甚至可以做一些更高级的,如使用辛积分器或变分积分器,以守恒物理的某些能量或结构。这是我喜欢神经常微分方程的一点:你可以使用不同的积分器,从而得到这个算法的不同变体。
与残差网络的关键区别
让我们退一步看。神经常微分方程受残差网络启发,但认识到残差网络本质上是拟合数据。这里的数据是这些小白点。它要求你的数据在时间上均匀采样,点之间有固定的时间步长。这是你能想到的用于建模任何类型微分方程的最差的数值积分器之一。因此,残差网络可能不是建模微分方程的最佳方式。
相比之下,神经常微分方程建模实际的微分方程,即右侧本身,而不仅仅是该微分方程的一个单时间步更新或流映射。一旦你以这种方式表示你的系统,并尝试训练你的神经网络来表示 x 对时间导数 d/dt 的连续右侧,现在你就可以使用不同的数值积分方案来训练 F 的参数,使其与这些白点数据一致。
更清晰地说:使用神经常微分方程,我实际上可以拥有时间上不规则间隔的点。我不需要它们像在残差网络中那样均匀间隔,因为我本质上是在使用这些数据点来训练这个神经网络 F 的参数。我所做的是调整 F,调整 F 的参数,使得当我离散化这个数值积分器并尝试预测这些白点时,它们尽可能准确地拟合。我正在学习底层的向量场 F,以便如果我沿着那个向量场进行数值积分,我得到的结果尽可能接近我采样的数据。
这是一个非常聪明的想法。原则上,神经常微分方程和残差网络之间的区别在于,因为我们建模这个连续时间系统并使用一个好的积分器,这就像:如果我让我的残差网络有一个更小的 Δt 和更多的残差层,那么它就是连续和离散时间的类比。这就像银行利息每年复利与连续复利相比,后者要好得多,能给我更准确的模型,并允许我处理关键特性:我可以处理间隔不均匀的数据,因为我可以使用更好的积分器在不规则时间步长上积分这个系统。这是一个非常酷的想法。
实际效果与优势
这是原始论文中的一个图,展示了一个相对简单的微分方程。顶部是一个标准的循环神经网络,这一层是一个神经常微分方程。点是训练数据,然后你可以看到黄色的预测和蓝色的外推。
循环神经网络的预测非常锯齿状,在训练数据上的预测或蓝色的外推方面做得不是很好。而神经常微分方程则对噪声更鲁棒,能够对训练数据进行平滑预测,并且对未来外推的准确性要高得多,因为我们使用这些训练数据学习到了一个更干净、更准确的向量场 F 表示。
因此,核心原则是:你正在学习向量场 F,并使用机器学习进行优化。本质上,通过调整那个向量场的参数,你专门调整这些参数,使得你的积分轨迹与观测数据点最匹配。我们将使用自动微分和反向传播的所有标准技巧,根据这些观测数据来调整 F 的网络参数。但在底层,我们正在使用比残差网络更好的高级数值积分器来对我们的向量场 F 进行时间步进。
扩展:加入物理结构
我想指出,你可以使用更好的积分器,比如二阶龙格-库塔、四阶龙格-库塔,但你也可以在这个神经常微分方程中加入额外的结构。有一些后续论文,比如2019年NeurIPS的“哈密顿神经网络”,在道德上属于神经常微分方程家族。他们所做的是添加这种额外的结构:他们将学习某个哈密顿函数,并从该哈密顿函数计算运动方程 q̇ 和 ṗ,从而保持系统的总能量。所以,这本质上是一个神经常微分方程,其中我使用的积分器被强制具有辛或能量守恒结构。这是一个非常强大的想法:你可以通过将积分器换成像哈密顿辛积分器这样的东西,使你的神经常微分方程守恒能量。
Cranmer等人一篇类似的后续论文将其扩展到“拉格朗日神经网络”。这里,他们不是在神经常微分方程积分器中强制辛或哈密顿结构,而是强制满足欧拉-拉格朗日方程。这就是所谓的变分积分器,它也具有在物理应用中至关重要的能量守恒特性。这是我最喜欢神经常微分方程的一点:它允许你融入额外的对称性和结构,使其更具物理意义。
技术细节:伴随方法与优化
我没有时间深入探讨这个算法如何工作的每一个细节。网上有很好的教程,我认为学习这些算法的最好方法是编写代码,下载别人的演示代码然后自己修改或尝试。但你可以看到计算图有点复杂,并不简单,其中有前向和后向时间部分。不过,我确实想深入一个关于神经常微分方程的技术细节,因为它非常重要,并且与更大的优化和动力系统领域(如强化学习、哈密顿-雅可比-贝尔曼方程)联系在一起。
神经常微分方程试图用神经网络建模这个 ẋ = F(x),即建模向量场 F 的微分方程。数学上,我们知道如何对这个微分方程进行时间步进。如果我有一个在时间 t_0 的初始条件,我可以使用这里的计算将其向前步进一个 Δt。这被称为流映射 φ,它将我的初始条件映射到未来 Δt 时间。这是经典的动力系统,就是微分方程。
但在神经常微分方程中,我们将使用神经网络表示这个函数 F。因此,它将具有参数 θ,我们将调整这些参数 θ,以尝试根据观测数据拟合这个函数 F。这里有很多自由参数:θ 中的自由参数、从什么初始条件开始、应该使用什么 Δt,还有一个隐藏状态。这篇论文中经常提到的一个想法就是这个隐藏状态 x(τ)。
我的数据是在离散时间点采样的,它们不一定在时间上均匀采样,但通常是离散时间采样。因此,在任何两个测量点之间,存在一个连续的隐藏状态 x,它是某个连续变量 τ 的函数,介于这两个测量点之间。本质上,这个流映射沿着隐藏状态 x(τ) 从时间 t_0 积分到 t_0 + Δt。
因此,这个隐藏状态将是我用来训练神经网络以调整参数 θ 来学习 F_θ 的实际优化算法中的一个重要组成部分。我将需要关于这个隐藏状态的信息,而这些信息不在我的训练数据中。这就是我即将讲述的数学内容:我如何以某种方式获取这个隐藏状态,并将该信息纳入我的神经网络训练优化中。
具体来说,我将需要计算我的损失函数相对于系统状态 x(t) 在观测数据点之间中间时间 τ 的偏导数,即我需要计算 ∂L/∂x(t)。
我将跳过大约五个小时涉及拉格朗日乘子的硬核动力系统优化内容,关于你实际上如何做到这一点。这是一个非常有趣的话题,我们将在目前正在开发的优化训练营中讨论。
长话短说,处理这个问题的方法之一是引入这个拉格朗日乘子变量 a(t)。这是一个虚拟变量,我将在训练神经网络时跟踪它。我将其定义为 -∂L/∂x。并且它满足这个微分方程。你可以通过一些优化推导并自己验证(使用链式法则等),这个微分方程满足这个虚构的虚拟 a 变量,它将是一个拉格朗日乘子。那个拉格朗日乘子本质上将在我优化自由参数时强制执行这个约束。
这也被称为伴随方程。我们在控制理论、工程设计与微分方程中已经使用基于伴随的优化几十年了,所以我们知道如何做。神经常微分方程论文的一大进步本质上就是如何在不手动积分的情况下进行这个拉格朗日乘子伴随计算。
这里的关键观察是:如果这个 F 函数是一个神经网络,我可以通过自动微分计算 ∂F/∂x,使用我通常用来反向传播误差和训练神经网络的工具。我也可以计算我需要积分我的伴随拉格朗日乘子状态的函数。
这意味着,我仍然在尝试做我一直想做的事:学习参数 θ 来参数化这个神经网络以近似我的动力学。并且存在这个隐藏状态 x 我需要跟踪,因为它对我的损失函数很重要。因此,为了跟踪它,我将引入这个满足这些动力学的拉格朗日乘子变量,并且我可以计算这些动力学,并可以使用这个神经网络 F_θ 的自动微分能力来积分和跟踪这个 a 变量。
这听起来可能很复杂,可能只有大约2%真正想理解神经常微分方程的人感兴趣。但这是一个重要的部分,它将此与使用拉格朗日乘子的相当重要的优化理论联系起来。关键的是,我们正在使用神经网络的自动微分来获得这个拉格朗日乘子的方程,而不是用纸笔从第一原理推导,那样行不通,会非常痛苦。这就是他们如何利用现代神经网络自动微分能力解决拉格朗日乘子伴随问题的方法。这很酷。
总结
本节课中,我们一起学习了神经常微分方程。总结来说,我们所做的是使用神经网络建模动力系统(微分方程)。我们是在连续时间中建模它,而不是像残差网络那样将其建模为离散时间更新。这给了我们在交换更好积分器方面更多的灵活性,例如具有辛或能量守恒等结构的积分器。它允许我们通过拟合底层连续向量场并使用更好的积分器沿这些轨迹积分该向量场,来更好地拟合不规则间隔的数据。这是一个非常强大的想法,有大量的扩展。
你应该尝试一下,看看如何让它工作。我们课题组和其他人也使用过的一种方法是:像动态模式分解和SINDy这样的方法,如果你有不规则间隔的数据,并不总是很好用。但你可以做的是:取你不规则间隔的数据,在其上训练一个神经常微分方程,然后你可以通过你的神经常微分方程积分得到规则间隔的数据,并将其用作SINDy的输入数据。因此,神经常微分方程功能强大,但可解释性不强:这个 F 是一个大型神经网络,你很难说“哦,那是 sin(x)”。但如果你有规则间隔的数据,你可以训练一个神经常微分方程,然后使用那个训练好的神经常微分方程来获取规则间隔的数据,然后将其传递给像SINDy或符号回归这样更具可解释性的东西。这是我们使用它的方式之一。

还有对神经偏微分方程的扩展,以及如前所述的对辛、能量守恒系统的扩展。这是一个非常酷的架构,我认为你应该尝试一下,它概括了最重要的基石算法之一——残差网络,使其更适合建模微分方程。
020:Python符号回归 🧠


在本节课中,我们将要学习一种名为“符号回归”的机器学习方法。与难以解释的“黑箱”神经网络不同,符号回归旨在从数据中发现人类可读的数学表达式,从而构建可解释的物理模型。
什么是符号回归? 🔍
上一节我们介绍了物理信息机器学习的目标。本节中我们来看看符号回归的核心概念。符号回归是一种机器学习过程,其输出是一个符号化的、人类可读的公式,例如包含正弦、余弦、指数等运算的表达式。
其核心思想是搜索一个由基本运算符和变量构成的函数树,以最佳方式拟合观测数据。这遵循简约原则:我们希望找到能描述数据的最简单模型,但又不至于过于简单。
PySR:一个强大的现代工具包 ⚙️

符号回归并非新概念,但PySR(Python Symbolic Regression)是一个由剑桥大学的Miles Cranmer教授开发的、功能强大且维护良好的现代软件包。它使全球的研究者都能使用这项技术进行科学发现。
以下是PySR工作流程的核心步骤,它借鉴了遗传编程的思想:
- 初始化种群:随机生成一组初始函数表达式(种群)。
- 遗传操作:通过“交叉”和“变异”等操作生成新的表达式。
- 交叉:交换两个表现较好的函数表达式的子树,类似于生物繁殖中的基因交换。
- 变异:随机改变函数树中的某个节点(如将加号变为减号)。
- 简化与优化:对表达式进行代数简化,并优化其中的常数参数。
- 选择:根据表达式对数据的拟合精度和复杂度,选择表现优异的个体进入下一代。
- 迭代:重复上述步骤,使种群不断“进化”。
符号回归的历史与发展 📜
上一节我们介绍了PySR的基本原理。本节中我们来看看符号回归方法的发展历程。符号模型发现并非全新事物,其前身“遗传编程”在20世纪80年代就已出现。
关键的突破来自于Bongard、Lipson以及Schmidt和Lipson的工作。他们意识到,遗传编程不仅可以学习任意的输入输出映射,还能用于发现支配物理系统的微分方程。例如,仅从双摆的运动数据中,就能以符号形式发现其哈密顿量(守恒的能量)。

这一思想也被应用于其他领域,例如,通过与Barrett And Noack等人的合作,我们使用类似的符号回归方法来“培育”和演化出用于控制复杂系统(如湍流)的有效控制律。
PySR包的重大意义在于,它极大地民主化了这项技术,使其成为一个设计精良、功能全面、易于所有人使用的强大工具。

PySR的核心特性与优势 ✨
PySR相较于其他经典实现,具有一系列深思熟虑的设计特性,使其能应用于更困难的问题。
以下是其主要优势:
- 功能全面:支持并行计算、自定义运算符、表达式简化、约束条件等。
- 经过广泛验证:在大量基准测试系统上表现优异,并提供了统一的实证基准测试框架。
- 优秀的软件工程:代码结构清晰,易于使用和扩展。
- 支持科学发现:已成功用于重新发现行星运动定律等实际科学问题。

简约原则与模型选择 ⚖️
PySR的一个巨大优势是它能帮助我们实践简约原则。在算法运行过程中,会产生许多不同复杂度的候选模型。

我们可以绘制模型的精度-复杂度帕累托前沿图。理想的模型位于前沿的“拐点”处,即在特定复杂度下精度最高,或者说,在满足精度要求的前提下复杂度最低。这使我们能够有依据地选择那个“尽可能简单,但又不至于过于简单”的模型。


本节课中我们一起学习了符号回归的概念,特别是PySR这一强大工具。它通过遗传编程的思想,从数据中演化出人类可读的数学表达式,为构建可解释的物理模型提供了重要手段。符号回归将简约原则内置于学习算法中,并能通过帕累托前沿辅助模型选择,是物理信息机器学习中不可或缺的技术。
021:残差网络


在本节课中,我们将开始探讨神经网络中的算子方法。这是一套非常强大且不断发展的方法。深度算子网络(DeepONet)由Lu Lu、George Em Karniadakis等人在论文中提出。
该论文展示了多项重要内容。论文内容非常丰富,是一篇值得一读的有趣文章。其核心思想是:如果一个常微分方程或偏微分方程受到某种外部强迫函数的影响,那么从该外部强迫函数到ODE或PDE的解函数之间存在一个映射,这个映射就是一个算子。
大多数神经网络基于万能逼近定理,旨在逼近输入-输出函数。但在这篇论文中,作者指出,对于大多数常微分方程和偏微分方程,我们真正关心的是将输入函数映射到输出函数的解算子。
这一点至关重要。标准的深度神经网络是万能函数逼近器,它逼近变量X的某个函数。但在DeepONet论文中,作者认为,在ODE和PDE问题中,我们不应试图逼近数据向量上的任意函数,而应估计将函数映射到函数的解算子。
普通神经网络通过一个函数将数据映射到数据。而PDE和ODE的解则将函数映射到函数,这就是算子。实际上,存在一个类似的算子万能逼近定理,它表明某类神经网络不仅能任意好地逼近函数,也能逼近算子。
这篇论文是对这一思想的现代演绎:在ODE和PDE中,我们实际上希望逼近那个将某个强迫函数映射为该PDE或ODE解函数的解算子。这是核心思想。接下来,我们将详细介绍这种架构的设计原理,包括为何需要分支网络和主干网络,以及输入函数和输出位置的含义。
这是建模ODE和PDE解算子的众多方法之一。此外还有傅里叶神经算子等方法。但DeepONet这篇论文是首次以深度学习方法,系统而专注地处理ODE和PDE解算子的现代论文。我们将从这里开始。
核心思想与架构
上一节我们介绍了学习解算子的核心概念。本节中,我们来看看DeepONet的具体架构设计。
其思想是,假设我有一个常微分方程组,它受到某种输入强迫的影响,例如某种控制、驱动或外部扰动。因此存在一个输入函数。我的ODE的输出函数(解)将取决于这个输入强迫。我可能在时间或空间的一些固定位置测量这个输入函数,并且可能希望在一个空间网格或时间网格上预测我的输出函数。
DeepONet的做法是将网络拆分。以下是实现这一目标的简单方法。
一种朴素的方法是使用一个大型的全连接网络,直接接收输入函数信息和输出函数位置信息,并预测ODE或PDE的输出。但DeepONet的做法略有不同。
它拆分成两个不同的大型神经网络:一个用于编码输入函数(即强迫ODE或PDE的强迫函数的特征),称为分支网络;另一个独立的网络用于编码在这些指定输出位置上的解输出函数的特征,称为主干网络。
该论文系统性地证明了,将网络拆分为分支网络和主干网络,比使用单一的大型前馈网络效果更好。这种“更好”体现在泛化能力更强、精度更高、训练更顺畅等方面。他们详细展示了这种将输入特征空间和输出特征空间分离的自定义架构,对于表示ODE和PDE的解算子是一个巧妙的想法。
深入理解解算子
我们已经多次提到“解算子”,现在让我们更详细地探讨其含义。
让我们看一个更简单的例子:尝试使用DeepONet来求解或分析一个常微分方程,因为ODE通常比PDE更容易理解。
假设我有一个ODE,例如描述某个机械系统、汽车悬架或摆锤。状态X随时间变化,遵循描述该系统物理规律的某个函数F。这个系统的动力学受到一个输入函数U(t)的影响。U(t)可以看作是我施加的控制或随时间影响系统的输入强迫。
给定一个特定的输入函数u(t),我想知道未来时间t的解x(t)。用DeepONet的语言来说,存在一个算子G,它接收这个强迫函数U,并输出我想要求解的解函数X(t)。因此,这个算子G将函数映射到函数,从强迫函数映射到解函数X(t)。在这种情况下,它通过流映射计算来实现。
这实际上就是我们写下常微分方程解的标准方式,即使用这里的流映射积分公式:x(t) = x(0) + ∫_0^t f(x(τ), u(τ)) dτ。
重要的是,当动力学是混沌的时候,这个流映射会变得极其敏感,并出现发散现象。这对于算子方法(如DeepONet和傅里叶神经算子)来说将是一个巨大的挑战,因为系统对初始条件和强迫非常敏感。如果我稍微扰动输入一点(ε),我的解算子G可能会导致未来的轨迹发散。因此,这些方法可能不太适用于混沌系统。当然,你应该尝试一下,编写代码并在确定性和混沌系统上测试。这里的核心思想是,我们试图使用神经网络来学习这个从函数到函数的算子函数G。
将其拆分为主干网络和分支网络似乎是实现这一目标的一种高效且有效的方法。
训练过程与数据表示
上一节我们讨论了算子的概念,本节我们来看看如何实际训练这样的网络。
实际训练时,你可能拥有高保真度的模拟数据,即为不同的输入函数和输出函数运行大量模拟;或者你从实验中收集测量数据。你需要做的是:在几个固定的传感器位置表征这个输入强迫函数。对于时间强迫的情况,你需要在几个时间点上表征这个输入函数。这些就是分支网络的输入:在指定时间点上的强迫函数。
然后,会有一些你希望预测未来解的输出位置。这些就是你希望得到解的输出位置。
你的分支网络和主干网络将学习潜在特征,这些特征编码了对该ODE重要的输入特征,以及该ODE可能生成的输出特征。它们将在这个输出场中重新组合,这个输出场就是实际的解,即算子G应用于这个输入函数的结果,它给出了你在下面指定的所有位置和时间上该ODE的解。
这是一个非常简单的想法。一旦我训练好这个网络,现在我可以给它一个新的输入函数,观察如果我给它一个从未训练过的不同强迫函数会发生什么。这能预测我的ODE在该新输入函数下的解吗?这就是我们所说的泛化能力。
DeepONet论文仔细地表明,至少对于相对简单的物理系统、简单的ODE和PDE,这种架构具有更好的泛化能力和训练效果。与使用单一大型全连接网络处理相同数据相比,它具有更好的收敛性、更低的误差和更强的泛化能力。因为单一大型网络更容易过拟合、更难训练、泛化能力更差。
应用范围与示例
我认为这是一个很酷的想法,而且它不只适用于ODE。我举的例子中,输入函数是ODE的时间强迫。但它同样适用于偏微分方程。输入函数可能是空间上所有点的强迫,我可能在空间上强迫我的PDE,并且我仍然希望学习从该强迫函数到我的PDE在空间和时间上解的算子。
最初的深度算子网络论文在一些相对简单的ODE和PDE上进行了测试。据我所知,没有涉及混沌系统。这些ODE和PDE要么是线性的,要么是弱非线性的。例如,ODE中有一个摆的例子,PDE是一个反应扩散的例子,这些系统相对良性,不会出现混沌混合。
我们知道混沌系统的解算子将是不可表示的复杂。实际上,庞加莱在100年前就证明了混沌系统的解算子是“不可表示”的,即使是万能函数逼近也会遇到这些“不可表示性”的限制。
因此,DeepONet对于非混沌系统效果非常好。论文中有一些很酷的例子。开发算法时总是从简单例子开始,他们也在这些简单例子上仔细演示了使用分支网络和主干网络实现泛化的思想。
例如,这是一个在空间上有强迫u(x)的偏微分方程。它是一个在空间和时间上变化的一维偏微分方程,根据这个强迫函数在空间上被强迫。这是一个随机的强迫函数,这是我们指定那些输入位置的方式。然后,你在这些白色标记的点上采样一个真实解,这就是针对特定强迫函数U的训练数据。你可以使用这类数据训练DeepONet(主干网络和分支网络),然后你可以预测,对于不同的强迫函数U(x),该PDE的解算子会是什么。这样,对于一个新的强迫函数U,我无需运行大型模拟就能得到PDE的解。这是一个非常酷的想法。


你可以看到,测试误差实际上呈现出非常好的指数收敛,我们称之为强收敛。当算法在误差与训练数据的对数-对数图上呈现近似线性关系时,这表明了强或指数级的缩放,这是DeepONet在这篇论文中探索出的一个非常强大的特性。
他们还研究了训练这个网络需要多少数据,并进行了相当仔细的分析,将其与全连接网络进行比较,并考察了多个ODE和PDE的例子。
总结与扩展思考
在本节课中,我们一起学习了深度算子网络(DeepONet)的核心思想。我们了解到,对于ODE和PDE问题,将神经网络视为从函数到函数的解算子逼近器,比仅仅视为函数逼近器更为直观和有力。DeepONet通过分支网络编码输入强迫函数的特征,通过主干网络编码输出解位置的潜在特征,从而有效地学习这个解算子。
这种方法在相对简单、非混沌的ODE和PDE上表现出色,具有更好的泛化能力和训练效率。然而,对于具有混沌动力学的系统,由于解算子的极端敏感性和复杂性,该方法可能面临挑战。
我鼓励你尝试实现它:下载代码,在论文案例上运行并复现结果,然后开始添加更具挑战性的特性,观察它在何处失效。例如,在洛伦兹系统这样的混沌ODE上尝试,可能会遇到很大困难。
此外,还有一些重要的扩展问题值得思考:
- 如何将物理约束(如能量守恒、质量守恒或已知的对称性)融入这个框架?是通过损失函数,还是添加额外的架构?
- 能否将DeepONet与物理信息神经网络(PINN)结合起来?这是一个非常有趣的问题。
请始终思考:这些方法适用于哪些问题?不适用于哪些问题?以及你如何扩展它们以纳入不同类型的物理知识或其他相关方法。


022:傅里叶神经算子

概述
在本节课中,我们将要学习傅里叶神经算子。这是一种将神经网络从通用函数逼近器推广为算子逼近器的方法,特别适用于求解偏微分方程等物理问题。我们将了解其核心思想、优势以及一些重要的扩展。
从函数逼近到算子逼近
上一节我们介绍了算子方法。深度算子网络将神经网络作为通用函数逼近器的思想,推广到了使用神经网络来逼近从函数到函数的算子。
一个函数可能将向量映射为向量。但一个算子,例如常微分方程或偏微分方程的解,会将一个函数映射为另一个函数,例如将初始条件函数映射为解函数,或将外力函数映射为解函数。
如果你对物理感兴趣,例如求解ODE和PDE,你可能希望将你的神经网络视为一个算子逼近器,而不仅仅是一个函数逼近器。这是一个在社区中酝酿的强大思想。傅里叶神经算子是神经算子的一种普遍形式,也是社区中算子学习的主要方法之一。

神经算子有很多变体,我们不会深入太多细节,因为有很多方法来构建和剖析它。我们将从高层次了解这些神经算子试图实现的目标,以及其大致的原理。
核心视角:图像到图像问题
我认为以下引用是一个非常重要的观点:算子学习可以被视为一个图像到图像问题。傅里叶层可以看作是卷积层的替代品。
如果我们考虑ODE或PDE的解,它们有时看起来像图像。例如,对于一个二维流体流动,我可能取一个初始条件并将其映射到最终条件,这是一个作用于输入函数的算子,但它看起来很像将一幅图像映射到另一幅图像。
就像处理图像时,我们可能会使用卷积层来提取特征。我们知道,在过去半个世纪里,我们解决计算物理问题的主要方式是基于傅里叶的谱方法。我们在傅里叶空间变换我们的系统,在傅里叶变换域中求解PDE(这通常是一个好的表示),然后进行逆傅里叶变换,回到空间坐标得到最终解。
因此,我认为他们在这里试图表达的是:我们知道傅里叶变换是物理学的良好坐标系。那么,为什么我们不使用这种空间,而是使用对图像到图像映射有帮助的卷积层呢?我们将在一个傅里叶嵌入空间中工作,因为我们知道这对于表示我们的PDE很有好处。
傅里叶变换:原始的通用逼近器
我们总是谈论神经网络的通用函数逼近性质。同样,神经网络也有通用算子逼近性质。
我的朋友内森·科茨几个月前向我指出,傅里叶变换也是原始的通用函数逼近器。这让我思考,我们是否过于强调神经网络的这个特性,因为还有很多其他通用逼近器。无论如何,傅里叶变换确实是一个通用函数逼近器。

零样本超分辨率:一个引人注目的特性
最初让人们对傅里叶神经算子感到兴奋的一个主要演示是它声称可以实现零样本超分辨率。你可以在低分辨率下训练一个纳维-斯托克斯求解器,然后增加网格分辨率,因为这个方法学习的是从函数到函数的算子。我可以改变函数指定的分辨率,从而获得解算子的超分辨率。
这是一个非常有趣的想法。他们在论文中演示了从64x64上采样到256x256,以及从20个时间快照上采样到80个时间快照。
我们必须问自己,这是否好得令人难以置信?我们知道没有免费的午餐。我们必须思考,在什么情况下这种超分辨率上采样会有效或无效?

我认为,很可能64x64x20的训练数据集有足够的分辨率来捕捉物理的关键特征,然后才能上采样到更高、更有用的分辨率。如果你将采样率降得太低,以至于破坏了基本的物理特性,这可能就行不通了。我鼓励你去尝试编码实现,看看在空间和时间上,下采样的极限在哪里,才能真正实现超分辨率。
神经算子的通用框架
神经算子是一个通用框架,傅里叶神经算子只是神经算子的一个特例。在这个更通用的框架中,本质上有一个深度架构,可能类似于残差网络,有一堆层堆叠在一起,可能还有一些跳跃连接绕过傅里叶层。
你会注意到这些蓝色框,所有有趣的、用户指定的知识,甚至物理信息,都可能体现在这一层的选择中。如果你看这个函数,它是与核函数K和一些加权函数μ的卷积。因此,你可以指定许多不同的核K来自定义这个神经算子。例如,如果你有史蒂夫的核,你可以制作史蒂夫的神经算子。你可以用许多不同的方式定制它。
因此,我们有了很多变体,如图神经算子(这里发生的是图核平均)或傅里叶神经算子(这里的核函数就是正弦和余弦,你在这一层进行傅里叶变换)。你还可以设计自己的神经算子层,使用适合你特定物理的定制核K。但同样,我们知道傅里叶对于许多偏微分方程具有非常好的性质。

网格无关性与离散不变性
神经算子和傅里叶神经算子一个非常重要的主张是它们是网格无关的,具有离散不变性。它们不关心你的训练数据在什么网格上,因为它们真正学习的是函数到函数的映射,学习的是傅里叶变换系数如何相互映射的系数。因此,原则上,一旦你学习了那个算子,你应该能够换用不同的网格、更高分辨率的网格来细化图像。

这实际上看起来很酷,你可以取这个相对锯齿状的低分辨率网格,并以一种合理的方式细化,从而开始捕捉到激波。网格无关性和离散不变性是一个非常有趣的想法。
与经典方法的比较
他们实际上继续将他们的神经算子方法与他们认为的三个最接近的“道德邻居”进行了比较,即普通的神经网络、深度算子网络,以及经典的插值函数逼近(如我们30年前在应用数学中做的样条拟合等)。离散不变性是他们强调该方法重要性的依据之一。

拉普拉斯神经算子:一个自然的扩展
傅里叶神经算子是神经算子的一个特例,其中你使用傅里叶变换核(正弦和余弦)作为神经算子中的核函数。这对于具有周期性边界条件的物理问题(如周期盒子上的纳维-斯托克斯流动)非常有效。
有一个扩展我认为也非常好,即拉普拉斯神经算子。在傅里叶神经算子中,我们的核是正弦和余弦这些纯音。就像傅里叶变换可以推广到拉普拉斯变换一样,我们也可以将傅里叶神经算子推广到拉普拉斯神经算子。现在,你取复平面上的极点(这些特征值对应于增长和衰减的正弦和余弦),并将它们用作神经算子的核。
例如,如果我在虚轴上的特征值对应于正弦和余弦。如果我给它一个负实部,现在我的正弦和余弦是指数衰减的;如果我给它一个正实部,那些正弦和余弦是指数增长的。这是傅里叶神经算子到拉普拉斯神经算子的一个非常巧妙且简单的推广,就像傅里叶变换可以推广到拉普拉斯变换一样。这对于更广泛的PDE解算子(可能具有指数增长或衰减)将更有用。

总结
本节课我们一起学习了傅里叶神经算子的核心概念。它是一种强大的方法,将神经网络视为算子逼近器,特别适用于物理问题的求解。其关键优势在于网格无关性和利用傅里叶变换作为有效的表示空间。我们还看到了其扩展,如拉普拉斯神经算子,以及它如何通过定制核函数来适应不同的物理问题。理解这些高层次概念后,下一步就是动手实践,通过编码来探索其在实际问题中的表现和局限性。
023:深度算子网络 🧠

在本节课中,我们将学习深度算子网络。这是一种用于求解常微分方程和偏微分方程的强大方法。其核心思想是,我们不再将神经网络视为简单的函数逼近器,而是将其视为一个算子逼近器,用于学习从输入函数(如外部激励)到输出函数(如方程的解)的映射。
从函数到算子:核心思想转变
上一节我们介绍了物理信息神经网络等函数逼近方法。本节中,我们来看看一个更符合微分方程本质的思路。
标准的深度神经网络是通用函数逼近器。它可以近似一个变量 X 的函数。然而,在深度算子网络论文中,作者认为,对于常微分方程和偏微分方程,我们真正需要估计的是解算子,它将一个函数映射到另一个函数。
- 普通神经网络:通过一个函数将数据映射到数据。
- ODE/PDE的解:将函数映射到函数,这就是算子。
实际上,存在一个类似的算子通用逼近定理,表明某类神经网络也能很好地逼近算子,而不仅仅是函数。深度算子网络论文正是基于这一思想,提出在ODE和PDE问题中,我们应该逼近那个将激励函数映射到解函数的解算子。
深度算子网络架构:分支网络与主干网络
理解了核心思想后,我们来看看如何用神经网络实现它。一种朴素的方法是使用一个大型的全连接网络,同时处理输入函数信息和输出位置信息。但深度算子网络采用了一种不同的、更巧妙的架构。
它将网络拆分为两个独立的大型神经网络:
- 分支网络:用于编码输入函数的特征,即作用于ODE或PDE的激励函数。
- 主干网络:用于编码在指定输出位置上的解函数特征。
论文通过严谨的实验证明,将网络拆分为分支网络和主干网络,比使用单一的大型前馈网络效果更好。这种定制架构在表示ODE和PDE的解算子时,具有更好的泛化能力、更高的精度和更优的训练效果。
以常微分方程为例
为了更具体地理解,让我们看一个更简单的常微分方程例子。假设我有一个描述某个机械系统的ODE:
dx/dt = f(x, t) + u(t)
其中 u(t) 是输入激励函数(如控制信号或外部扰动),x(t) 是我要求解的系统状态。
在深度算子网络的语言中,存在一个算子 G,它接收激励函数 u,并输出我想要的解函数 x(t)。因此,这个算子 G 实现了从函数到函数的映射:G: u(t) -> x(t)。其数学表达通常涉及流映射积分。
重要提示:当系统动力学是混沌的时,这个流映射会变得极其敏感,导致解轨迹发散。因此,这类算子方法(包括深度算子网络和傅里叶神经算子)应用于混沌系统时将面临巨大挑战,因为输入的微小扰动可能导致输出的巨大差异。
网络训练与工作原理
那么,具体如何训练这个网络呢?以下是训练过程:
首先,你需要数据。这些数据可能来自高保真数值模拟,或者实际实验测量。你需要为许多不同的输入函数 u(t) 收集相应的解 x(t)。
接下来是数据处理:
- 输入表征:在几个固定的时间点上采样输入函数
u(t)。这些采样点就是分支网络的输入。 - 输出目标:指定你希望预测解的未来时间点。这些位置就是主干网络的输入,而对应这些时间点的真实解
x(t)值则是训练目标。
分支网络和主干网络分别学习编码ODE相关特征的潜在表示。它们的输出会以一种特定的方式(通常是点积或求和)重新组合,最终生成一个输出场,这就是算子 G 作用于输入函数后得到的解,即在所有指定时间和位置上的预测值。
一旦训练完成,我就可以输入一个全新的、从未见过的激励函数,网络将预测出我的ODE在该激励下的解。这就是我们所说的泛化能力。
应用实例与性能
深度算子网络论文在几个相对简单的ODE和PDE上测试了该方法。例如,一个一维偏微分方程,其空间项受到随机激励函数 u(x) 的影响。

通过训练,网络能够学习从不同的空间激励函数 u(x) 到PDE解的映射。这样,对于一个新的激励函数,我可以直接获得PDE的近似解,而无需运行耗时的完整模拟。
论文展示了该方法具有强收敛性(测试误差呈指数下降),这是算法一个非常强大的特性。作者还仔细分析了所需的数据量,并与单一全连接网络进行了对比。
再次强调:这些实验主要针对线性或弱非线性的、非混沌的简单系统。对于混沌系统,由于其解算子本身具有不可表示的复杂性,该方法可能会遇到很大困难。
总结、思考与延伸
本节课中,我们一起学习了深度算子网络。它的核心贡献在于思维模式的转变:将神经网络视为算子逼近器,而不仅仅是函数逼近器,这更贴合ODE/PDE问题的本质。其分支-主干网络架构被证明在简单系统上比单一全连接网络更有效。
在结束前,我们可以思考一些延伸问题:
- 适用范围:我的ODE/PDE是否混沌?深度算子网络可能不适用于混沌系统。
- 物理信息融合:如何将已知的物理约束(如能量守恒、质量守恒、对称性)融入这个框架?是通过损失函数,还是修改网络架构?
- 方法结合:能否将深度算子网络与物理信息神经网络结合起来?
- 实践探索:鼓励下载代码,在论文案例上复现结果,然后尝试更富挑战性的系统,观察其局限所在。

通过思考这些问题,并动手实践,你可以更深入地理解这类方法的原理、优势与边界,并可能激发出新的改进思路。
024:物理信息神经网络

概述
在本节课中,我们将要学习物理信息神经网络(Physics-Informed Neural Networks, PINNs)的核心概念、工作原理、优势与局限性。这是一种将已知物理定律(通常以偏微分方程形式表示)融入神经网络损失函数的强大方法,特别适用于数据有限但物理模型已知的场景。
物理信息神经网络(PINNs)的基本思想
上一节我们介绍了使用神经网络预测物理场的传统方法。本节中我们来看看PINNs如何对其进行革新。
PINNs由M. Raissi, P. Perdikaris 和 G. E. Karniadakis在其开创性论文中首次提出,现已成为物理与机器学习交叉领域的核心算法之一。其核心思想是:在标准前馈神经网络的损失函数中,加入一个基于已知物理定律(偏微分方程)的惩罚项。

一个预测流场的传统神经网络架构可能如下:构建一个深度前馈网络,输入是空间坐标 (X, Y, Z) 和时间 T,输出是感兴趣的场变量,例如速度分量 (U, V, W) 和压力 P。通过在海量流场数据上训练,网络学习从时空坐标到场变量的映射。
PINNs扩展了这一“朴素”的神经网络框架。它利用现代机器学习框架(如PyTorch, JAX)的自动微分功能,计算网络输出(场变量)对输入(时空坐标)的偏导数。这是一个简单但非常强大的想法。
获得这些偏导数后,就可以构建一个额外的损失项,用于衡量网络预测是否满足已知的物理方程。例如,如果已知速度场应该是无散的,就可以在损失函数中添加一个项,该项就是预测速度场的散度范数。如果该项非零,则意味着物理定律未被满足。
以下是纳维-斯托克斯方程作为PINNs损失函数组成部分的一个示例。其核心流程是:
- 使用标准神经网络表示待预测的场变量(如速度、压力)。
- 利用自动微分计算与物理相关的偏导数。
- 基于这些偏导数,构建一个物理损失项,量化物理方程被违反的程度。
这个物理损失项的作用是:当神经网络违反已知物理时,增加惩罚。这对于我们已知部分物理规律的系统(如流体流动、量子系统、电磁系统)非常有效。
PINNs的独特优势:数据与虚拟点
值得注意的是,PINNs的损失函数通常由两部分组成。一部分是基于实际测量或计算数据的损失,另一部分是基于物理方程的“虚拟”损失。
以下是PINNs损失函数的一个典型构成:
- 数据损失:在有限的真实数据点上,计算网络预测与真实值之间的误差。
- 物理损失:在大量“虚拟点”(无需真实数据)上,计算网络预测是否满足物理方程(如质量、动量守恒)。
这种架构的一个巨大优势是,即使实际训练数据非常有限,我们仍然可以通过在虚拟点上评估物理损失,来约束网络使其预测结果符合物理规律。这极大地降低了对海量标注数据的依赖。
回顾物理信息机器学习的宏观框架,PINNs清晰地处于“阶段四:设计损失函数以融入物理知识”的位置。当然,其架构(计算偏导数、建模场变量)也有特点,但PINNs最核心的创新在于这个精心设计的损失函数。
PINNs的优缺点分析
现在,让我们深入分析一下PINNs架构的优缺点。
总的来说,这是一个非常巧妙的想法。它将机器学习中简单而强大的前馈神经网络,与一种融入物理知识的直观方式相结合。使用自动微分计算物理损失项中的相关量,是一种非常聪明且简单的方法。这可能是其被广泛采纳和应用的原因之一。
另一个我非常喜欢的优点是,它允许使用相对较小的数据集进行工作。无需大量的实际数据用于数据损失项,可以利用虚拟点来评估网络是否“物理”。因此,许多PINNs模型使用大量虚拟点和少量实际数据进行训练,这非常强大。
然而,这并非没有需要注意的地方。因为物理知识是以损失函数的形式加入的,这既是优点(直观、易实现),也意味着它只是“建议”而非“强制”网络满足物理规律。数据损失项和物理损失项始终在相互竞争。在训练过程中,优化可能变得相当“僵硬”和困难,并且几乎永远无法使物理损失项精确为零。这意味着质量、动量等并非被精确守恒。在许多应用中,拥有一个较小但非零的物理损失是完全可接受的,这仍然比完全不添加物理损失有改进。但在某些应用中,可能需要通过架构选择或约束优化来更精确地强制执行物理规律,这一点需要留意。
PINNs的典型应用场景
那么,这种架构最适合解决什么问题呢?
它非常擅长根据稀疏的传感器测量数据来估计整个流场。这是对PINNs出现之前一些方法(如数据同化)的改进。例如,可以想象在一个聚变反应堆中,无法在内部到处布置传感器,可能只在表面有几个探头。PINNs可以成为一种很酷的架构,利用表面的有限数据,并加入已知的磁流体动力学物理损失,来估计与这些测量结果和最符合物理规律(PDE)的内部流动。

一个非常著名且有趣的例子是同一批作者在《科学》杂志上发表的关于“隐藏物理”的论文。他们展示了如何从流体流动(如动脉血流)的有限数据(有时甚至是烟雾可视化视频这类非速度场数据)中,推断出最符合纳维-斯托克斯方程和测量数据的定量速度场。论文显示,PINNs重建的结果与真实参考速度场吻合得相当好。
这再次说明,PINNs真正擅长的,是利用有限的传感器数据,结合控制方程,来“推断”数据点之间应有的速度场。有趣的是,这与卡尔曼滤波器的思想非常接近,都是在数据吻合度和模型吻合度之间寻求最优平衡。PINNs中也有一个超参数来平衡对数据的信任程度与对物理方程的执行力度。
需要指出的是,由于需要计算进入物理损失函数的偏导数,PINNs在处理具有不连续性(如激波)或混沌对流流动的系统时可能会比较困难。神经网络作为时间的函数可能发散且非常混沌,PINNs可能不擅长处理这类流动。因此,必须牢记这不是魔法,而是一个带有自定义损失函数的神经网络,需要了解其适用与不适用的场景。
实践资源与简单示例
现在,我将提供一些优秀的实践资源链接(请参见视频描述)。其中,Juan Toscano和Benjamin Moseley的教程视频非常出色,后者还在其科学机器学习博客中提供了详细的PINNs代码示例。
他们对比了朴素神经网络和PINNs在一个简单一维物理问题(弹簧质量阻尼系统)上的表现。训练数据是稀疏的蓝点。
以下是两种方法的训练结果对比:
- 朴素神经网络:经过训练,它基本上无法泛化到蓝色训练数据之外的区域,因为它不了解物理规律,收敛到一个不理想的解。
- 物理信息神经网络:由于在损失函数中加入了物理知识(
F = ma弹簧系统),它能够从蓝色训练点出发,很好地泛化到未来时刻,因为它掌握了正确的物理规律。
这是一个非常简单的例子,但直观易懂,并且比处理完整的PDE更容易上手。需要注意的是,此例中PINNs训练了12000步,而朴素网络只训练了620步。这引发思考:要使PINNs收敛,究竟需要多少训练?但也许训练是离线计算,只要模型能学习物理并在未来快速执行,我们愿意投入大量资源。关键点在于,PINNs因融入了物理而泛化得更好。
PINNs的扩展与变体
PINNs有许多很酷的扩展,这是我喜欢它的另一点。像DMD、SINDy和PINNs这类方法,往往因为思想简单而具有高度可扩展性,可以添加许多“附加组件”以适应不同场景。
以下是文献中众多扩展的两个精选示例:
- 分数阶PINNs:用于处理包含分数阶导子的偏微分方程。其架构可以拆分:传统PINNs项使用自动微分处理,而分数阶导子、积分项等则使用传统的数值离散化方案(如有限差分、有限元、谱方法)处理。这将其应用范围扩展到了更广泛的PDE类别。
- Delta-PINNs:这一思想考虑了问题的几何形状。如果我们知道物理过程发生在球体、螺旋线等特定几何形状上,我们可以将这些几何先验信息融入PINNs。具体来说,该几何上拉普拉斯-贝尔特拉米算子的特征函数,为表示该PDE的解函数提供了一个很好的自然坐标系。例如,在心脏血流等复杂不规则几何形状中,使用这些特征函数作为基函数可以更好地表示和近似PDE解。Delta-PINNs利用这一思想将几何信息融入PDE的表示中,从而获得改进的表示效果。
注意事项与失败模式分析
当然,PINNs也存在一些注意事项。它们并不总是训练得很好,有时会很“僵硬”,有时会过拟合。任何大量使用过PINNs的人都知道,需要一些技巧才能使其工作,有时它就是不行。没有方法是万能药。
理解其局限性并以系统化、流程驱动的方式进行研究非常重要。Michael Mahoney课题组及其合作者关于表征PINNs实际失败模式的论文就做得很好。他们尝试在相对简单但相关的问题(如对流、反应扩散等简单PDE)上训练PINNs,发现标准的PINNs通常难以训练,并产生很大误差,除非PDE的参数范围非常简单。
他们系统地设置了问题,展示了在某些参数体制下方法训练失败。他们研究了调整物理损失项权重的影响,发现这个基于PDE的软约束会使优化问题更复杂,在某些情况下更难找到好的解。重要的是,他们提出了两种具体的改进建议:
- 课程正则化:逐渐将物理损失从零增加到某个较大值。
- 序列到序列学习:将学习问题构建为序列到序列学习任务。
另一篇有趣的论文研究了帕累托前沿。作者在一个简单的热方程示例上,广泛测试了改变数据损失和物理损失之间平衡超参数的影响。他们展示了在不同的场景和初始条件下,会得到物理损失满足得好但数据误差大,或者数据损失小但物理损失满足得差等不同的误差情况。这清晰地表明了两种损失函数之间的平衡关系,并提供了如何选择和调整这些超参数的建议。
总结
本节课中,我们一起学习了物理信息神经网络(PINNs)这一非常重要且广泛应用的方法。

总结来说,PINNs是一种简单直观的方法,它利用现代机器学习框架(如PyTorch, JAX)的可自动微分特性,计算偏导数,并添加一个量化物理规律是否被满足的自定义损失函数,从而将标准神经网络用于预测时空物理场。
例如,如果我知道速度场应该是无散的,我就可以直接添加一个损失项,即预测速度场散度的范数,并且我可以在任意点(虚拟点)上计算它。这意味着即使训练数据相对稀疏,我也可以使用PINNs来估计流场和速度场。
再次强调,因为它是通过损失函数融入物理,所以它是在“建议”而非“强制”解具有物理性。有时训练可能比较僵硬,有时泛化能力不强,有时对混沌系统效果不佳。没有方法是完美的。但它是将物理融入问题的一种非常简单直观的方法,这可能是它在社区中被广泛采用的原因之一。它正好处于机器学习和物理学的交叉甜点区:机器学习人员喜欢它,因为它易于使用;物理学家喜欢它,因为它易于将神经网络融入他们的物理工作流程。
关于PINNs的更多内容,请务必查看描述中的资源,尝试自己编写代码,亲身体验它在哪些地方有效,在哪些地方无效。我们很快将探讨其他方法。

浙公网安备 33010602011771号