人工智能的数学基础-三-

206 阅读1小时+

人工智能的数学基础(三)

原文:zh.annas-archive.org/md5/2493e49e788325932f4968ea203e1f3d

译者:飞龙

协议:CC BY-NC-SA 4.0

第十章:运筹学

许多科学家之所以伟大,不是因为他们解决问题的技能,而是因为他们选择问题的智慧

E.布赖特·威尔逊(1908-1992),美国化学家

在本章中,我们探讨了将人工智能整合到运筹学领域中,利用两者的优势进行更高效和更明智的决策。尽管这个介绍性陈述听起来像是一则广告,但这正是运筹学的全部意义。机器学习的进步只能帮助推动该领域的发展。

运筹学是应用数学中最具吸引力和刺激性的领域之一。它是在最节约时间和成本的方式中平衡不同需求和可用资源的科学。运筹学中的许多问题都归结为寻找最佳点,即一切运行顺畅和高效的圣杯:没有备份,没有中断及时服务,没有浪费,平衡成本,对所有参与者都有良好的收入。许多应用永远找不到圣杯,但许多运筹学方法使我们能够至少接近,至少对于复杂现实的简化模型来说是如此。受限的数学优化渗透到每个行业、每个网络和我们生活的方方面面。做得正确,我们享受其好处;做得不当,我们承受其影响:全球和地方经济仍在经历 covid19、乌克兰战争以及对供应链的最终中断的后果。

在探讨机器学习如何开始进入运筹学之前,我们强调了一些有兴趣的人必须内化的想法,如果他们想参与这个领域。由于我们只有一个章节来探讨这个美妙的主题,我们必须将其提炼到其本质:

  • 没有免费午餐定理:这使我们将注意力转向设计和分析最适合特定情况的方法,而不是寻找最通用和最广泛适用的方法,就像许多数学家天生倾向于做的那样。它基本上要求所有这些数学家基本上放松,并对特定类型问题的专业解决方案感到满意。

  • 问题的复杂性分析和算法的渐近分析渐近分析告诉我们,即使算法非常创新和高明,如果其计算需求随问题规模的增大而急剧增加,那么它就是无用的。运筹学解决方案需要适应具有许多变量的大型场景。另一方面,复杂性分析则处理问题本身的难度级别,而不是为解决它们而设计的算法。组合问题,即O ( n ! ),是极其糟糕的:n !对于足够大的 n 来说比k n要大,但指数k n的复杂度已经非常糟糕!

  • 运筹学中的重要主题和应用:这些内容可以在任何一本好的运筹学书籍中找到。我们总是需要随身携带一本。从特定应用和业务目标到数学公式的转化是必须强调的技能,以便在这个领域取得成功。

  • 各种类型的优化方法和算法:这是运筹学解决方案和软件包的工作马。

  • 软件包:这些软件包的广泛可用性,以及有限的页面数量,是我不详细讨论本章中任何算法或计算内容的借口。

用六个词总结运筹学:数学建模、优化、算法、软件和决策

阅读本章时,有助于将概念置于我们日常生活中与之互动的公司如何管理其运营的背景中。例如考虑亚马逊的物流。亚马逊是世界上最大的电子商务公司。2022 年,其在美国电子商务市场的份额为 45%,每天销售和交付数百万件商品,每秒约 5000 美元的销售额。他们是如何成功做到这一点的?他们如何管理他们的库存、仓库、运输和极其高效的交付系统?他们如何制定子问题,以及如何将它们整合成一个成功的大型运营?交通物流也是如此,比如 Uber:每天,Uber 在全球提供多达 1500 万次共享乘车服务,将可用司机与附近乘客匹配,安排和计时接送和送达,定价行程,预测司机收入、供需模式,并进行无数分析。

允许这些庞大系统相对顺利运行的复杂且高度相互关联的优化问题是运筹学的典型特征。此外,许多涉及的问题都是 NP 难题(在计算复杂性中,这意味着它们具有非确定性多项式时间级别的难度-用英语来说,计算成本非常高)。再加上它们的随机性质,我们有一些有趣的数学问题需要解决。

总的来说,运筹学的数学方法和算法每年为世界节省数十亿美元。对美国最大的 500 家公司进行的一项调查显示,其中 85%使用线性规划(这是线性优化的另一个名称,是运筹学的一个重要部分,也是我们在本章中花费一些时间讨论单纯形法和对偶性的原因)。现在结合 AI 行业的工具,是进入这个领域的绝佳时机。回报将在多个层面上体现:智力、财务和对人类共同利益的有意义贡献。因此,本章中选择的少数主题绝不应减弱该领域中其他同等重要主题的重要性。

深入研究运筹学(当然,在阅读本章之后),最好的方法是向最优秀的人学习:

没有免费午餐

优化的无免费午餐定理表明,没有一种特定的优化算法适用于每个问题。寻找目标函数(成本函数、损失函数、效用函数、似然函数)的优化器的所有算法在所有可能的目标函数上平均时具有类似的性能。因此,如果某个算法在某类目标函数上表现优于另一个算法,则在其他目标函数上,另一个算法表现更好。没有一种适用于所有问题类型的优越算法。因此,选择算法应该依赖于问题(或领域)。根据我们的应用领域,有大量关于从业者使用的算法、他们选择这些算法的理由、与其他算法在高维和合理维度问题上的比较以及他们不断努力实现更好性能的信息,这意味着两件事:更快(计算成本更低)和更准确。

复杂性分析和 O()符号

很多时候,在各种约束条件下有效地分配有限资源的问题归结为为离散优化设计高效算法。线性规划、整数规划、组合优化以及图结构(网络)上的优化,都是相互交织的(有时这些只是同一事物的两个不同名称),并且都涉及一个目标:从离散且有限的有效选项集中找到一个优化器,即可行集。如果初始的可行集不是离散的,有时我们可以将其减少为一个离散集,以便利用为该领域开发的丰富工具。这里的主要问题是:穷举��索通常是不可行的。这意味着如果我们列出可行集中的所有可用选项,并在每个选项上评估目标函数,我们将花费大量时间来找到给出最佳答案的点。没有人说有限的可行意味着它不是巨大的。我们需要专门的算法来有效地排除搜索空间的大片区域。一些算法可以精确定位某些问题的确切解决方案,而其他算法只能找到近似解决方案,我们别无选择,只能接受。

让我们现在提前做出以下区分,因为这会让很多人感到困惑:

  • 复杂性分析是为了我们想要解决的问题(路由、旅行推销员、背包问题等)。问题的固有复杂性与用于解决它的算法无关。事实上,有时它告诉我们对于这种类型的问题,我们不能指望有更有效的算法,或者在其他情况下我们是否能做得更好。无论如何,对于问题的复杂性分析本身就是一个丰富的科学领域,运筹学领域提供了大量复杂问题供我们思考。这就是以下术语出现的地方:多项式问题、非确定性多项式问题、非确定性多项式完全问题、非确定性多项式时间困难问题、补充非确定性多项式问题以及补充非确定性多项式完全问题。上述术语非常令人困惑,有人需要认真重新考虑它们的命名。我们不会在这里定义每一个(主要是因为理论尚未确定这些问题类别之间的界限),但我们会做出以下划分:可以在多项式时间内或更短时间内解决的问题,以及我们无法在多项式时间内找到精确解决方案的问题,无论使用什么算法,这种情况下,我们必须接受近似算法(例如旅行推销员问题)。请注意,有时多项式时间问题可能并不是一件好事,因为例如 O ( n 2 000 ) 终究不是那么快。

  • 渐近分析是为了我们设计的解决这些问题的算法。这是我们试图估计算法所需操作次数并将其与问题规模相对比的地方。我们通常使用大 O 符号,意思是:

大 O()符号

当存在某个常数c,对于所有n ≥ n 0,函数*g(n)O(f(n))*时,g ( n ) ≤ c f ( n )。

例如,2n+1O(n),5 n 3 - 7 n 2 + 1是O ( n 3 ),n 2 2 n - 55 n 1 00是O ( n 2 2 n ),15 n l o g ( n ) - 5 n是O ( n l o g ( n ) )。

不要忘记常数渐近情况O(1),其中算法的操作计数与问题的大小无关(这是一个很棒的事情,因为这意味着它可以轻松地扩展到巨大的问题而不必担心)。

对于一些算法,我们可以计算出确切的操作次数,例如,为了计算长度为n的两个向量的标量积(点积),一个简单的算法需要精确地进行 2n-1 次乘法和加法,这使得它是O(n)。对于乘法两个大小为n × n的矩阵,一个简单的算法计算第一个矩阵的每一行与第二个矩阵的每一列的点积需要精确地( 2 n - 1 ) n 2次操作,因此这将是O ( n 3 )。矩阵求逆通常也是O ( n 3 )。

对于对算法渐近分析感兴趣的人来说,很快就会意识到它比操作计数稍微复杂一些,因为有时我们必须对输入的大小进行估计或平均值(n代表什么?),如何计算算法中的操作(按代码的每一行?),我们不能忽视在大数字上进行计算比在小数字上进行操作更耗时和内存。最后,我们更喜欢运行时间为多项式时间或更少的算法,而不是指数时间或更多的算法。让我们用一个非常简单的例子来演示。

多项式算法O ( n k )与指数算法O ( k n )。

假设我们正在使用一台每秒能执行10 7次操作(1000 万)的机器。让我们在两种不同的算法上运行它 1000 秒,大约相当于 16 分钟,一个是问题规模指数级增长的算法,比如O ( 2 n ),另一个是多项式O ( n 3 )。在这种情况下,问题的规模是n,指的是输入的维度,例如图的节点数、矩阵的条目数、数据集的特征数或实例数。每种算法在这台机器上运行 16 分钟最大能处理多大规模的问题?

对于指数时间算法,它所需的操作次数最多(最坏情况)为c 2 n = 10 7 1000,其中c*最好是一个较小的值。因此,它可以在每秒 1000 万次操作的情况下运行 1000 秒的问题规模为n = 10 log 2 ( 10 ) - log 2 ( c ) ≈ 33。

现在将这与多项式时间算法进行对比,其最坏情况是c n 3 = 10 7 * 1000,因此n = 1 3 c 3 10 10 ≈ 2100。这几乎比指数时间算法大两个数量级。

结论是,在相同的硬件和时间条件下,多项式时间算法O ( n k )可以解决比指数时间算法O ( k n )更大的问题。组合时间算法O ( n ! )是无望的。此外,我们总是希望k越小越好。

一个习惯于在精确领域而不是近似渐近领域操作的人可能会对上面的讨论感到困扰,因为有时,一些高阶算法对于较小规模的问题比低阶算法更好。例如:假设一个O(n)算法的精确操作次数为 20n-99,而一个O ( n 2 )算法的操作次数为n 2 + 1,那么从渐近的角度来看(或者对于足够大的n),O(n)算法比O ( n 2 )算法更好,但如果n小于 10,则情况并非如此,因为在这种情况下,n 2 + 1 < 20 n - 99。这对于足够小的问题是可以接受的,但对于更大的问题则不行。

我们很快将在本章中提到的两种优化方法是单纯形法和内点法,用于线性优化(目标函数和约束均为线性的优化)。内点法是多项式时间算法,而单纯形法是指数时间,因此你可能会期望每个人都使用更便宜的内点法并放弃单纯形法,但事实并非如此。单纯形法(以及对偶单纯形法)仍然广泛用于线性优化,而不是内点法,因为指数时间是最坏情况,而大多数应用并非最坏情况。此外,算法之间通常存在计算量每次迭代、所需迭代次数、更好起始点的影响、算法是否收敛或是否需要在最后阶段额外帮助、这种额外帮助需要多少计算以及算法是否能利用并行处理等方面的权衡。因此,用于线性优化的计算机软件包具有单纯形法和内点法的高效实现(以及许多其他算法)。最终,我们选择最适合我们用例的方法。

优化:运筹学的核心

我们又回到了优化。在机器学习中,优化是关于最小化模型的损失函数,学习确定性函数或最大化学习概率分布的模型的似然函数。我们不希望得到完全匹配数据的解决方案,因为这样无法很好地泛化到未见数据。因此,正则化方法、提前停止等。在机器学习中,我们利用可用数据来学习模型:数据的来源(数据生成规则或过程)的确定性函数或概率分布,然后我们使用这个学习到的函数或分布进行推断。优化只是其中的一步:最小化损失函数,有���没有正则化项。出现在机器学习中的损失函数通常是可微的和非线性的,优化是无约束的。我们可以添加约束来引导过程进入某个期望的领域,具体取决于应用。

优化方法可以包括计算目标函数的导数 f ( x → ) ,例如机器学习中喜欢的梯度下降(随机梯度下降、ADAM 等),也可以不包括。有些优化算法是无导数的:当目标函数不可微(如具有角点的函数)或目标函数的公式甚至不可用时,这些方法非常有用。无导数优化方法的示例包括贝叶斯搜索、布谷鸟搜索和遗传算法。

优化,特别是线性优化,自二战以来一直是运筹研究的核心,当时为了协助军事后勤和作战而开发了线性优化方法,如单纯形法。目标始终是在给定一定约束条件(预算、截止日期、容量等)的情况下,最小化目标函数(成本、距离、时间等):

m i n constraints f ( x → )

学习运筹优化,一个典型的课程通常会花费大量时间在线性优化、整数优化和网络优化上,因为许多现实生活中的物流和资源分配问题完全符合这些表述。要成为成功的运筹研究者,我们需要学习:

  • 线性优化,其中目标函数和约束条件均为线性:在这里,我们学习了单纯形法、对偶性、拉格朗日松弛和灵敏度分析。在线性问题中,我们的世界边界是平坦的,由线、平面和超平面构成。这个(超)多边形几何,或多面体,通常有角点作为优化器的候选者,因此我们设计系统化的方法来筛选这些点并测试它们是否最优(这就是单纯形法和对偶单纯形法所做的)。

  • 内点法:用于大规模线性优化问题,可能超出单纯形法的范围。简而言之,单纯形法沿着可行搜索空间的边界(多面体的边缘)前进,检查到达的每个角落是否最优,然后移动到边界上的另一个角落。另一方面,内点法穿过可行搜索空间的内部,从内部到达最优角落,而不是从边界到达。

  • 整数规划:优化中,优化向量的条目必须全部为整数。有时它们只能是零或一(将卡车送往俄亥俄州的仓库或不送)。背包问题是一个非常简单的原型示例。在这里,我们学习了用于大整数规划问题的分支定界方法。

  • 网络优化:我们可以将许多网络问题重新表述为线性优化问题,其中单纯形法及其专门版本可以工作,但更好的方法是利用网络结构,并从图论中获取有用的结果,例如最大流最小割定理,以获得更高效的算法。许多网络问题归结为以下之一的优化:网络上的最短路径(从一个节点到另一个节点的最小距离或最小成本路径)、网络的最小生成树(这对于优化网络的设计非常有用)、最大流(从起点到终点或从源到汇的流)、最小成本流;多商品流;或旅行推销员问题:找到通过网络所有节点仅一次的最小成本(或距离或权重)循环路线(哈密顿回路)。

  • 非线性优化:目标函数和/或约束是非线性的:本书中一个经常出现的例子是为机器学习模型最小化非线性损失函数。这些函数总是非线性的,我们通常使用梯度下降类型的算法。对于较小的问题,我们可以使用牛顿类型的算法(二阶导数)。在运筹学中,目标函数和/或约束中的非线性可能出现,因为从一个地点运输货物到另一个地点的成本可能不是固定的(例如取决于距离或数量),或者网络中的流量可能包括损失或增益。我们了解很多的一种特殊类型的非线性优化是带有线性约束的二次优化。这在应用中出现,比如电路网络方程和弹性理论中,我们考虑结构中的位移、应力、应变和力的平衡。想想找到二次函数的最小值有多容易,其中 s 是一个正常数。这种简便性很好地转化到更高维度,其中我们的目标函数看起来像 f ( x → ) = x → t S x → 其中 S 是一个正半定矩阵,在高维度中扮演着与一维中正常数相同的角色。在这里,我们甚至有对偶理论可以利用,类似于线性优化的情况。在优化中,当我们失去线性性时,我们希望我们的函数是二次的,我们的约束是线性的。当我们失去这一点时,我们希望我们的函数和/或可行集是凸的。当我们失去凸性时,我们就只能靠自己了,希望我们的方法不会陷入高维度景观的局部最小值,并以某种方式找到最优解。

  • 动态规划和马尔可夫决策过程:动态规划涉及到具有多个阶段的项目,每个阶段都需要做出决策,每个决策都会产生一些即时成本。每个阶段的决策与当前状态有关,以及一个策略来过渡到下一个状态(通过最小化确定性函数或概率选择下一个状态)。动态规划的核心是设计高效的方法,通常是递归方法,以找到一系列相关决策的最佳顺序以实现某个目标。这个想法是避免为决策过程的每个阶段列出所有选项,然后选择最佳的决策组合。对于具有许多决策阶段且每个阶段具有许多状态的问题,这种详尽搜索是非常昂贵的。现在,如果从一个阶段到另一个阶段的过渡策略是概率性的而不是确定性的,并且如果决策过程的阶段继续无限地重复,也就是说,如果项目具有无限数量的阶段,那么我们手头就有一个马尔可夫决策过程(或马尔可夫链)。这是一个以概率方式随时间演变的过程。马尔可夫决策过程的一个非常特殊的属性是,涉及到过程如何在未来演变的概率与过去事件无关,仅取决于系统的当前状态。离散时间和连续时间马尔可夫链模拟重要系统,例如排队系统,动态交通灯控制以最小化汽车等待时间,以及灵活的呼叫中心人员配备。重要的数学对象是过渡矩阵,人们解出稳态概率。他们最终不得不计算过渡矩阵的特征空间。

  • 随机算法:具有��率性过渡策略和马尔可夫链的动态规划都是随机算法的例子。随机梯度下降和图上的随机游走也是。任何涉及随机元素的算法都是随机的。数学转向概率、期望、稳态状态、收敛等语言。另一个出现随机算法和过程分析的例子是排队论,例如医院急诊室或船舶维修场的队列。这建立在顾客到达时间和服务设施的服务时间的概率分布之上。

  • 元启发式:对于许多优化问题,找到最优解可能是不切实际的,因此人们(仍然需要做出决策)求助于启发式方法,这些方法找到一个答案(我不会称之为解决方案),这个答案不一定是最优的,但对于手头的问题足够好。元启发式是提供策略指导和通用框架的一般解决方法,用于开发适合某些问题族的启发式方法。我们无法保证从启发式方法得到的答案的最优性,但启发式方法加速了找到令人满意的解决方案的过程,其中最优解太昂贵或完全无法计算。还有可满足性的话题:由于运筹学中的问题几乎总是受限的,自然的问题是:约束是否可满足?意味着可行集是否非空?一些运筹学问题被重新制定为可满足性问题。

在现实世界的问题中,运筹学部门的工作的一大部分是以一种适合上述优化框架之一的方式制定他们的具体用例和目标。在这里,重要的是要认识到特殊结构(例如涉及矩阵的稀疏性)或者我们可以利用更高效算法的子结构。这对于复杂和大规模系统至关重要。

思考优化

当我们在数学中遇到一个优化问题时,

min x →∈somefeasibleset f ( x → ) ,

在可行集由向量x →必须满足的一些约束定义的情况下(或者它可能完全没有约束),我们通常会停下来进行头脑风暴:

  • f ( x → ) 是线性的吗?

  • f ( x → )是凸的吗?下界有界吗?

  • 最小值是有限的,还是→ - ∞?

  • 可行集非空吗?意味着是否有x →实际满足约束?

  • 可行集是凸的吗?

  • 是否存在最小化器?

  • 最小化器是唯一的,还是还有其他的?

  • 我们如何找到最小化器?

  • 最小值是多少?

  • 如果我们的约束或目标函数发生变化,最小化器和最小值会发生多大变化?

根据手头问题的类型,我们可能能够独立回答上述问题,有时候我们只能回答其中一些而不能回答其他问题。这没关系,因为有关优化器和最优值的任何信息都是有价值的。

让我们探讨常见类型的优化问题:

优化-有限维-无约束

这类似于我们在微积分课程中进行的优化,以及我们在训练机器学习模型时进行的优化,即最小化损失函数。目标函数f ( x → ) 是可微的:

min x →∈ℝ d f ( x → ) .

在无约束和可微的优化中,最小化器x → 满足∇ f ( x → ) = 0。此外,在x → 处,Hessian(二阶导数矩阵)是半正定的。在讨论机器学习的优化时,我们选择了随机梯度下降及其变体来解决非常高维的问题。对于较小的问题,牛顿类型(使用二阶导数而不仅仅是一阶导数)的方法也有效。对于很少的问题,比如线性回归的均方误差损失函数,我们可以得到解析解。通常可以得到解析解的示例通常是精心构造的(例如我们微积分书中的所有示例),并且维度非常低。

优化-有限维-约束-拉格朗日乘数

让我们考虑只有一个约束g ( x → ) = b的情况。这相当好地解释了我们需要什么。最小化问题看起来像:

min g(x →)=bx∈ℝ d f ( x → ) .

如果f ( x → )和g ( x → )是从ℝ d → ℝ的可微函数,我们可以引入拉格朗日乘子(一种来自 1797 年的方法)将我们的问题转化为一个无约束问题,但在更高的维度(对应于我们引入到优化问题中的新拉格朗日乘子)。没有免费的午餐。在这种情况下,我们将约束的倍数添加到目标函数中,然后最小化,这意味着寻找梯度为零的点。无约束问题的新目标函数称为拉格朗日函数,它是决策向量x →和我们乘以约束的新变量λ的函数,称为拉格朗日乘子

ℒ ( x → ; λ ) = f ( x → ) + λ ( b - g ( x → ) ) .

如果我们有多于一个约束条件,比如五个约束条件,那么我们为每个约束引入一个拉格朗日乘子,最终在我们的优化问题中添加五个额外的维度,以将其从受限制的状态移动到无约束状态。

无约束问题的优化器( x → , λ )必须满足:∇ ℒ ( x → ; λ ) = 0。我们寻找它的方式与我们处理一般无约束问题的方式相同(参见前面的情况)。从( x → , λ )中的x → 是我们最初寻找的受限制问题的解。这意味着它是由约束g ( x → ) = b定义的超曲面上的点,其中f的值最小。

如果问题具有我们可以利用的特殊结构,比如f是二次的,约束g是线性的,或者fg都是线性的,那么我们有更方便的方法来进行这种受限优化,无论我们决定使用拉格朗日乘子(引入对偶)还是不使用拉格朗日乘子。幸运的是,具有简单结构的优化问题已经被广泛研究,不仅因为它们使数学和计算更容易,而且因为它们在科学和现实生活应用中经常出现,这证实了我的理论,即自然比数学家认为的要简单。我们将在对偶部分重新讨论受限问题的拉格朗日乘子,在那里我们专注于完全线性问题或具有线性约束的二次问题。

我们应该永久地记住的好事是,拉格朗日乘子λ不是一种毫无价值的辅助标量,它帮助我们将一个受限问题转变为一个无约束问题。它具有非常有用的含义,对于灵敏度分析、金融和运营研究应用以及对偶理论都非常有帮助(它们彼此相关)。从数学上讲,通过观察拉格朗日函数的公式,λ是拉格朗日函数作为b的函数的变化率,如果我们被允许改变b(约束的值;在应用中,我们关心推动或放松约束的影响)。也就是说:

∂ℒ((x →;λ,b)) ∂b = ∂f(x →)+λ(b-g(x →)) ∂b = ∂f(x →) ∂b + λ(b-g(x →)) ∂b = 0 + λ = λ .

此外,我们可以将对应于最优化器的最优值λ解释为b对目标函数 f 的最优可达值的边际效应。因此,如果λ = 2.1,则将b增加一单位(将约束推动一单位)将使f的最优值增加 2.1 单位。这对金融和运营研究中的应用非常有价值。让我们看看为什么会这样。我们想要证明:

df(x → (b)) db = λ .

请注意,在优化器x → ( b )处发生两件事,当我们将拉格朗日函数的梯度设为零时,我们得到: ∇ f ( x → ( b ) ) = λ g ( x ( b ) ),和g ( x → * ( b ) ) = b。利用这些信息和导数的链式法则(回到您的微积分书中,掌握链式法则,我们经常使用它),我们现在有:

df(x → (b)) db = f ( x ( b ) ) . dx → (b) db = λ ∇ g ( x → ( b ) ) dx (b) db = λ dg(x (b)) db = λ db db = λ × 1 = λ * .

换句话说,拉格朗日乘子λ 是最优成本(目标函数的值)由于相应约束的放松而发生变化的速率。在经济学中,λ 被称为与约束相关的边际成本,或者影子价格。当我们在本章后面讨论对偶性时,我们使用字母p表示对偶问题的决策变量,出于价格的原因。

优化-无限维度-变分法

变分法领域是一个优化领域,但我们不是在有限维空间中寻找优化点,而是在无限维空间中寻找优化函数

在有限维度中,优化点(或点)满足一个基于将目标函数的梯度设为零的方程。

在无限维度中,优化函数满足一个基于将目标泛函的梯度(泛函是一个函数,其输入是一个函数,输出是一个实数,例如在区间[0,1]上的连续函数的积分是一个泛函)设为零的微分方程,也就是说,如果我们设法定义一个泛函的梯度。要找到优化器,我们要么解微分方程,要么遵循一些优化方案。数学中的一切都紧密地联系在一起。

最小化的函数满足一个称为欧拉-拉格朗日方程的微分方程。如果您对偏微分方程不感兴趣,可以跳过本节的其余部分,因为这对运筹学并不重要。

示例 1

如果您对偏微分方程有一些了解,这是将谐函数视为能量泛函的最小化器的好方法:狄利克雷能量的最小化器E ( u ( x ) ) = ∫ D 1 2 |∇u(x)| 2 d x,其中*u(x)属于适当的函数空间,且u(x)=h(x)*在边界∂ D上满足欧拉-拉格朗日方程Δ u = 0,*u=h(x)*在∂ D上(因此最小化器必须是满足给定边界条件的谐函数)。

此外,热方程u t = Δ u,其中u(x,t)=0在∂ D上,一些初始条件*u(x,0)=g(x)*进行L 2 -最陡下降的狄利克雷能量:这意味着最初从u ( x , 0 ) = g ( x )开始,到达狄利克雷能量景观上的最小化器的最快方式是通过解决热方程。因此,热方程为最小化问题提供了一个最小化方案的想法:

min u=0on∂D 1 2 ∫ D |∇u(x,t)| 2 d x .

例 2

在ℝ 2中两点之间的最短路径是一条直线。为了做到这一点,我们最小化连接两点( x 1 , y 1 )和( x 2 , y 2 )的曲线的弧长,即,

min y(x 1 )=y 1 andy(x 2 )=y 2 ∫ x 1 x 2 1 + y ' (x) 2 d x .

然后我们写出欧拉-拉格朗日方程,导致最小化函数y(x)=mx+b,其中mb分别是连接两个给定点的直线的斜率和y-截距。

变分微积分的其他入门示例

最小曲面问题和等周问题是我们可以使用适当的变分原理解决的其他示例。

网络上的优化

我想在线性优化的单纯形法之前从网络优化开始,因为更多的人习惯于以代数形式(方程和函数)思考,而不是以图形或网络结构的形式,尽管自然界和运营研究应用中有大量的网络结构。我们需要对图模型非常熟悉。网络结构上的优化问题往往是组合性质的O ( n ! ) ,这是不好的,因此我们需要一些算法来规避这一点,并有效地筛选搜索空间(请记住问题的顺序通常是最坏情况,而在最坏情况下,我们满足于近似解决方案)。

我们讨论典型的网络问题,这些问题恰好涵盖了各种各样的现实生活应用。旅行推销员问题是最古老和最著名的问题之一,因此我们从那里开始。我们生活在一个有开源软件包和云计算资源的时代,其中包括用于解决本章中提到的所有问题的强大算法,因此在本节中,我们专注于理解网络问题的类型及其应用,而不是为解决这些问题而设计的算法。

旅行推销员问题

这是运筹学中的一个著名问题,适用于许多现实世界的情况:一个推销员在旅途中需要访问多个城市。给定城市之间的距离,他应该以什么顺序旅行,以便精确地访问每个城市一次并返回家中,目标是保持旅行距离最小(图 10-1)?

280

图 10-1。旅行推销员问题(图片来源)

应用非常广泛:一辆离开仓库的送货卡车必须以最经济的方式(以时间或距离衡量)将包裹送到每个地址;在制造电子芯片时找到最有效的孔序列来钻孔印刷电路板。

我们将旅行推销员问题表示为图上的优化问题:城市是节点,每对城市之间有边(使图完全),每条边都有一个权重(或属性或特征),表示两个城市之间的距离。这个图有许多路径通过所有城市仅一次并返回到我们开始的那个城市(一个哈密顿回路),但我们希望找到总距离最小的路径。

让我们来思考这个问题的复杂性:在一个完全图中,n 个节点有(n−1)!/2 个不同的哈密顿回路:从任何一个节点开始,我们有 n-1 条边可供选择,选择下一个要访问的城市,然后从第二个城市有 n−2 个选项,第三个城市有 n−3 个选项,依此类推。这些选择是独立的,所以我们总共有(n−1)!种选择。我们必须除以 2 来考虑对称性,也就是说我们可以沿着相同的哈密顿回路前进或后退,仍然得到完全相同的总行程。这个计数问题是一个具有对称性的循环排列。旅行推销员的详尽解决方案将列出所有(n−1)!/2 个哈密顿回路,计算每个回路中的行程总距离,然后选择最短距离的那个。即使对于一个合理的 n 值,这也是太昂贵的:要访问所有 50 个美国州首府(假设我们想要最小化总旅行成本),我们需要尝试( 50 - 1 ) ! / 2 = 3 . 04 × 10 6 2 个选项!我们没有一个有效的算法来解决任意规模的问题。启发式方法能够提供出色的近似解。此外,基于一种称为分支和剪枝的方法的优秀算法已经为非常大数量的城市解决了这个问题。

最小生成树

我将最小生成树问题放在旅行推销员问题之后,因为有时人们会混淆这两个问题。这是一个澄清混淆的好地方。在这里,我们有一个完全连接的网络,每条边上都有正权重,这些权重可以代表距离、时间、容量或连接基础设施(如水、电或电话线)的成本。与旅行推销员类似,我们希望找到包含图中所有节点并最小化总权重的边的集合。这里与旅行推销员不同的要求是,我们希望确保以一种方式选择边的集合,使得任意两个节点之间都有路径,也就是说我们可以从图中的任何一个节点到达任何其他节点。在旅行推销员中,我们只需要访问每个城市一次然后返回到起始城市,这意味着每个节点不能有超过两条边(对于生成树没有这样的要求)。在旅行推销员中返回到最后一个城市的事实意味着我们有一个额外的闭合边,这在生成树中是不需要的。如果我们移除旅行推销员解决方案的最后一条边,那么我们肯定会得到一个生成树,但不能保证它是成本最小的。图 10-2 展示了相同图的最小生成树和旅行推销员解决方案。

280

图 10-2. 相同图的最小生成树和旅行推销员解决方案

请注意,对于任何网络,如果我们有 n 个节点,那么我们只需要 n-1 条边,这样我们就可以在每两个节点之间有一条路径,因此我们不应该使用超过 n-1 条边来构建最小生成树,因为那会增加我们的成本。我们需要选择最小化成本的边的集合。

我们已经提到了一些应用,比如设计电信网络、路由和运输网络、电网和基础设施网络(管道)。这些网络的开发非常昂贵,通过最佳设计可以节省数百万美元。

最短路径

最简单的最短路径问题版本是,我们在图上有两个节点,我们想要用一组边连接它们,使得边权重(距离、时间)的总和最小。这与旅行推销员和最小生成树问题不同,因为我们不关心覆盖图的所有节点。我们只关心以最经济的方式将自己从起点送到终点。

一个明显的应用是以最小距离、成本、时间等从一个目的地到另一个目的地旅行。其他应用虽然不是立即显而易见,但却非常重要的是活动网络。我们可能没有起点和终点,而是有一个项目的开始和结束。每个节点代表一个活动,每个边的权重代表如果活动 i 邻接活动 j 时所产生的成本或时间(如果我们有一个有向图,那么它将是活动 i 在活动 j 之后发生时所产生的成本或时间)。目标是选择最小化总成本的活动顺序。

最短路径问题的其他版本包括:找到从起点到所有其他节点的最短路径。其他包括找到所有节点对之间的最短路径。

许多车辆路径规划算法和网络设计算法包括最短路径算法作为子程序。

我们也可以将最短路径问题重新表述为线性优化问题,并使用线性优化的方法。

最大流最小割

在这里,我们还有一个起点和一个终点,每个有向边都有某种容量(路线上允许的车辆最大数量,路线上运输的商品最大数量,管道可以处理的最大材料或自然资源量,如石油或水),我们希望找到一组边,使得从起点到终点的最大化。请注意,所有边都指向远离起点的方向,并指向终点。

图论中一个非常重要的定理在确定连接起点和终点的一组边的最优性(最大流)中起着关键作用:

  • 最大流最小割定理:该定理指出,通过有向网络从起点到终点的最大流量等于所需的最小边权重之和,以切断起点和终点之间任何通信。也就是说,我们可以通过网络切断通信,以防止起点和终点之间的通信,有多种方式。切断通信并且具有最小权重的边集是最小割集。这个最小割集的值等于网络中可能的最大流量的值。这个结果非常直观:我们可以通过网络的边发送的最大量是多少?这受到连接起点和终点的关键边的容量的上限约束。

我们可以将最大流问题重新表述为线性优化问题,当然,最小割问题将是其对偶问题,因此它们当然有相同的解!我们将在本章很快看到这一点。

最后,假设我们有多个起点和多个终点,类似于一个分布网络,那么我们仍然可以通过解决完全相同的问题来最大化网络中的流量,只是现在我们添加一个虚构的超级起点指向所有真实起点,另一个虚构的超级终点,所有真实终点指向它,具有无限容量,然后像往常一样进行业务,解决这个新图上的最大流问题,其中有两个新虚构的超级节点

最大流最小成本

这类似于最大流问题,不同之处在于现在我们将每条边发送流量的成本与流量单位数成比例地关联起来。目标显然是在满足所有起点到所有终点的供给的同时最小化成本。我们可以将这个问题表述为一个线性优化问题,并使用针对网络优化的单纯形法来解决它。应用广泛且非常重要:各种分配网络,包括供给节点、中转节点和需求节点,供应链(货物、血液、核材料、食品),固体废物管理网络,协调生产产品的类型或花费资源以满足市场需求,现金流管理,分配问题,如将员工分配到任务、时间段分配到任务或将求职者分配到可用工作岗位。

分配问题

分配问题也称为匹配问题。受让人的数量应与任务数量相同,每个受让人只能分配一个任务,每个任务只能由一个受让人执行。将任务 i 分配给受让人 j 会产生成本。目标是选择任务和受让人之间的匹配,以最小化总成本。这种问题的图是一种特殊类型的图,称为二部图。这样的图可以分为两部分,所有边都从第一部分的一个节点指向第二部分的一个节点。在所有权重相同的分配问题中,这是一个二部图上的最大流问题。我们所要做的就是分配一个虚拟的超级起点和另一个虚拟的超级终点,并以解决最大流问题的方式解决这个问题,即在即将介绍的线性优化和对偶性部分中解决最大流问题。对于这些问题有许多高效的算法。

项目设计的关键路径法(CPM)

关键路径法是一种优化方法,用于表示项目中涉及的所有活动、总预算、总时间限制,哪些活动需要在其他活动之前发生,每个活动需要多少时间和成本,以及哪些活动可以同时进行的网络。例如,考虑一个从开始到结束的房屋建设项目。关键路径法用于时间和成本的权衡是一个很好的工具,有助于设计一个项目,其中包含时间和成本之间的权衡,确保项目以最小总成本满足其截止日期。类似于关键路径法的是项目评估审查技术(PERT),它是一种项目管理规划工具,用于计算完成项目所需的时间。该方法提供三个时间表:最短可能的时间表、最长可能的时间表和最有可能的时间表。

n 皇后问题

在继续线性优化、单纯形法和对偶之前,我们先稍微绕个弯,提到一个有趣的组合问题,这个问题困扰数学家已经 150 年了,主要是因为它完全没有结构:n 皇后问题,比如图 10-3 中的那个。迈克尔·西姆金终于(2021 年 7 月)回答了这个有关攻击皇后的 150 年历史的国际象棋问题。以下是他解决方案论文的摘要的编辑部分,标题为n-皇后配置的数量n 皇后问题是确定如何在一个 n×n 的[国际象棋]棋盘上放置 n 个互不威胁的皇后的方式的数量。我们证明存在一个常数α=1.942±3×10^-3,使得[在棋盘上放置互不威胁的皇后的方式的数量为](1±o(1)n e^-αn)n((1±o(1)n e^-αn)n)。常数α被描述为 P([-1/2,1/2]的 Borel 概率测度空间中一个凸优化问题的解。

300

图 10-3。8 个皇后在一个 8×8 的国际象棋棋盘上互不威胁的位置。

以下页面有一个简单的回溯算法来解决 n 皇后问题。请注意,西姆金的解决方案量化了可行皇后配置的总数,而算法只能找到其中一个或一些配置。

线性优化

有限维度中的任何优化问题,无论是线性还是非线性,看起来都像:

min g 1 (x →)≤0g 2 (x →)≤0⋯g m (x →)≤0 f ( x → ) .

我们有以下情况:

  1. 存在一个唯一的最优解:认为盆地有一个最低点。

  2. 存在多个最优解:在这种情况下,最优解集可以是有界的或无界的。

  3. 最优成本趋于负无穷大,没有可行解是最优的:目标函数的景观无限下降。

  4. 可行集为空,最小化问题没有解:这里没有人关心目标函数及其低值,因为没有同时满足所有约束的点!

  5. 最优成本是有限的但不可达到:即使可行集非空,也没有优化器。例如 inf x≥0 1/x 等于零,但没有有限的 x 使得 1/x=0。这种情况在线性问题中永远不会发生。

要使优化问题是线性的,目标函数f和所有约束g必须是线性函数。线性优化在运筹学中占据很大比重,因为我们可以将许多运筹学问题建模为线性约束下线性函数的最小化,这些约束可以是相等关系或不等式。

线性是一件很好的事情。我们可以用线性代数语言(向量和矩阵)来表达任何线性优化问题,人们通常使用两种形式:

  1. 一般形式:这对于发展线性规划理论很方便。向量x →的条目的符号没有限制,决策变量:

min Ax →≥b → c → . x →

可行集A x → ≥ b →是一个多面体(添加一个多面体的图片),我们可以将其看作是有限数量半空间的交集。这个多面体可以是有界的或无界的(添加一个图片)。

  1. 标准形式:这对于计算和开发算法很方便,比如单纯形和内点方法。决策变量必须是非负的,所以我们只在第一象限中搜索,这是第一象限的高维类比,其中所有坐标都是非负的。此外,约束必须始终是相等关系,而不是不等式,因此我们必须在半空间的边界上,而不是在内部。这就是标准形式的线性优化问题的样子:

min Ax →=b →,x →≥0 → c → . x →

标准形式的线性问题有一个简单的内化方法:以最小化成本c → . x → 的方式从A的列中合成向量b →。

我们可以轻松地在标准形式和一般形式之间来回转换线性优化问题(例如,通过引入剩余和松弛变量将一般线性优化问题转换为标准形式),但请注意,我们最终解决的是不同维度的相同问题:如果我们引入一个变量来将不等式转换为等式,例如引入s 1将不等式x 1 - 3 x 2 ≥ 4转换为等式x 1 - 3 x 2 - s 1 = 4,那么我们会增加维度(在这个例子中从二维到三维)。这没问题。这实际上是数学的一个好处,我们可以模拟无限维度,即使我们只生活在一个三维世界中。

例子:二维线性优化问题的图形表示

图 10-4 显示了线性优化问题的图形表示。

min x+2y≤32x+y≤3x≥0y≥0 - x - y .

这个问题是二维的(既不是一般形式也不是标准形式,但我们可以轻松转换为任何一个)。

请注意,-x-y 的最优值为-2,取得于点(1,1),这是可行集的一个角点。如果这是一个无约束问题,那么下确界将是- ∞。约束会产生巨大的影响。最优值在多边形(二维多面体)的一个角点上并非偶然。如果我们画一条直线-x-y=c,其中 c 使得直线的一部分在可行集内,然后沿着负梯度向量的方向移动(回想一下这是最快下降的方向),直线将沿着向量- ∇ ( - x - y ) = - ( - 1 , - 1 ) = ( 1 , 1 )的方向移动(这里梯度向量与优化点具有相同的坐标是巧合,这两者完全无关)。只要直线的部分在可行集内,我们就可以继续推进并使c变小,直到无法再推进,因为如果这样做,我们将离开可行集,变得不可行,并且失去所有推进的工作。这正好发生在整条直线都在可行集外部并且勉强悬挂在点(1,1)时,而这个点仍然在可行集内。我们找到了我们的优化器,使得-x-y 的值最小的点。很快我们将回到线性问题的可行集的角落中,因为那里是优化器所在的地方。

280

图 10-4. 可行集和-x-y 的最优值为-2,取得于角点(1,1)。

凸到线性

即使目标函数是非线性的,在许多情况下我们可以将问题重新表述为一个线性问题,并使用线性优化技术来获得精确解或接近精确解的近似解。我们可以通过分段线性凸函数来近似凸(且可微)函数图 10-5。我们可以将具有分段线性目标函数的优化问题转化为具有线性目标函数的问题。然而,这会使我们失去可微性(函数不再平滑)。没有免费的午餐。在优化问题中,线性之后,凸性是下一个理想的特性,因为我们不会担心陷入局部最小值。对于凸函数来说,局部最小值就是全局最小值。

280

图 10-5. 通过分段线性函数逼近凸函数

一个凸优化问题具有凸目标函数和凸可行集。凸优化是一个完整的领域。

凸函数

一个函数 f : ℝ n → ℝ 是凸函数当且仅当 f ( λ x + ( 1 - λ ) y ) ≤ λ f ( x ) + ( 1 - λ ) f ( y ) ,对于所有 x , y ∈ ℝ n 和 0 ≤ λ ≤ 1 。这意味着连接f图上任意两点的线段位于f的图形之上(画个图)。

关于凸函数的一些有用事实:

  • 凸函数不可能有一个局部最小值,而不是全局最小值。

  • 如果函数 f 1 , f 2 , ... , f m : ℝ n → ℝ 是凸函数,那么函数 f ( x ) = max i f i ( x ) 也是凸函数。在这种情况下,f 可能会失去平滑性,因此优化方法无法使用导数。

  • 函数f ( x ) = max { m 1 x + d 1 , m 2 x + d 2 , ⋯ , m n x + d n }或更简洁地f ( x ) = max i=1,2⋯,n { m i x + d i }是分段线性的图 10-6。这是一个凸函数,因为每个m i x + d i是凸的(线性函数同时是凸和凹的),凸函数的最大值也是凸的。

280

图 10-6。线性函数的最大值是分段线性和凸的

例如,绝对值函数 f(x)=|x|=max{x,-x}是分段线性和凸的(画个图)。

  • 我们可以将具有分段线性凸目标函数的优化问题重新表述为线性优化问题:

min Ax≥b max i m i . x + d i ↔ min z≥m i .x+d i Ax≥b z

  • 特别是,一个优化问题,其中目标函数具有决策变量的绝对值,可以通过两种方式重新表述为线性优化问题(这里目标函数中的c i是非负的,否则目标函数可能是非凸的):

min Ax≥b ∑ i=1 n c i | x i | ↔ min Ax≥bx i ≤z i -x i ≤z i ∑ i=1 n c i z i ↔ min Ax + -Ax - ≥bx + ,x - ≥0 ∑ i=1 n c i ( x i + + x i - )

线性优化的几何形态

让我们来思考标准形式线性优化问题的几何形态。不失一般性,我们假设A的行是线性无关的。换句话说,没有冗余约束。这保证了至少存在一个A的线性无关列集(或rank(A)=m):

min Ax →=b →x →≥0 → c → . x →

正如我们之前提到的,如果我们从一般形式转换为标准形式,那么我们会在维度上跳跃。因此,即使一个多面体在一般形式中没有角,它在更高维度的标准形式中总会有角:由于标准形式中坐标的正性条件,多面体位于第一超八面体中,因此不可能有完整的线。现在我们有定理保证,对于线性优化问题,要么最优成本是- ∞,要么存在一个有限的最优成本发生在多面体的一个角(在一个基本可行解处)。

单纯形算法

我们的目标是构建一个算法,找到标准形式线性优化问题的最优解:

min Ax →=b →x →≥0 → c → . x →

A 是 m × n,其中 m 个线性无关的行(因此 m ≤ n),b → 是 m × 1,c → 和 x → 是 n × 1。

单纯形法的主要思想

从多面体的一个顶点(一个角,也称为基本可行解)开始,沿着保证减少目标函数或成本(减少成本 c ¯)的方向移动到另一个顶点,直到达到最优解,或发现问题是无界的,并且最优成本是 - ∞(这些您可以使用最优性条件知道,并成为算法的终止标准)。在退化问题的情况下可能会出现循环的机会,但可以通过在过程中出现平局时做出明智选择(选择的系统化方式)来避免这种情况。

示例:跟踪单纯形法在多面体图形上所采取的路径

图 10-7 显示了三维线性优化问题的多面体。我们从一个基本可行解开始,然后跟踪单纯形法所经过的路径,从多面体的一个顶点移动到下一个顶点,在每一步中减少成本(目标函数的值),直到到达具有最小成本的顶点。

min x 1 +x 2 +x 3 ≤4x 1 ≤2x 3 ≤33x 2 +x 3 ≤6x 1 ,x 2 ,x 3 ≥0 - x 1 + 5 x 2 - x 3250

图 10-7。单纯形法从多面体的一个顶点移动到下一个顶点,直到找到一个优化的顶点。

您可以跳过本小节的其余部分,直接查看有关运输和分配问题的示例,除非您对单纯形法及其不同实现的细节感兴趣。

  1. 从多面体的一个顶点开始(基本可行解 x:零个非基本坐标和 x B = B -1 b )。这需要一个由 Am 个线性无关列组成的基础矩阵 B

    例如,如果 A = 1 1 2 1 0 0 0 0 1 6 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 ,以及 b = 8 12 4 6 ,那么我们可以选择 a 4 , a 5 , a 6 , a 7 作为一组基本列,给出 x=(0,0,0,8,12,4,6) 作为基本可行解(多面体的一个顶点的坐标)。我们也可以选择 a 3 , a 5 , a 6 , a 7 作为另一组基本列,给出 x=(0,0,4,0,-12,4,6) 作为基本解但不是基本可行解,因为它有一个负坐标。

  2. 移动到另一个顶点y = x + θ d,在一个可行方向d中,只增加一个非基本变量x j,并将其他非基本变量保持在零水平(d的坐标:d j = 1,d i = 0如果i ≠ j或i非基本,并且d B = - B -1 A j),这是保证会降低成本的(引入x j相关的减少成本为c ¯ j = c j - c B . B -1 A j,因此选择一个j*,使得这个数量为负)。θ *的值

    θ * = min allbasicindicesforwhichd B(i) <0 - x B(i) d B(i) : = - x B(l) d B(l) ;

  3. A B(l)退出基础B,并替换为A j。

  4. 重复直到我们要么达到有限的最优解(当所有可用列的A中没有一个A j给出负c j),要么发现问题是无界的,最优成本是负无穷大(当我们有d ≥ 0,所以y = x + θ d ≥ 0,无论θ取多大,这都是可行的,因此将θ推到∞将不断降低成本c . y = c . x + θ ( c j - c B . B -1 A j )一直到- ∞)。

上述单纯形法的注记

  1. 上述最后一项给出了单纯形算法的两个终止标准:没有负的降低成本c ¯ j或所有可行降低成本方向d的坐标都是非负的。

  2. 如果可行集非空且每个基本可行解都是非退化的,则单纯形法在有限次迭代后保证终止,要么得到有限最优解,要么得到一个有限的最优成本为负无穷的解。

  3. 假设一些基本可行解是退化的(一些基本变量也为零),我们最终停留在其中一个。在这种情况下,当我们通过引入A j并使A B(l)退出来改变基础时,有可能停留在同一点y=x+0d(当x B(l) = 0时,θ = - x B(l) d B(l) = 0)!在这种情况下,选择一个新的A j,直到实际从x移动到y = x + θ d,θ > 0。这里可能发生的一个非常糟糕的事情是:在我们停在x并不断改变基础(在x处稍作停顿)直到找到一个实际将我们从x移开到y = x + θ d的成本降低方向时,我们可能最终得到与算法开始时相同的基础!这将导致循环,并且算法可能无限循环。通过在A的哪些列将进入和退出基础上做出明智选择,可以避免循环:在过程中选择A j和后来的*B(l)的系统方法θ ,当在过程中存在并列时。

  4. 在过程中出现平局时(我们有多个减少成本选项 A j,使得 c ¯ j < 0,和/或有多个最小化索引 B(l) 为 θ ),我们可以制定规则来选择在这种平局步骤中进入 A j 和/或退出 A B(l)。当出现这种平局时,我们决定遵循的选择规则称为枢轴*规则。

  5. 布兰德规则是一种非常简单且计算成本低廉的枢轴规则:选择索引最小的 A j,其中 c ¯ j < 0,以进入基础,并选择具有最小合格索引 B(l) 的 A B(l) 以退出基础。这种最小下标枢轴规则有助于避免循环。另一种枢轴规则是词典排序:见书页 108。

  6. 如果 n-m=2(因此 A 的列数比行数多 2 列),那么无论使用哪种枢轴规则,单纯形法都不会循环。

  7. 选择初始基础以开始单纯形法:对于没有起源于一般形式问题的问题,特别是那些具有大量变量的问题,可能并不总是明显如何选择初始基础 B 和相关的基本可行解 x(因为不清楚 Am 列是线性独立的哪些列)。在这种情况下,我们引入人工变量并解决辅助线性规划问题,以确定原始问题是否不可行,因此没有解决方案;或者,如果问题是可行的,将人工变量驱使出基础,并为我们的原始问题获得初始基础和相关的基本可行解。这个过程称为单纯形法的第一阶段

  8. 有一种结合了单纯形法的第一阶段和第二阶段的方法称为大 M 法。在这里我们使用单纯形法来解决

min Ax+b=0x≥0,y≥0 c . x + M ( y 1 + y 2 + . . . + y m )

对于足够大的 M 选择,如果原始问题是可行的且其最优成本是有限的,所有人工变量 y 1 , y 2 , ⋯ , y m 最终会被驱使为零,这将使我们回到原始问题。M 可以被视为一个未确定的参数,并让减少的成本成为 M 的函数,并在确定减少的成本是否为负时将 M 视为一个非常大的数。

修订的单纯形法

修订后的单纯形法是一种计算成本较低的实现。它提供了一种更便宜的计算方法来计算B ¯ -1,通过利用旧基础B和新基础B ¯之间的关系:它们只有一个不同的列(涉及的两个顶点是相邻的)。因此,我们可以从先前的B -1获得新的B ¯ -1。

这是修订后单纯形算法的典型迭代:

  1. A中包含m个基本列的B和相关的基本可行解x开始,其中x B = B -1 b,否则x i = 0。

  2. 计算B -1(在单纯形法计算中出现的是B -1而不是B)。

  3. 对于非基本的j,计算减少成本c ¯ j = c j - c B . B -1 A j(这将给出n-m个减少成本)。

  4. 如果所有的c ¯ j都是非负的,则当前的基本可行解x是最优的,算法以x作为优化器和c.x作为最优成本终止(没有A j可以进入基础并进一步降低成本)。

  5. 否则,选择一个j,使得c ¯ j < 0(Bland 的枢轴规则告诉我们选择最小的j)。注意:这会使A j进入基础。

  6. 计算可行方向d:d j = 1,d B = - B -1 A j,否则d i = 0。

    • 如果d B的所有分量都是非负的,则算法以最优成本- ∞终止,没有优化器。

    • 否则(选择 d B 中为负数的分量),让

θ * = min allbasicindicesforwhichd B(i) <0 - x B(i) d B(i) : = - x B(l) d B(l)

这一步计算 θ * 并将 B(l) 分配为退出列的索引。

  1. 计算新的基本可行解 y = x + θ * d(这个新的基本可行解对应于具有 B ¯ 的新基 A j 替换 B 中的 A B(l))。

  2. 这一步计算下一次迭代的新 B ¯ -1,而不形成新的基 B ¯ 然后对其进行求逆。

形成 m × m + 1 增广矩阵 ( B -1 | B -1 A j )。使用 l 行执行行操作(向每行添加 l 行的倍数),使最后一列成为单位向量 e l,除了 l 坐标处为 1 外,其他地方都是零。结果的前 m 列是你的新 B ¯ -1。

理由

让等于上 B 的逆乘以上 A 的第 j 列,注意到<上 B 的逆乘以上 B 横线等于(e1 e2 ... u ... em)>,其中是单位列向量,第 i 个元素为 1,其他位置为 0,u 是第 l 列。如果我们使用第 l 行进行行操作,并将 u 转换为,上述矩阵将变为单位矩阵。所有行操作可以打包在一个可逆矩阵 Q 中,从左边应用:<Q 上 B 的逆乘以上 B 横线等于上 I>。现在右乘以<上 B 横线的逆>,我们得到<Q 上 B 的逆等于上 B 横线的逆>。这意味着要获得<上 B 横线的逆>,在<上 B 的逆>上执行相同的行操作,将 u 转换为。

使用修正单纯形法计算<上 B 横线的逆>使用<上 B 的逆>

这种方法不是从原始 A 的 m 列开始找逆,而是在先前计算的<上 B 的逆>上进行行操作,这可能包括舍入误差。在许多迭代中这样做会积累这些错误,因此最好偶尔直接从 A 的列计算<上 B 横线的逆>,以避免错误积累。

单纯形法的完整表格实现

单纯形法的完整表格实现具有只存储和更新一个矩阵的优势:

这里,不再维护和更新B -1,而是维护和更新m × n + 1矩阵x B | B -1 A ) = ( B -1 b | B -1 A。与进入基础的变量对应的列u = B -1 A j被称为pivot column。如果第l个基本变量退出基础,那么第l行被称为pivot row。属于 pivot row 和 pivot column 的元素被称为pivot element。现在在你的tableau顶部添加一个zeroth row,用于跟踪当前成本的负值- c . x = - c B . x B = c B . B -1 b和减少的成本c - c B . B -1 A。因此,tableau 看起来像:

- c B . B -1 b c - c B . B -1 A B -1 b B -1 A

或者更详细:

- c B . x B c ¯ 1 ⋯ c ¯ n x B(1) | ⋯ | ⋮ B -1 A 1 ⋯ B -1 A n x B(m) | ⋯ |

这是完整 tableau 实现的典型迭代:

  1. 从与基础矩阵B和相应的基本可行解x相关联的 tableau 开始(其中x B = B -1 b和其余坐标为零)。

  2. 检查 tableau 的零行中的减少成本。如果它们都不是负数,则当前的基本可行解x是最优的,算法终止。否则,选择一些j,使得c ¯ j < 0(这个j告诉您哪个A j进入了基础,您有了 pivot columnu = B -1 A j)。

  3. 检查主列 u = B -1 A j。如果u的所有分量都是负数,则最优成本为 - ∞,算法终止。否则,对于每个正分量 u i,计算 x B(i) u i,选择最小比率,让l成为对应最小比率的行的索引。这就是你的主行。(所以现在发生的是 A B(l) 离开基础,A j 进入基础,但这里没有明确显示,因为表的列在所有步骤中保持不变,这只是一个心理提示。)

  4. 现在使用主行执行行操作,以将主列更改为 e l(主元变为一,主列中的所有其他条目变为零)。

  5. 现在你有一个新的表,新的 x B 在第零列,新的最优成本的负值在左上角,新的基础 B ¯ 没有明确写出,而是用 B ¯ -1 A 的形式给出在表的正文中。所以回到步骤(a)直到算法终止。

  6. 最有效的实现是修正单纯形法(内存使用为 O ( m 2 ),单次迭代的最坏情况时间为 O ( m n ),单次迭代的最佳情况时间为 O ( m 2 ),而全表法的上述所有度量都是 O ( m n )),但这也取决于矩阵的稀疏程度。

一个有用的技巧是很好掌握的:从给定的单纯形表中提取 B -1 和 B(就像在电影中:黑客帝国)。

示例:运输和分配问题

在网络部分我们提到了运输和分配问题,因为它们是线性优化问题,可以将其制定为最小成本网络流问题。

运输问题:将产品分配给仓库,最小化成本。分配问题:将被分配者分配给任务,被分配者的数量等于任务的数量,并且每个被分配者执行一个任务。当被分配者 i 执行任务 j 时会产生成本。目标是选择一种分配方式以最小化成本。一个例子是将 Uber 司机分配给顾客,或将机器分配给任务。

我们利用所涉及的矩阵是稀疏的这一事实,因此我们不必完全实现单纯形算法,只需一个特殊的简化版本,可以同时解决分配和运输问题。这与网络单纯形方法有关,它解决任何最小成本流问题,包括运输和分配问题。运输和分配问题是最小流问题的特例。匈牙利方法是分配问题的特例。由于它专门为此而设计,因此更有效率。这些专用算法包含在一些线性规划软件包中。

对偶性,拉格朗日松弛,影子价格,最大最小值,最小最大值,以及其他一切

在本章早些时候讨论有限维约束优化和使用拉格朗日乘数放松约束时,我们已经暗示并围绕对偶性的概念打转。当我们的约束问题是线性的,或者具有线性约束的二次型时,对偶性真的很有帮助。它给了我们两种选择:要么解决手头的优化问题(原始),要么解决另一个相关的问题(对偶),无论哪个更容易或更便宜,都会得到相同的解决方案。通常,对于算法来说,拥有更多的决策变量(问题的维度)不像拥有更多的约束那样费力。由于对偶问题颠倒了决策变量和约束的角色,所以当我们有太多约束时,解决对偶问题而不是原始问题更有意义(另一种方法是使用对偶单纯形方法来解决我们即将讨论的原始问题)。对偶问题有助于解决原始问题的另一种方式是,它有时提供了解决原始问题的捷径。如果原始问题存在一个可行向量x →,那么如果对偶问题存在一个可行向量p →,使得c → . x → = p → . b →,那么这个向量将成为优化器。

在接下来的几段中学习对偶性时,将其视为您在图 10-8 中看到的方式:在原始领域中发生了某种事情,在对偶领域中发生了某种相关的影子或回声(某种替代宇宙),两者在优化器处相遇,就像两个宇宙相遇的门。

250

图 10-8。对偶性,影子问题,影子价格(我想要一个看起来像这个的未受版权保护的图形)。

因此,如果我们在一个宇宙中最大化,那么在另一个宇宙中我们在最小化,如果我们在一个宇宙中对约束进行某些操作,那么我们在另一个宇宙中对决策变量进行某些操作,反之亦然。

对偶性的动机-拉格朗日乘数

对于任何优化问题(线性或非线性)

min x →∈feasibleset f ( x → ) ,

不要通过将梯度设为零来找到最小化器x → ,而是寻找f ( x → )的上界(通过将可行集合的任意元素代入f ( x → )很容易),以及f ( x → )的下界(这是一个更难的不等式,通常需要巧妙的想法)。现在我们会有下界*≤ f ( x → ) 上界,所以我们收紧这些界限以接近实际解f ( x → )。我们通过最小化上界(这将使我们回到原始的最小化问题)和最大化下界(这建立了对偶问题)来收紧界限。

现在对于任何形式的线性最小化问题(标准形式、一般形式或其他形式),

min linearconstraintsonx → c → . x →

给我们 f ( x → ) = c → . x → 的下界是什么聪明的想法?我们寻找由问题约束的 线性组合 组成的 f ( x → ) = c → . x → 的下界。因此,我们通过乘以每个约束的乘数 p i(拉格朗日乘数)来加强它们,选择它们的符号,使约束不等式朝着 ≥ 方向。为什么?线性约束是 x → 的条目的线性组合,目标函数 c → . x → 也是 x → 的条目的线性组合,线性组合的线性组合仍然是线性组合,所以我们完全可以选择约束的线性组合,将其与 c → . x → 进行比较。

换句话说,如果我们有 m 个线性约束,则我们需要

p 1 b 1 + p 2 b 2 + ⋯ + p m b m ≤ c → . x →

如果约束条件是相等的,乘数 p i 的符号将是自由的。一旦我们有了这些下界,我们通过最大化 p i 来加强它们,这给我们了对偶问题。

从原始线性优化问题中找到对偶线性优化问题

将线性优化问题的输入大小设置正确是很重要的。输入包括:A,它是 m × n,c →,它是 n × 1,b →,它是 m × 1。原始问题中的决策变量在向量 x → 中,它是 n × 1。对偶问题中的决策变量在向量 p → 中,它是 m × 1。

一般来说,如果A出现在原始问题中,则A t出现在对偶问题中。因此,在原始问题中,我们有A和x →的行的点积。在对偶问题中,我们有A和p →的列的点积。如果线性优化问题以任何形式出现,按照这个过程很容易写出它的对偶问题:

  • 如果原始问题是最小化,则对偶问题是最大化,反之亦然。

  • 原始成本函数为c → · x →,对偶成本函数为p → · b →。

  • 最小化原始问题中,我们将约束分为两种类型:

    类型一

    约束告诉我们关于决策变量符号的信息,例如:

  • x 3 ≥ 0。然后在对偶中,这将对应于A 3 · p → ≤ c 3其中A 3是A的第三列,c 3是c →的第三个条目。

  • x 12 ≤ 0。然后在对偶中,这将对应于A 12 · p ≥ c 12其中A 12是A的第十二列,c 12是c →的第十二个条目。

  • x 5是自由的,意味着没有指定的符号。然后在对偶中,这将对应于A 5 · p = c 5其中A 5是A的第五列,c 5是c →的第五个条目。

    类型二

    形式约束为a i · x ≥ ≤ = b i其中a i是 A 的第 i 行。在对偶中,这些将对应于对p i符号的约束,例如:

  • a 2 . x ≥ b 2。那么在对偶中,这将对应于p 2 ≥ 0。

  • a 7 . x ≤ b 7。那么在对偶中,这将对应于p 5 ≤ 0。

  • a 8 . x = b 8。那么p 8的符号是自由的。

特别是如果线性优化问题处于标准形式:

min Ax →=b →x →≥0 → c → . x → ,

然后它的对偶是:

max p →isfreeA T p →≤c → p → . b → .

如果线性优化问题处于一般形式:

min Ax →≥b →x →isfree c → . x →

然后它的对偶是

max p →≥0 →A T p →=c → p → . b →

如何解决对偶问题?单纯形法解决对偶问题,但现在您移动到增加成本而不是减少成本的基本可行解。

标准形式线性优化问题的对偶推导

推导对偶问题的另一种思考方式,但是对于这种情况,线性问题必须处于标准形式。这是它的想法:我们放松约束A x → = b →,但引入拉格朗日乘数p →(当约束违反时支付惩罚p →)。因此

min Ax →=b →x →≥0 → c → . x →

变成

min x →≥0 → c → . x → + p → . ( b → - A x → ) = g ( p → ) .

现在证明g ( p → )是原始c → . x → 的下界(这是弱对偶定理),然后最大化p*。对偶问题出现在这个过程中(我关于对偶的讲义中有完整的推导)。

强对偶定理表明原始问题的最小值和对偶问题的最大值相等。请注意,如果原始问题无界,则对偶问题不可行,如果对偶问题无界,则原始问题不可行。

Farkas 引理是对偶理论的核心,具有许多经济和金融应用。

对偶单纯形法

对偶单纯形法解决原始问题(而不是对偶问题)使用对偶理论。单纯形法和对偶单纯形法的主要区别在于:常规单纯形法从不是最优的基本可行解开始,并朝向最优解,而对偶单纯形法从最优的不可行解开始,并朝向可行性。对偶单纯形法就像单纯形法的镜像。

首先,注意当我们使用单纯形法解决原始问题时,我们可以免费获得对偶问题的最优成本(等于原始问题的最优成本),而且,我们可以从原始问题的最终表中读取出对偶问题的解(优化器)。一个最优对偶变量只有在其对应的原始约束是约束时才为非零。这应该直观地清楚,因为最优对偶变量是与约束相关的影子价格(拉格朗日乘数)。我们可以将这些影子价格解释为分配给稀缺资源(约束)的值,以便这些资源的价值等于原始目标函数的价值。最优对偶变量满足单纯形法的最优性条件。在单纯形法的最终表中,基本变量的降低成本必须为零。最优对偶变量必须是与最优解相关的影子价格。

另一种方法是将对偶单纯形法视为解决对偶问题的伪装单纯形法。但是,我们这样做时没有明确地写出对偶问题,并应用单纯形法进行最大化。

此外,单纯形法产生一系列原始基本可行解(多面体的角点),一旦找到一个也是对偶可行的解,方法就终止。另一方面,对偶单纯形法产生一系列对偶基本可行解,一旦找到一个也是原始可行的解,方法就终止。

例子:网络、线性优化和对偶性

考虑图 10-9 中的网络。数字表示边的容量,即每条边可以处理的最大流量。最大流问题是将最大流从起始节点发送到目标节点。直观地说,网络中的最大流量将受到边缘可以传输的容量的限制。事实上,这一观察结果构成了一个对偶问题:通过网络的最大流量等同于最小化那些如果我们切断就无法从起点到终点的边的总容量。这就是最大流最小割定理

250

图 10-9. 对偶性:网络中的最大流量等于最小割容量。

图 10-9 显示了通过网络的所有割(如果我们一起切割,就无法从起点到达目的地的边的集合)的值,以及最小总边容量的割,为 16。根据最大流最小割定理,我们可以通过网络发送的最大流量为 16:通过容量为 19 的边发送y 1 = 12单位,通过容量为 4 的边发送y 2 = 4单位。其中,y 3 = 1单位将通过容量为 1 的边流过,y 4 = 11单位将通过容量为 11 的边流过,y 5 = 1 + 4 = 5单位将通过容量为 6 的底部边流过。所有 12 个单位将通过连接到它的最后两条边到达目的地,其中y 6 = 0(不需要通过容量为 7 的垂直边流过),y 7 = 11单位通过容量为 12 的最右边流过,y 8 = 5单位通过容量为 6 的最右边流过。现在最大流问题的解为( y 1 , y 2 , y 3 , y 4 , y 5 , y 6 , y 7 , y 8 ) = ( 12 , 4 , 1 , 11 , 5 , 0 , 11 , 5 )。

为了将这个网络问题制定为线性优化问题(我们刚刚使用对偶问题的解来图形化解决了它,即最小割的值),我们需要添加一条流量值为y 9的虚构边,将目的地连接到起点,并假设到达目的地的流量虚拟地回到起点。换句话说,我们闭合电路,并应用Kirchhoff 电流定律,即在相遇于一点的导体网络中的电流之和为零,或者节点的流入等于流出。线性最大化问题现在变为:

max Ay →=0 →|y i |≤M i y 9

其中A(图 10-10)是我们网络的关联矩阵,y → = (y 1 ,y 2 ,y 3 ,y 4 ,y 5 ,y 6 ,y 7 ,y 8 ,y 9 ) t 是有符号最大流向量(我们允许y值为负,以便流入的流量抵消流出的流量),我们需要解决这个问题(我们刚刚通过最小割直觉找到了它的解,不考虑符号),M i 是网络中每条边的最大容量,条件A y → = 0 → 保证了流入节点的流量等于流出节点的流量。当然,在这种情况下,网络将具有显示最佳流通过每条边的方向的有向边。

250

图 10-10。图 10-9 中网络的关联矩阵。

现在我们已经对最大流问题有了线性表述,我们可以使用本章学到的方法(最小割问题)轻松地编写其对偶,并解决原问题或对偶问题。请注意,这个表述所需的仅仅是网络的关联矩阵、边的容量和基尔霍夫条件,即流入节点的流量等于流出节点的流量。

示例:两人零和游戏、线性优化和对偶。

另一个相关的设置是博弈论中的两人零和博弈,其中包含对偶性和线性优化。对一个玩家的收益就是另一个玩家的损失(提示:对偶性)。为了在数学上表达这个问题,我们需要为每个玩家p l a y e r 1 和p l a y e r 2 的游戏中的所有选项建立收益矩阵。每个玩家都希望制定一种策略,以最大化他们的收益(没有人说游戏的收益矩阵必须是公平的)。我们需要为每个玩家解决最佳策略。如果我们为p l a y e r 1 设置优化问题,我们不需要从头开始得到p l a y e r 2 的策略的优化问题:我们只需编写其对偶。假设两个玩家都理性行事并遵循他们的最佳策略,游戏的总预期收益对于两个玩家来说是相同的。

考虑例如图 10-11 中的收益矩阵。游戏进行如下:p l a y e r 1选择一行,p l a y e r 2同时选择一列。p l a y e r 1支付所选行和列中的数字给p l a y e r 2。因此,p l a y e r 1希望最小化,p l a y e r 2希望最大化。玩家重复游戏多次。

对于每个p l a y e r 1和p l a y e r 2的最佳策略是什么,游戏的预期收益是多少?

250

图 10-11. 收益矩阵。

为了找到最优策略,假设p l a y e r 1选择r o w 1的概率为x 1,选择r o w 2的概率为x 2。那么x 1 + x 2 = 1,0 ≤ x 1 ≤ 1,以及0 ≤ x 2 ≤ 1。p l a y e r 1推断,如果他使用一个( x 1 , x 2 )混合策略,那么支付矩阵中会有另一行对应于这个新策略(见图 10-11)。现在p l a y e r 1知道p l a y e r 2想要选择最大化他们的支付的列,所以p l a y e r 1必须选择使最差支付(第三行的最大值)尽可能小的( x 1 , x 2 )。因此,p l a y e r 1必须解决min max问题

min 0≤x 1 ≤10≤x 2 ≤1x 1 +x 2 =1 max x 1 + 3 x 2 , - x 2 , 4 x 1 + 2 x 2

回想一下,线性函数的最大值是一个凸分段线性函数。我们可以很容易地将这样一个*min max(线性函数)*问题转化为线性最小化问题:

min z≥x 1 +3x 2 z≥-x 2 z≥4x 1 +2x 2 0≤x 1 ≤10≤x 2 ≤1x 1 +x 2 =1 z

图 10-12 展示了上述问题的对偶形式,而图 10-13 则显示这正是p l a y e r 2试图解决的问题。

250

图 10-12. p l a y e r 1 的问题的对偶形式。

250

图 10-13. p l a y e r 1的min max问题的对偶与p l a y e r 2的max min问题相同。

请注意,约束条件y 1 ≤ 1,y 2 ≤ 1和y 3 ≤ 1是多余的,因为我们知道所有的 y 都是非负的且它们加起来等于 1。同样,对于约束条件x 1 ≤ 1和x 2 ≤ 1也是如此。在制定线性优化问题时,这种情况经常发生。

解决原始问题或对偶问题,我们找到每个玩家的最佳策略:p l a y e r 1必须选择第一行x 1 = 0 . 25的时间和第二行x 2 = 0 . 75的时间,预期收益为 2.5,这意味着p l a y e r 1预计使用这种策略不会损失超过 2.5。p l a y e r 2必须选择第一列y 1 = 0 . 5的时间和第三列y 3 = 0 . 5的时间(不会选择第二列y 2 = 0),预期收益为 2.5,这意味着p l a y e r 2预计使用这种策略不会获得少于 2.5。

具有线性约束、拉格朗日、极小极大定理和对偶性的二次优化

一个具有良好结构的非线性优化问题,在各种应用中都会出现,并且可以教会我们很多关于事物如何联系在一起的知识,就是一个具有线性约束的二次问题:

min Ax →=b → 1 2 x → t S x →

在这里,S是一个对称且半正定矩阵,这意味着它的特征值是非负的。对于高维空间,这起到了使目标函数凸且下界有界,或者形状像一维函数的碗状的作用。

例如,这是一个具有一个线性约束的二维二次优化问题:

min a 1 x 1 +a 2 x 2 =b 1 2 ( s 1 x 1 2 + s 2 x 2 2 )

这里,S = s 1 0 0 s 2,其中 s 的条目是非负的,而 A = a 1 a 2。检查这个问题,我们正在寻找直线 a 1 x 1 + a 2 x 2 = b 上使得量 f ( x → ) = s 1 x 1 2 + s 2 x 2 2 最小化的点 ( x 1 , x 2 ),目标函数的等高线是同心椭圆,覆盖整个 ℝ 2 平面。获胜的椭圆(具有最小等高线值的椭圆)是在获胜点处与直线相切的椭圆(图 10-14)。在这一点上,椭圆的梯度向量和约束的梯度向量是对齐的,这正是拉格朗日乘数公式给我们的:制定拉格朗日函数,放宽约束,但在目标函数中支付一个等于拉格朗日乘数 p 乘以我们在目标函数中放松的量的惩罚,从而最小化无约束问题。

ℒ ( x → ; p ) = f ( x → ) + p ( b - g ( x → ) ) = s 1 x 1 2 + s 2 x 2 2 + p ( b - a 1 x 1 - a 2 x 2 )

当我们最小化拉格朗日函数时,我们将其梯度设为零,这导致 ∇ f ( x → ) = p ∇ g ( x → )。这意味着目标函数的梯度向量与优化点处约束的梯度向量平行。由于任何函数的梯度向量垂直于其等高线,这意味着约束实际上与最小化点处的目标函数的等高线相切。因此,要找到优化点,我们寻找目标函数的等高线,看它何时恰好与约束相切。

150

图 10-14。二次函数的水平集是同心椭圆,每个椭圆都有一个恒定值。当我们施加线性约束x 1 + x 2 = 2 . 5时,我们得到优化器(2,0.5),恰好在一个水平集与约束相切的点。最优水平集的值为x 1 2 + 4 x 2 = 5。

另一个帮助我们可视化拉格朗日和即将到来的极小极大定理的例子是一个简单的一维例子:

min x=1 x 2

拉格朗日是ℒ ( x ; p ) = x 2 - p ( 1 - x )。我们使用这个玩具例子,其优化器显然是x = 1,最小值为 1,以便我们可以可视化拉格朗日。回想一下,拉格朗日公式使维度跳跃,这种情况下我们有一个约束,所以维度从一维增加到二维,在我们有限的三维世界中,我们只能可视化两个变量(xp)的函数。图 10-15 展示了我们简单拉格朗日函数的景观,现在代表了具有线性约束的二次优化问题的拉格朗日公式。在图 10-15 中需要注意的主要事项是这类问题的优化器( x ; p )发生在拉格朗日的鞍点处:这些点是拉格朗日函数在一个变量中是正的,而在另一个变量中是负的二阶导数,因此拉格朗日函数的景观在一个变量(x)中是凸的,在另一个变量(p)中是凹的。

150

图 10-15。约束问题的优化器发生在拉格朗日的鞍点(请注意,拉格朗日本身的最小值是- ∞,但这不是我们关心的,因为我们关心的是具有线性约束的二次函数的优化器)。

定位拉格朗日的鞍点(给出相应约束问题的优化器)的一种方法是解∇ ℒ ( x ; p ) = 0 →得到xp,但这是对简单问题(如手头的简单问题)或小规模问题有效的蛮力方法。另一种找到这些鞍点的方法是先在x中最小化,然后在p中最大化(图 10-16)。另一种方法是先在p中最大化,然后在x中最小化。极小极大定理表明这两条路径是相同的。

150

图 10-16。在 x 上最小化然后在 p 上最大化得到max p x ( p ) = x ( p ) =鞍点。这将得到与先在p上最大化然后在x*上最小化相同的答案。

因此,在鞍点( x , p )处,我们有∇ ℒ ( x ; p ) = 0(与∂ℒ(x;p) ∂x = 0和∂ℒ(x;p) ∂p = 0),以及

min x max p,holdxfixed ℒ ( x ; p ) = max p min x,holdpfixed ℒ ( x ; p )

我们已经完整地展示了,在x中的受约束最小化问题中,我们有另一个在 Lagrange 乘子p中的受约束最大化问题。Lagrange 乘子、对偶性和受约束优化之间的相互作用得到了充分展示。

现在我们已经讨论了重要的思想,让我们回过头来将它们放在我们开始这个小节的具有线性约束的高维二次问题的背景中:

min Ax →=b → 1 2 x → t S x → ,

其中S是对称且正定的矩阵。带有放松约束的 Lagrange 公式是:

min ℒ ( x → ; p → ) = min 1 2 x → t S x → + p → . ( b → - A x → ) .

解决这个无约束问题,无论是通过设置 ∇ ℒ ( x → ; p → ) = 0 →,或者通过在 x → 上最小化然后在 p → 上最大化,或者通过在 p → 上最大化然后在 x → 上最小化,我们得到相同的解 ( x → ; p → ),这发生在我们高维拉格朗日函数的鞍点处,并给出了目标函数的最优值(这个问题的简单结构的优势是我们可以手动解决):

minimum cost f = 1 2 b → . (AS -1 A t ) -1 b →

此外,最优的影子价格是:p → * = df db → = (AS -1 A t ) -1 b →。

我们需要在这里学习的最后一件事是在更高维度中对鞍点的表征。对于一维约束问题,标志是拉格朗日函数的二阶导数(这是一个关于xp的函数)在一个变量中为负,在另一个变量中为正。高维度的类比是:Hessian 矩阵(二阶导数矩阵)的特征值在一组变量中为负,在另一组变量中为正,因此在一组变量中是凹的,在另一组变量中是凸的。我们的讨论适用于优化任何高维目标函数,该函数在一组变量中是凸的,在另一组变量中是凹的。这是表明景观具有鞍点的标志。对于拉格朗日函数,鞍点恰好是约束问题达到最小值的地方。

这是否适用于线性约束的线性优化问题,在运筹学中随处可见?是的,只要我们在问题中所有系数的符号正确,例如我们在前面子节中看到的最大流最小割和两人零和博弈的例子。

敏感性

在这里,我们关心优化问题及其解决方案对其输入数据变化的敏感性。也就是说,如果我们稍微改变c →、或A、或b →,那么最优解x → 和最优成本c → . x → 会发生什么?我们能否从旧解中获得新的最优解?在什么条件下我们可以这样做?这些是敏感性分析所涉及的一些重要情况:

  1. 我们已经将对偶问题中的最优p →解释为边际价格的向量。这与敏感性分析有关:最优成本相对于约束值的变化率。

  2. 如果我们添加一个新的决策变量,我们会检查它的降低成本,如果是负的,我们会向表中添加一个新列并从那里继续。

  3. 如果b →或c →的一个元素改变了δ,我们会得到一个δ值的区间,使得相同的基础仍然是最优的。

  4. 如果A的一个元素改变了δ,类似的分析是可能的。然而,如果这种改变影响了基本列的一个元素,情况就有些复杂了。

一般来说,如果我们有一个函数,我们想要了解它对其中一个输入的变化的敏感性,那就类似于询问关于该输入的一阶导数(在某个状态下),或者在该状态下的离散一阶导数(有限差分)。这里使得敏感性问题更有趣的是,我们正在处理受限问题,并检查问题的各种输入的小变化的影响。

博弈论和多智能体

博弈论对经济学、政治、军事行动、多智能体人工智能以及基本上对建模任何存在对手或竞争者的环境都非常重要,我们必须在这些条件下做出决策或制定策略。我们的最优策略受到我们对手策略的严重影响,无论我们是否了解它们或只是在猜测。

最简单和最容易理解的博弈论设置是两人零和博弈,我们在讨论对偶性时看到了这一点。在这里,有两个竞争实体,其中一个实体的损失是另一个实体的获胜,例如,两个政治竞选活动或两个竞争公司。将理论扩展到更复杂的现实生活情况,有许多竞争对手相互之间具有不同的优势和劣势,合作程度不同,以及许多相互关联的策略,一直是一个挑战。理论能够准确描绘和分析的情况与现实生活情况之间仍然存在差距。进展正在发生,许多研究人员正在研究这个问题,因为这样一个完整的理论将给世界带来难以置信的好处。想象一下能够从上方查看对手的整个网络,了解他们的动向、联系、可能的策略及其后果。

对于多智体环境,博弈论模型了每个涉及智体(玩家、公司、国家、军队、政治活动等)的理性行为或决策过程。在这个意义上,多智体的博弈论类似于单一智体的决策理论。

对于非合作博弈论(智体独立做出决策)最重要的概念是Nash 均衡:游戏的策略大纲,其中每个智体没有动机偏离大纲规定的策略。也就是说,如果他们偏离策略,智体将变得更糟,当然,假设每个人都是理性行事。

正如我们在对偶性部分看到的那样,对于两人零和博弈,我们可以将其建模为一个极小极大问题,并使用极小极大定理。我们也可以将其建模为一个线性优化问题,其中一个玩家解决原始问题,另一个解决对偶问题。这意味着我们可以为第一个玩家或第二个玩家设置优化问题。这两个问题最终会得到相同的解决方案。在这里,我们为两个玩家的游戏中所有策略的收益表提供了,目标是找到最大化每个玩家的收益(或最小化损失)的策略组合。直观地说,我们可以看到为什么对偶性内置在这个问题中。两个玩家互相推动,每个玩家的最佳策略解决了原始问题和对偶问题。

我们还可以使用图和图论的结果来分析两人博弈。这类似于我们如何将网络中的最大流量问题制定为线性优化问题。最终,数学中的许多事物都能很好地连接在一起,其中最令人满意的感觉之一就是当我们理解这些联系时。

对于多智体,有一些可用于决策的技术,包括:投票程序、用于分配稀缺资源的拍卖、用于达成协议的讨价还价,以及用于任务共享的合同网络协议。在数学建模多智体博弈方面,我们将在第十三章(人工智能和偏微分方程)中讨论哈密尔顿-雅可比-贝尔曼偏微分方程。在这里,为了找到每个玩家的最佳策略,我们必须解决一个高维的哈密尔顿-雅可比-贝尔曼类型的偏微分方程,用于游戏的价值函数。在深度学习之前,这些类型的高维偏微分方程是难以处理的,人们不得不进行许多近似,或者不考虑所有参与实体。最近(2018 年),一种深度学习技术已被应用于解决这些高维偏微分方程,一旦重新制定为带有终端条件的反向随机微分方程(如果您不知道这意味着什么,不用担心。这对本章不重要)。

我们在本书中早些时候遇到了另一个两人对抗性博弈理论设置,当时讨论生成对抗网络时,在第八章中,关于概率生成模型。

排队。

队列无处不在:为机器计算作业、船厂的服务队列、急诊室的队列、机场办理登机手续的队列,以及当地星巴克店的队列。设计良好的队列系统将为不同的设施和整个经济节省大量的时间、精力和金钱。它们将提高我们整体的幸福感。

队列的数学建模的目标是确定适当的服务水平,以最小化等待时间。该模型可能包括优先级规则,这意味着有优先级组,成员接受服务的顺序取决于其优先级组。它可能还包括按顺序或并行发生的不同类型的服务,或者一些按顺序进行,另一些并行进行(例如,在船舶维护设施中)。一些模型包括多个服务设施,一个排队网络。

关于排队理论有成千上万篇论文。重要的是要认识到排队数学模型的基本要素:

  • 队列的成员(顾客、船只、工作、患者)以一定的到达时间到达。如果到达过程是随机的,那么数学模型必须决定这种到达时间遵循的概率分布,要么来自数据,要么来自已知用于建模此类时间的数学分布。一些模型假设到达时间恒定。其他模型假设指数分布(马尔可夫过程),因为它便于数学分析并更好地模拟实际过程。其他模型假设Erlang分布,允许不同时间间隔的不同指数分布。其他模型假设更一般的分布。分布越一般,数学分析就越困难。数值模拟是我们永远的好朋友。

  • 可用的服务器数量(并行和顺序):一个整数。

  • 服务时间也遵循某种概率分布,我们必须决定。常见的分布类似于用于到达时间的分布。

此外,数学模型还必须跟踪以下内容:

  • 完整排队系统中初始成员的数量(等待和当前正在接受服务的成员)。

  • 在给定的后续时间点,完整排队系统中有n个成员的概率。

最后,该模型希望计算排队系统的稳态

  • 在完整排队系统中有n个成员的概率。

  • 每单位时间到达的新成员的预期数量。

  • 每单位时间完成服务的成员的预期数量。

  • 系统中每个成员的预期等待时间。

成员以一定的平均速率进入队列,等待接受服务,以一定的平均速率接受服务,然后离开设施。数学模型必须量化这些并平衡它们。

库存

随着供应链中目前的短缺,超市货架上空空如也,汽车维修零件短缺,新车、家庭装修材料等物资短缺,显然供需之间存在差距。商店补充货物之间的时间间隔增加,导致积压、低生产率和整体经济放缓。库存管理的数学模型量化了供应(随机或确定性)、需求,并制定了一个最佳的库存策略,用于确定何时补充和决定每次补充所需的数量。理想情况下,该模型必须能够访问一个信息处理系统,收集有关当前库存水平的数据,并在何时以及以多少数量补充它们时发出信号。

运营研究的机器学习

首先,与十年前相比,当今运营研究中非常令人兴奋的是,能够解决庞大的运营研究问题,有时涉及数千万个约束和决策变量。我们要感谢计算能力的爆炸和运营研究算法的计算机实现的持续改进。

此外,机器学习可以帮助预测进入运筹学模型的许多参数的值,利用大量可用数据。如果这些参数难以测量,建模者必须将它们从模型中移除或对其值进行假设。由于更准确的机器学习模型能够考虑成千上万的变量,这种情况不再存在。

最后,机器学习可以通过学习哪些空间部分值得关注或哪些子问题应优先考虑,加快在组合性大的搜索空间中搜索的速度。这正是文章《学习委派大规模车辆路径规划(2021)》所做的,比现有的路径规划算法提高了 10 到 100 倍的车辆路径规划速度。

在机器学习和运筹学交叉领域的类似研究正在取得巨大进展和可扩展解决方案。来自会议《运筹学遇见机器学习》的摘要列表提供了许多相关项目,例如实时数据综合和处理,从废物箱传感器中获取数据(跟踪容量)以实现更高效的废物收集操作(由于这依赖于实时数据,团队依赖于动态路由)。另一个很好的例子是自行车共享系统,其目标是预测每个位置所需的自行车数量,并分配团队以有效地分配所需数量的自行车。以下是摘要:*自行车共享系统控制室的运营商不断重新分配自行车到最有可能需要的地方,这需要对每个站点所需自行车数量的最佳洞察,并计划有效的路线以帮助相应地重新分配自行车。预测引擎和决策优化被用来计算每个站点在任何给定时间所需的最佳自行车数量,并计划有效的路线以帮助相应地重新分配自行车。DecisionBrain 和 IBM 为伦敦的自行车共享系统提供的解决方案是第一个利用优化和机器学习来解决自行车租赁库存、分配和维护问题的应用,可以轻松地重新部署到世界各地的其他自行车共享系统中。*实际上,DecisionBrain 的项目值得浏览和深思。

目前,我的团队和我正在解决我所在城市公共交通部门的一个问题。这是一个完美的场景,机器学习与运筹学相遇:利用历史乘客数据,特别是城市每个公交车站的日常上下车人数,以及人口密度、人口统计数据、脆弱性、城市分区数据、汽车拥有量、大学入学率和停车数据,我们使用神经网络来预测每个站点的供需模式,然后我们利用这些数据和运筹学中的最佳网络设计来重新设计公交路线,以便公交车站,特别是城市中最社会脆弱地区的车站,得到充分和高效的服务。

哈密尔顿-雅各比-贝尔曼方程

运筹学、博弈论和偏微分方程领域通过动态规划和哈密尔顿-雅可比-贝尔曼偏微分方程相交。首次在动态规划的背景下提出维度诅咒这个术语的是理查德·贝尔曼(数学家,1920-1984 年)。现在,维度诅咒使得这个非常有用的方程在现实生活中的应用受到限制,无法涵盖游戏中的所有参与者(或竞争对手、国家、军队),并解决他们的最佳策略,或者在运筹学问题中涉及的数千个变量,比如最佳资源分配问题。随着深度学习的发展,情况已经发生了变化。论文使用深度学习解决高维偏微分方程(2018)提出了一种解决这个方程和其他高维问题的方法。我们将在第十三章中讨论作者是如何做到的,关于人工智能和偏微分方程。

人工智能的运筹学

运筹学是基于最优解的决策科学。人类总是试图根据可用情况做出决策。人工智能旨在复制人类智能的所有方面,包括决策制定。在这个意义上,运筹学采用的决策制定方法自然地适用于人工智能。动态规划、马尔可夫链、最优控制和哈密尔顿-雅可比-贝尔曼方程、博弈论和多智能体游戏、网络优化等思想,随着几十年来人工智能的发展而不断进步。事实上,许多初创公司将自己打造成人工智能公司,而实际上他们在做的是古老的(而且很棒的)运筹学。

总结和展望

运筹学是在当前知识和情况下做出最佳决策的领域。它总是要找到在非常高维空间中搜索优化器的巧妙方法。

本书贯穿始终的一个主题是维度诅咒,以及研究人员为找到绕过它的方法所做的所有努力。在没有哪个领域像运筹学那样广泛地出现这种诅咒。在这里,随着特定问题中参与者数量的增加,搜索空间与组合增长:路线上的城市数量、竞争实体数量、人数、商品数量等。有非常强大的精确方法和启发式方法,但在速度和规模方面还有很大的改进空间。

机器学习,特别是深度学习,提供了一种从先前解决的问题、标记数据或模拟数据中学习的方法。如果我们能够确定瓶颈并能够将瓶颈的来源表述为一个机器学习问题,那么这将加快优化搜索的速度。例如,一个瓶颈可能是:我们有太多子问题需要解决,但我们不知道应该优先解决哪些问题以便快速接近最优解。为了使用机器学习来解决这个问题,我们需要一个已解决问题和子问题的数据集,并让机器学习模型学习哪些子问题应该优先解决。一旦模型学会了这一点,我们就可以用它来加速解决新问题。

运筹学中机器学习的其他用途包括业务常规类型的机器学习:从可用数据(实时或历史数据)中预测需求,然后使用运筹学来优化资源分配。在这里,机器学习有助于更好地预测需求,从而提高效率并减少浪费。

在这一章中,我们对运筹学领域及其最重要的问题类型进行了广泛概述。我们特别强调了线性优化、网络和对偶性。针对许多有用问题都有强大的软件包可用。我们希望这些软件包能不断整合该领域的最新进展。

在初级运筹学课程中通常不教授的两个主题是用于最优控制的 Hamilton Jacobi Bellman 偏微分方程和多人游戏的策略,以及使用变分法来优化泛函。这些通常被认为是偏微分方程中的高级主题。我们在这里讨论它们是因为它们都自然地与优化和运筹学联系在一起。此外,在这种背景下观察它们可以揭开它们对应领域的神秘面纱。

在进行运筹学和优化以降低成本、增加收入、提高时间效率等方面时,重要的是我们的优化模型不要忽视人为因素。如果一个调度模型的输出通过不稳定的时间表来保持某个公司的准时表现而扰乱低工资工人的生活,那么这就不是一个好模型,公司依赖的工人的生活质量和生计需要被量化然后纳入模型中。是的,生活质量需要被量化,因为其他一切都被纳入考虑,我们不能忽略这一点。像亚马逊、星巴克、麦当劳等拥有数十万低工资工人的公司有责任确保他们的运筹学算法不会让他们的工人陷入贫困。

我们以这段摘自 1960 年查尔斯·希奇撰写的关于运筹学中的不确定性的论文结束这一章。阅读这篇论文(括号内为我的编辑),人们不禁会思考自 1960 年以来运筹学领域取得了多大进步:

决策过程中没有比不确定性更普遍的特征了。作为运营研究者,当我们试图简化分析时,假设情况可以用确定性等价物来描述,我们可能会歪曲事实,甚至可能造成如此严重的错误,以至于使问题虚假,并给出一个荒谬的解决方案。例如,我们如何帮助军方做出发展决策——比如决定开发哪种飞机或导弹,当问题的本质是没有人能准确预测开发任何竞争装备需要多长时间,或者使其投入运营,它们将花费多少,性能如何,或者在未来的某个不确定日期,世界会是什么样子(如果世界确实还存在的话)?当我说“无法准确预测”时,我并没有夸大。我们通常发现,例如,新设备的生产成本在开发的早期阶段被低估了两到二十倍(不是 2 到 20%,而是两到二十倍)。为什么它们总是被低估,而不是高估,我留给你们丰富的想象力。[...] 另一件[运营研究者]经常可以做的事情,特别是涉及研究和开发的问题,是确定关键的不确定性并推荐减少它们的策略——购买信息。如果你不知道两种不同的导弹制导技术中哪一种会更好,你最好的建议很可能是:让它们都继续开发一段时间,当有更多更好的信息可用时再在它们之间做出选择。不要在意那些称你优柔寡断的人。你可以证明这种优柔寡断可以节省金钱和时间。当然,你不能尝试所有的事情。没有足够的预算。没有足够的资源。你还记得我们曾经说过“如果你给军事部门他们要求的一切,他们会试图加固月球!”(我们将不得不改变这种比喻。)实际上,正是由于资源的限制,运营研究和运营研究者才显得重要。如果没有资源的限制,我们就没有问题。我们的工作和机会是在限制条件下找到或发明一种更好的适应不确定世界的模式,比我们的上级在没有我们的情况下会找到的更好的方式;或者考虑成本和回报,购买信息以减少不确定性。

第十一章:概率

概率论是数学中最美丽的学科之一,它将我们带回到随机和确定性领域之间,这本应该是魔术的事情,但结果却是数学及其奇迹。概率提供了一种系统化的方法来量化随机性,控制不确定性,并将逻辑和推理扩展到在人工智能中至关重要的情况下:当信息和知识包含不确定性时,和/或当代理在不可预测或部分观察的环境中导航时。在这种情况下,代理计算关于某个环境的未观察方面的概率,然后基于这些概率做出决策。

人类对不确定性感到不舒服,但对近似和期望感到舒适。他们不会清楚地知道每一天的每一刻将如何发展,而是在路上做出决定。一个概率智能机器存在于概率世界中,而不是确定性和完全预定的真理和谬误中。

在整本书中,我们在需要时使用了概率论的术语和技术。通过这个过程,我们现在意识到我们需要熟练掌握联合概率分布(例如数据特征的联合概率分布)、条件概率、独立性、贝叶斯定理和马尔可夫过程。我们也意识到我们可以通过计算平均值和期望回到确定性世界。

这本书的每一章都有一个特点,那就是每一章都需要有自己的书来进行深入和全面的讨论。这在概率论的章节中尤为真实,因为其中涉及到成千上万的主题。我不得不做出选择,所以我选择在这一章中涵盖的主题基于三个标准:

  1. 在这本书中我们已经使用了与概率有关的内容。

  2. 作为学生,我在概率论中最困惑的是(比如在计算概率时为什么需要测度论?)。

  3. 我们还需要从概率论中了解哪些内容以应用于人工智能。

概率在这本书中的哪些地方出现了?

让我们快速列出在这本书中使用概率或采用随机方法的地方。我们将这个列表视为人工智能的基本概率。请注意,先验概率是无条件的,因为它们是在观察数据或证据之前的,而后验概率是有条件的,因为它们的值是在观察相关数据后条件化的。在接收到新的和相关的证据后,我们对某事物的信念程度会发生变化是有道理的。通常我们追求的是所有相关变量的联合概率分布,但这通常太大了,而且完全构建它所需的信息并不总是可用的。

以下是列表:

  1. 在最小化确定性机器学习模型(如回归、支持向量机、神经网络等)的损失函数时,我们使用随机梯度下降及其变体,在每个梯度下降步骤中随机选择训练数据实例的子集,而不是使用整个训练数据集,以加快计算速度。

  2. 在图模型的第九章中,我们多次利用了图上的随机游走,通过图的加权邻接矩阵实现这些游走。

  3. 在运筹学的第十章中出现了特定的概率分布,比如排队中顾客的到达和服务时间的概率分布。

  4. 动态决策和马尔可夫过程也出现在第十章的运筹学中,对于人工智能中的强化学习至关重要。它们将在本章中再次出现,然后在第十三章中再次出现,这次是在汉密尔顿雅可比贝尔曼方程的背景下。

  5. 在第十章中的两人零和博弈中,每个玩家都有一定概率采取某种动作,我们利用这一点来计算玩家的最优策略和预期收益。

  6. 蒙特卡洛模拟方法是依赖于重复随机抽样来数值解决确定性问题的计算算法。我们在第十三章中以 AI 和 PDEs 为例进行了说明。

  7. 神经网络的普遍定理:我们多次提到这一点,我们将在本章中证明它。这个证明是本书中唯一的理论部分,它将为我们提供测度论和泛函分析的美妙味道。

  8. 概率机器学习模型学习数据特征的联合概率分布P r o b ( x 1 , x 2 , ⋯ , x n , y target ),而不是学习这些特征的确定性函数。这个联合概率分布编码了这些特征同时发生的可能性。给定输入数据特征( x 1 , x 2 , ⋯ , x n ),模型输出目标变量在给定数据特征时的条件概率P r o b ( y predict | x 1 , x 2 , ⋯ , x n ),而不是输出y predict作为特征的确定性函数:y predict = f ( x 1 , x 2 , ⋯ , x n )。

  9. 随机变量及与之相关的两个最重要的量,即期望(随机变量的期望平均值)和方差(围绕平均值的扩散程度的度量):我们一直在使用它们,但没有正式定义。我们将在本章中定义它们。

  10. 概率的乘法规则或链式规则,即

    P r o b ( x 1 , x 2 ) = P r o b ( x 1 | x 2 ) P r o b ( x 2 ) = P r o b ( x 2 | x 1 ) P r o b ( x 1 )

    或者对于超过两个变量的情况,比如三个,不失一般性:

    P r o b ( x 1 , x 2 , x 3 ) = P r o b ( x 1 | x 2 , x 3 ) P r o b ( x 2 , x 3 ) = P r o b ( x 1 | x 2 , x 3 ) P r o b ( x 2 | x 3 ) P r o b ( x 3 )

  11. 独立性和条件独立性的概念是基础性的。如果一个事件的发生不影响另一个事件发生的概率,则这两个事件是独立的。所考虑特征的独立性极大地简化了问题。它帮助我们解开许多变量的复杂联合分布,将它们简化为更少变量的简单乘积,并使许多以前难以处理的计算变得可行。这极大地简化了世界的概率解释。注意独立性的区别,即仅两个事件的独立性(P r o b ( x 1 , x 2 ) = P r o b ( x 1 ) P r o b ( x 2 ))和许多事件的独立性,这是一个强假设,其中每个事件都独立于其他事件的任何交集。

  12. 对于第八章的概率生成模型,我们假设了一个先验概率分布,通过神经网络传递,并调整其参数。

  13. 在讨论联合和条件概率时,贝叶斯定理是至关重要的。它帮助我们量化代理的信念相对于证据。我们在许多情境中使用它,立即展示了它的用处,比如:

    P r o b ( d i s e a s e | s y m p t o m s ) = Prob(symptoms|disease)Prob(disease) Prob(symptoms)

    P r o b ( t a r g e t | d a t a ) = Prob(data|target)Prob(target) Prob(data)

    P r o b ( t a r g e t | e v i d e n c e ) = Prob(evidence|target)Prob(target) Prob(evidence) .

    P r o b ( c a u s e | e f f e c t ) = Prob(effect|cause)Prob(cause) Prob(effect) .

    请注意,在最后一个公式中,P r o b ( c a u s e | e f f e c t ) 量化了对角方向,而P r o b ( e f f e c t | c a u s e ) 量化了因果方向。

  14. 贝叶斯网络是表示变量之间依赖关系的数据结构。在这里,我们总结了有向图中的变量关系,并使用它来确定我们需要跟踪和更新哪些条件概率表,以便根据新证据进行更新:我们跟踪子节点在观察其父节点的条件下的概率。节点的父节点是直接影响该节点的任何变量。在这个意义上,贝叶斯网络是联合概率分布的表示,简化了我们知道涉及变量如何相互关联(哪些变量是哪些变量的父节点):

    P r o b ( x 1 , x 2 , ⋯ , x n ) = Π i=1 n P r o b ( x i | p a r e n t s ( X i ) )

  15. 在机器学习中,我们可以在回归模型和分类模型之间划清界限。在第八章中的概率生成模型中,我们遇到了一个用于分类的流行概率模型:朴素贝叶斯。在因果效应语言中,朴素假设是一些观察到的多个效应在给定原因的情况下是独立的,因此我们可以写成:

    P r o b ( c a u s e | e f f e c t 1 , e f f e c t 2 , e f f e c t 3 ) = P ( c a u s e ) P ( e f f e c t 1 | c a u s e ) P ( e f f e c t 2 | c a u s e ) P ( e f f e c t 3 | c a u s e )

    当上述公式用于给定数据特征的分类时,原因是类别。此外,我们可以绘制代表这种设置的贝叶斯网络。原因变量是父节点,所有效应都是从一个父节点衍生出来的子节点(图 11-1)。

300

图 11-1. 代表有共同原因的三个效应的贝叶斯网络。

AI 所需的更多基本知识是什么?

我们需要一些在本书中没有得到关注或仅仅是偶尔提到并被推迟到本章进行更详细讨论的额外主题。这些包括:

  • Judea Pearl 的因果建模和 do 计算

  • 一些悖论

  • 大型随机矩阵和高维概率

  • 随机过程,如随机游走,布朗运动等

  • 马尔可夫决策过程和强化学习

  • 概率论及其在 AI 中的应用

本章的其余部分关注上述主题。

因果建模和 do 计算

原则上,贝叶斯网络中相关变量之间的箭头可以指向任何方向。它们最终都导致相同的联合概率分布,尽管有些方式比其他方式更复杂。

相比之下,因果网络是那些特殊的贝叶斯网络,其中图的有向边不能指向除了因果方向以外的任何方向。对于这些网络,在构建连接和它们的方向时,我们必须更加留心。图 11-2 展示了一个因果贝叶斯网络的示例。

300

图 11-2. 因果贝叶斯网络。

请注意,贝叶斯网络和因果网络都对哪些变量听从哪些变量做出了强烈的假设。

具有因果推理能力的代理人,在人类术语中,比那些仅仅观察数据模式然后基于相关模式做出决策的代理人功能更高

以下区别至关重要:

  • 在贝叶斯网络中,我们只需要知道两个变量是否在概率上相关。火和烟在概率上相关吗?

  • 在因果网络中,我们进一步询问哪个变量对哪个变量做出响应:烟对火(因此我们在图中从火到烟画一个箭头);或火对烟(因此我们在图中从烟到火画一个箭头)?

我们需要的是一个数学框架来干预,以量化固定一个变量值的效果。这被称为do 计算(与统计观察和计数计算相对)。让我们介绍do 计算的两个基本公式:

  • 调整公式

  • 背门准则

根据因果推理的发明者Judea Pearl,他的为什么之书(2020 年)激发了本节和下一节的讨论,这些允许研究人员探索和绘制所有可能的干预路径,无论多么曲折,甚至可以节省我们运行随机对照试验的成本和困难,即使这些试验在物理上是可行的并且在法律上是允许的。

另一种选择:do 计算

给定一个因果网络,我们基于常识和专业知识的组合构建,同时为每个变量添加额外的未知原因,以确保我们考虑了一切,总体公式是联合概率分布的公式:

P r o b ( x 1 , x 2 , ⋯ , x n ) = Π i=1 n P r o b ( x i | p a r e n t s ( X i ) ) .

然后我们干预,应用d o ( X j = x ):这会切断指向X j的任何边,并影响X j的后代的所有条件概率,导致新的联合概率分布,其中不再包括干预变量的条件概率:我们已经将其值设置为X j = x 的概率为一,任何其他值的概率为零。图 11-2 显示了当我们打开洒水器时,原始网络中指向它的所有箭头都被切断。

因此我们有:

P r o b intervened ( x 1 , x 2 , ⋯ , x n ) = Π i≠j n P r o b ( x i | p a r e n t s ( X i ) ) if x j = x * 0 otherwise

调整公式

我们真正关心的是设置X j = x *如何影响网络中每个其他变量的概率,并且我们希望从原始未干预的网络中计算这些值:用数学术语来说,没有 do 运算符,因为我们可以观察数据来获取这些值,而不是进行新实验。

为此,我们引入调整公式,或者,控制混杂因素(可能的共同原因):这是X j及其父节点对X i影响的加权平均值。权重是父节点值的先验概率:

P r o b ( x i | d o ( X j = x ) ) = P r o b intervened ( X i = x i ) = parents(X j ) P r o b ( x i | x , p a r e n t s ( X j ) ) P r o b ( p a r e n t s ( X j ) )

注意,上述公式实现了我们消除do运算符的目标,并使我们重新通过观察数据而不是运行一些昂贵的干预实验或随机对照试验来找到我们的条件概率。

背门标准,或控制混杂因素

因果图表的故事还有更多。我们想知道对图表中某个下游变量的干预d o ( X j = x )的效果。我们应该能够对图表中另一个祖先的值进行条件处理:这也导致我们关心的下游变量。在因果建模中,我们称这个过程为阻断背门背门标准*:

P r o b ( x downstream | d o ( X j = x ) ) = P r o b intervened ( X downstream = x downstream ) = anscestor(X downstream ) P r o b ( x downstream | x , a n s c e s t o r ( X downstream ) ) P r o b ( a n s c e s t o r ( X downstream ) )

控制混杂因素

科学家和统计学家预测干预效果的最常见方法,以便他们可以对因果关系进行陈述,是控制可能的共同原因或混杂因素。图 11-3 显示了变量 Z 作为 X 和 Y 之间怀疑的因果关系的混杂因素。

300

图 11-3. Z 是 X 和 Y 之间怀疑的因果关系的混杂因素。

这是因为,一般来说,混杂是观察和干预之间的混淆的主要来源。这也是著名的相关不意味因果的来源。在这里,我们看到一些奇怪而有趣的例子:高温是冰淇淋销售和鲨鱼袭击的混杂因素(但为什么有人会研究冰淇淋和鲨鱼之间的任何关系呢?)。背门标准和调整公式轻松解决了混杂因素对因果关系的规定的障碍。

如果我们确信已经获得了足够的deconfounder变量集合的数据来阻止干预和结果之间的所有背门路径,我们可以使用调整公式来控制混杂因素。为此,我们从数据中逐层估计因果效应,然后计算这些层的加权平均值,其中每个层根据其在人口中的普遍程度进行加权。

现在没有了背门标准,统计学家和科学家就无法保证任何调整是合法的。换句话说,背门标准保证了 deconfounder 的每个分层中的因果效应实际上是该分层中的观察趋势。

是否有更多的规则可以消除 do 运算符?

能够将我们从具有 do 运算符(干预)的表达式转换为没有 do 运算符(观察)的表达式的规则非常可取,因为它们消除了干预的需要:它们使我们能够通过纯粹的数据观察来估计因果效应。调整公式和背门标准确实为我们做到了这一点。

是否有更多的规则?更雄心勃勃的问题是:是否有一种方法可以事先决定某个因果模型是否适合于消除 do 运算符,以便我们知道模型的假设是否足以从观测数据中揭示因果效应而无需任何干预?了解这一点是巨大的!例如,如果模型的假设不足以消除 do 运算符,那么无论我们多聪明,都无法避免进行干预实验。另一方面,如果我们不必干预就能估计因果效应,那么节省是惊人的。这些本身就值得更深入地研究概率因果建模和 do 微积分。

为了理解朱迪亚·珀尔的 do 微积分,我们总是从因果图开始,考虑导致删除指向或指出感兴趣变量的边缘的条件。珀尔的三条规则给出了以下条件:

  1. 我们可以插入或删除观察:

    P r o b ( y | d o ( x ) , z , w ) = P r o b ( y | d o ( x ) , w )

  2. 我们可以插入或删除干预:

    P r o b ( y | d o ( x ) , d o ( z ) , w ) = P r o b ( y | d o ( x ) , w )

  3. 我们可以用观察替换干预:

    P r o b ( y | d o ( x ) , d o ( z ) , w ) = P r o b ( y | d o ( x ) , z , w )

有关 do 微积分的更多详细信息,请参见例如《重新审视 do 微积分,朱迪亚·珀尔,主题演讲,2012 年 8 月 17 日》

悖论和图表解释

人工智能代理需要能够处理悖论。我们都看过卡通片,其中一个机器人陷入疯狂的循环,甚至在逻辑遇到悖论时自行拆卸,螺丝和弹簧四处飞溅。我们不能让这种事情发生。此外,悖论经常出现在非常重要的领域,比如制药和医学领域,因此我们必须在数学的视角下仔细审视它们,并仔细揭开它们的神秘面纱。

让我们来看看三个著名的悖论:蒙蒂霍尔、伯克森和辛普森。我们将通过图表和因果模型来看待它们:蒙蒂霍尔和伯克森类型的悖论由于碰撞器而导致混淆,而辛普森类型的悖论由于混杂因素而导致混淆。人工智能代理应该配备这些图表作为其数据结构的一部分(或具有构建和调整它们的能力),以便进行正确推理。

朱迪亚·珀尔的《为什么之书(2020)》完美地表达了以下观点:

悖论反映了因果和关联之间的紧张关系。这种紧张关系始于它们站在因果阶梯的两个不同梯级上[观察、干预、反事实],并且由于人类直觉遵循因果逻辑,而数据符合概率和比例逻辑,这种紧张关系变得更加严重。当我们将在一个领域学到的规则错误地应用到另一个领域时,悖论就会产生。

蒙提霍尔问题

假设你参加一个游戏节目,有三扇门供你选择。其中一扇门后面是一辆汽车,其他的是山羊。你选择了一扇门,比如#1,主持人知道门后面是什么,打开了另一扇门,比如#3,里面有一只山羊。他对你说:“你想换门选#2 吗?”你改变选择门有利吗?

答案是是的,换门,因为如果不换门,你得到汽车的概率是 1/3,而换门后,概率就跳到了 2/3!这里需要注意的主要事情是主持人知道汽车在哪里,并选择打开一个他知道里面没有汽车的门。

那么,如果我们从最初的选择中换门,为什么赢得的概率会翻倍呢?因为主持人提供了新信息,只有在我们从最初没有信息的选择中换门时才会利用这些信息:

在不换门策略下

  • 如果我们最初选择了赢得的门(概率为 1/3),并且不换,那么我们就赢了。

  • 如果我们最初选择了一个失败的门(概率为 2/3),并且不换,那么我们就输了。

这意味着在不换门策略下,我们只会赢得 1/3 的时间。

在换门策略下

  • 如果我们最初选择了赢得的门(概率为 1/3),并且从中换门,那么我们就输了。

  • 如果我们最初选择了一个失败的门(概率为 2/3),新信息指向另一扇失败的门,我们换门,那么我们会赢,因为剩下的唯一一扇门就是赢得的门。

这意味着在换门策略下,我们会赢得 2/3 的时间。

当我们在图 11-4 中绘制这个游戏的图表时,我们意识到主持人选择打开的门有两个指向它的父母:你选择的门和汽车的位置。

300

图 11-4。蒙提霍尔悖论涉及的变量的因果图。

在这个碰撞器上进行条件处理会改变父母的概率。它在最初独立的父母之间创建了一种虚假的依赖关系!这类似于我们在遇到他们的孩子后改变对父母遗传特征的信念。这些是无因果关系的相关性,在我们对碰撞器进行条件处理时引起。

现在假设主持人在不知道自己选择的门是赢得还是失败的门的情况下选择了门。那么换门或不换门都不会改变赢得汽车的几率,因为在这种情况下,你和主持人都有相等的机会,1/3 的时间赢得,2/3 的时间输掉。现在当我们为这个完全随机且没有先验知识的游戏绘制图表时,汽车的位置和主持人选择打开的门之间没有箭头,因此在主持人的选择条件下,你选择的门和汽车的位置仍然是独立的

伯克森悖论

*1946 年,梅奥诊所的生物统计学家约瑟夫·伯克森指出了在医院环境中进行的观察性研究的一个特殊之处:即使两种疾病在整体人群中没有关联,它们在医院患者中可能会出现关联。1979 年,麦克马斯特大学的大卫·萨克特,一个各种统计偏差的专家,提供了强有力的证据证明伯克森悖论是真实的。在一个例子中,他研究了两组疾病:呼吸系统和骨骼。大约 7.5%的人口患有骨骼疾病,这个百分比与他们是否患有呼吸系统疾病无关。但对于住院患有呼吸系统疾病的人来说,骨骼疾病的发生率跃升至 25%!萨克特称这种现象为“入院率偏差”或“伯克森偏差”。

与蒙蒂·霍尔案例类似,导致伯克森悖论出现的罪魁祸首是一个碰撞器图,原本独立的两种疾病都指向了住院:患有这两种疾病的患者比只患有其中一种疾病的患者更有可能住院。当我们以住院为条件,也就是碰撞器时,最初独立变量之间出现了无因果相关的情况。我们现在已经习惯了碰撞器偏差。

辛普森悖论

想象一个悖论,如果让其自行发展,其结论是荒谬的:*当我们知道患者的性别时,我们不应该开药,因为数据显示这种药对男性和女性都有害;但如果性别未知,那么我们应该开药,因为数据显示这种药对整体人群有益!*这显然是荒谬的,我们的第一反应应该是抗议:给我看数据!

当人群的几个组合中出现趋势,但在合并这些组合时消失或反转时,我们认识到辛普森悖论。

让我们首先揭穿这个悖论。这是一个简单的分数(或比例)相加的数值错误。总之,当我们相加分数时,我们不能简单地将各自的分子和分母相加:

A B > a b and C D > c d ⇏ A+C B+D > a+c b+d

例如,假设数据显示:

  • 服用药物的女性中有 3/40 患心脏病,而没有服用药物的女性中只有 1/20 患心脏病(3/40 > 1/20);

  • 服用药物的男性中有 8/20 患心脏病,而没有服用药物的男性中有 12/40 患心脏病(8/20 > 12/40)。

现在当我们合并女性和男性的数据时,不平等的方向发生了逆转:3/40 > 1/20 和 8/20 > 12/40 但是合理地 (3 + 8)/(40 + 20) < (1 + 12)/(20 + 40)。换句话说:在服用药物的 60 名男性和女性中,有 11 人患心脏病,而在没有服用药物的 60 名男性和女性中,有 13 人患心脏病。

然而,当我们以这种方式合并数据时,我们犯了一个简单的分数错误。换句话说,为了解决辛普森悖论,我们不应该简单地将分子和分母相加,然后期望不等式成立。请注意,服用药物的 60 人中,有 40 名女性和 20 名男性;而没有服用药物的 60 人中,有 20 名女性和 40 名男性。我们正在比较苹果和橙子,并且与性别混淆:性别影响是否给药和是否发生心脏病。图 11-5 中的图表说明了这种混淆关系。

250

图 11-5. 性别是服用药物和心脏病的混杂因素。

如果我们天真地合并比例时感觉有些不对劲,那是正确的:如果在每个地方都是公平的,那么全局也是公平的,或者如果在每个地方都是某种方式,那么我们应该期望全局也是这样。

这种错误经常发生并不奇怪,因为人类直到相对较近的时候才能正确理解分数。在领域如继承和贸易中,有古代文本中处理分数的错误。我们的大脑对分数的抵抗似乎仍然存在:我们在七年级学习分数,这也是许多人传说中对数学的憎恶的起源。

那么正确的数据合并方式是什么呢?我们七年级的智慧告诉我们使用公共分母 40,并根据性别进行条件判断:对于女性,3/40>2/40,对于男性,16/40>12/40。现在由于在一般人口中男性和女性的分布是相等的,我们应该取平均值,并得出结论(3/40+16/40)/2>(2/40+12/40)/2,也就是说,在一般人口中服用药物的心脏病发作率为 23.75%,不服用药物的为 17.5%。这里没有发生任何神奇和不合逻辑的逆转。此外,这种药物相当糟糕!

大型随机矩阵

大多数人工智能应用处理大量高维数据(大数据),这些数据以高维向量、矩阵或张量的形式组织,代表数据表、图像、自然语言、图网络等。这些数据中很多是嘈杂的或具有固有的随机性质。为了处理这样的数据,我们需要一个数学框架,结合了通常处理标量随机变量的概率和统计学,以及处理向量和矩阵的线性代数。

均值和方差仍然是核心概念,因此我们会发现许多关于所涉及的高维随机变量的期望和方差(不确定性)的陈述和结果。与标量情况类似,棘手的部分是控制方差,因此文献中的许多工作都会找到随机变量分布尾部(不等式)的界限,或者从均值一定距离内找到随机变量的可能性。

由于我们现在有了矩阵值随机变量,许多结果旨在了解它们的谱的行为(分布):特征值和特征向量。

随机向量和随机矩阵的例子

不足为奇的是,对大型随机矩阵的研究演变成了自己的理论。它们出现在各种重要应用中,从金融到神经科学再到物理学和技术设备的制造。以下仅是一些例子。这些具有重大影响,因此每个领域都有大量的数学社区。

量化金融

一个随机向量的例子是量化金融中的投资组合。我们经常需要决定如何在大量股票中进行投资,这些股票的价格波动是随机的,以实现最佳表现。投资组合本身是一个随时间演变的大型随机向量。同样,纳斯达克股票的每日回报率(纳斯达克包含 2500 多只股票)是一个随时间演变的大型随机向量。

神经科学

另一个例子来自神经科学:在大脑中建模神经元之间的突触连接网络时,随机矩阵会出现。在一定长度的t个连续时间间隔内,n个神经元发射的脉冲数是一个n × t随机矩阵。

数学物理学:维格纳矩阵

在数学物理学中,特别是在核物理学中,物理学家尤金·维格纳引入了随机矩阵来模拟重原子核和它们的谱。简而言之,他将重原子核谱线之间的间距与随机矩阵的特征值之间的间距联系起来。

Wigner 最初使用的确定性矩阵是系统的哈密顿量,它是描述核子中中子和质子之间所有相互作用的矩阵。对哈密顿量进行对角化以找到核的能级是不可能的,因此 Wigner 寻找了一种替代方法。他完全放弃了精确性和确定性,从概率的角度来看待问题:不是问能级究竟是什么,而是问类似的问题:

  • 在某个区间内找到一个能级的概率是多少?

  • 两个连续能级之间的距离在某个范围内的概率是多少?

  • 我们能否用具有正确对称性质的纯随机矩阵替换系统的哈密顿量?例如,在时间反演不变的量子系统中,哈密顿量是一个实对称矩阵(无限大)。在存在磁场的情况下,哈密顿量是一个复的厄米矩阵(实对称矩阵的复数对应)。在存在自旋轨道耦合(量子物理术语)的情况下,哈密顿量是辛(另一种特殊类型的对称矩阵)的。

类似地,Wigner 类型的随机矩阵出现在凝聚态物理中,我们在这里使用实对称 Wigner 矩阵模拟原子对或自旋对之间的相互作用。总的来说,Wigner 矩阵在随机矩阵理论中被认为是经典的

多元统计学:Wishart 矩阵和协方差

在多元统计学中,John Wishart 在想要估计大型随机向量的样本协方差矩阵时引入了随机矩阵。Wishart 随机矩阵在随机矩阵理论中也被认为是经典的。请注意,样本协方差矩阵是对总体协方差矩阵的估计。

在处理样本协方差矩阵时,一个常见的情况是观察到n维变量t次,也就是说,原始数据集是一个大小为n × t的矩阵。例如,我们可能需要估计大量资产的回报的协方差矩阵(使用较小的样本),比如:纳斯达克的 2500 只股票的日回报。如果我们使用 5 年的每日数据,考虑到一年有 252 个交易日,那么对于 2500 只股票,我们每只股票有 5×252=1260 个数据点。原始数据集将是一个大小为2500 × 1260的矩阵。这是一个观测次数小于变量数量的情况。我们还有其他情况,观测次数和变量数量相反,以及观测次数和变量数量相差很大的极端情况。在所有情况下,我们对样本协方差矩阵的特征值的概率分布感兴趣。

让我们写出协方差矩阵的条目公式。对于一个变量z → 1(比如一只股票)有t次观察,其均值为z ¯ 1,我们有方差

σ 1 2 = (z 1 (1)-z ¯ 1 ) 2 +(z 1 (2)-z ¯ 1 ) 2 +⋯+(z 1 (t)-z ¯ 1 ) 2 t

同样,对于每个变量z → i,我们有它们的方差σ i 2。这些位于协方差矩阵的对角线上。现在每个非对角线σ ij条目是相应变量对的协方差:

σ ij = (z i (1)-z ¯ i )(z j (1)-z ¯ j )+(z i (2)-z ¯ i )(z j (2)-z ¯ j )+⋯+(z i (t)-z ¯ i )(z j (t)-z ¯ j ) t

协方差矩阵是对称的且正定的(具有正特征值)。协方差矩阵中的随机性通常源于嘈杂的观测。由于测量噪声是不可避免的,确定协方差矩阵在数学上变得更加复杂。另一个常见问题是样本通常不是独立的。相关样本引入了某种冗余,因此我们预期样本协方差矩阵的行为就好像我们观察到的样本比实际少。因此,我们必须在存在相关样本的情况下分析样本协方差矩阵。

动力系统

在平衡点附近的线性化动力系统(dx →(t) dt = A x → ( t ))。在混沌系统的背景下,我们想要了解初始条件的微小差异如何随着动力学的展开而传播。一种方法是在线性化未受扰动轨迹的附近线性化动力学。扰动会随着矩阵的乘积演化,对应于线性化动力学,作用在初始扰动上。

其他同样重要的例子

还有其他例子。在数论中,我们可以使用某些随机矩阵的特征值分布来建模黎曼 zeta 函数的零点分布。对于关注量子计算的人,这里有一个历史注记:在薛定谔方程之前,海森堡用他所称之为“矩阵力学”的术语制定了量子力学。最后,在第十三章中,我们将遇到“概率演化的主方程”。这涉及从系统的一个状态到另一个状态的转移概率的大矩阵。

随机矩阵理论中的主要考虑因素

根据问题的表述,出现的矩阵可能是确定性的或随机的。对于确定性向量和矩阵,经典的数值线性代数适用,但极高的维度迫使我们使用随机化来有效地进行矩阵乘法(通常为O ( n 3 ))、分解和计算谱(特征值和特征向量)。通过研究这些特征值和特征向量,我们可以了解矩阵的大量性质。在随机领域中,当矩阵是随机的时,它们也是随机的。那么我们如何计算它们并找到它们的概率分布(甚至只是它们的均值和方差或这些值的界限)?这是大型随机矩阵领域(或随机化线性代数,或高维概率)所涉及的问题类型。我们通常关注:

  • 涉及的随机数学对象:随机向量和随机矩阵。随机向量或随机矩阵的每个元素都是一个随机变量。这些随机变量可以是静态的随机变量,也可以随时间演变。当随机变量随时间演变时,它就成为“随机过程”。显然,随机过程在数学上比它们的静态对应物更加复杂。例如,我们可以对随时间演变的方差说些什么?

  • 随机投影:我们总是对投影到一些低维空间并保留基本信息感兴趣。这通常涉及将矩阵与向量相乘或将矩阵分解为更简单矩阵的乘积,例如奇异值分解。当数据不仅很大而且条目是随机的时,我们如何做到这一点?

  • 添加和乘以随机矩阵:请注意,标量随机变量的和与积也是随机变量,并且它们的分布已经得到了深入研究。同样,时间演变标量随机变量的和与积,这是布朗运动和随机微积分的基础,有大量文献支持。这个理论如何过渡到更高维度?

  • 计算随机矩阵的谱,并探索其(随机)特征值和特征向量的性质。

  • 计算随机矩阵的和与积的谱。

  • 乘以许多随机矩阵,而不仅仅是两个。这个问题在技术行业的许多情境中出现,例如,在研究光在一系列具有不同光学指数的板块中的传播时,或者在无序导线中电子的传播,或者位移在颗粒介质中的传播方式。

  • 矩阵的贝叶斯估计(贝叶斯任何事情总是涉及根据某些证据估计某事的概率):在这里,我们开始的矩阵(观测矩阵)是我们关心的真实矩阵的一个带有噪声的版本。噪声可以是加性的,因此观察到的矩阵E=真实矩阵+一个随机噪声矩阵。噪声也可以是乘性的,因此观察到的矩阵E=真实矩阵 × 随机噪声矩阵。一般来说,我们不知道真实矩阵,希望知道在观察到有噪声的矩阵的情况下这个矩阵的概率。也就是说,我们必须计算Prob(真实矩阵|有噪声的矩阵)

随机矩阵集合

在大多数应用中,我们会遇到(随机或确定性的)没有特定结构的大矩阵。随机矩阵理论的主要前提是,我们可以用某个随机矩阵集合的典型元素(期望元素)替换这样一个大复杂矩阵。大部分时间我们将注意力限制在具有实数元素的对称矩阵上,因为这些是数据分析和统计物理中最常见的矩阵。幸运的是,这些矩阵在数学上更容易分析。

谈到数学,我们喜欢多项式函数。它们是非线性的,足够复杂,可以捕捉周围世界中的复杂性,并且易于评估和进行计算。当我们研究大型随机矩阵时,会出现一种特殊类型的经过深入研究的多项式:正交多项式。正交多项式序列是一组多项式,使得序列中的任意两个不同多项式在某种内积下是正交的(它们的内积为零)。最广泛使用的正交多项式序列是:Hermite 多项式,Laguerre 多项式和 Jacobi 多项式(其中包括重要的 Chebyshev 多项式和 Legendre 多项式类)。在正交多项式领域中著名的人物,主要是在 19 世纪末期发展起来的,有 Chebyshev、Markov 和 Stieltjes。难怪这些名字在概率论中随处可见,从 Chebyshev 不等式到 Markov 链和过程再到 Stieltjes 变换。

以下三种基本的随机矩阵集合与正交多项式密切相关:

  1. Wigner: 这是高斯分布的矩阵等价物。一个 1×1 的 Wigner 矩阵是一个单个的高斯随机数。这与厄米特正交多项式密切相关。高斯分布及其相关的厄米特多项式在基础变量无上限和下限的情况下非常自然地出现。Wigner 随机矩阵的特征多项式的平均遵循简单的递归关系,使我们能够将它们表示为厄米特多项式。Wigner 集合是所有随机矩阵集合中最简单的。这些矩阵的所有元素都是高斯随机变量,唯一的约束是矩阵是实对称的(高斯正交集合),复共轭(高斯酉集合)或辛(高斯辛集合)。

  2. Wishart: 这是 gamma 分布的矩阵等价物。一个 1×1 的 Wishart 是一个 gamma 分布的数字。这与拉盖尔正交多项式密切相关。Gamma 分布和拉盖尔多项式出现在变量从下限(例如正变量)受限的问题中。Wishart 随机矩阵的特征多项式的平均遵循简单的递归关系,使我们能够将它们表示为拉盖尔多项式。

  3. Jacobi: 这是 beta 分布的矩阵等价物。一个 1×1 的 Wishart 是一个 beta 分布的数字。这与雅可比正交多项式密切相关。Beta 分布和雅可比多项式出现在变量从上限和下限受限的问题中。雅可比矩阵出现的一个自然情境是样本协方差矩阵。它们还出现在仅具有两个特征值的矩阵的加法或乘法的简单问题中。

与标量随机变量一样,我们研究随机矩阵集合的矩和 Stieltjes 变换。此外,由于我们处于矩阵领域,我们研究这些随机矩阵的特征值的联合概率分布。对于上述提到的集合,特征值之间存在强相关性,我们可以将它们视为通过成对排斥相互作用的粒子。这些被称为库仑排斥特征值,这个想法是从统计物理学中借鉴的(例如,有关矩阵特殊结构的特征值行为的更深入探讨,请参阅特征值模式(2003))。事实证明,在 Wigner 情况下,库仑气体问题的最可能位置与厄米特多项式的零点重合,在 Wishart 情况下与拉盖尔多项式的零点重合。此外,这些集合的特征值在其最可能位置周围波动非常小。

两个大型随机矩阵之和的特征值密度

除了找到随机矩阵集合的特征值的联合概率分布外,我们还关心大型随机矩阵之和的特征值密度(概率分布),以每个矩阵在总和中的情况为基础。戴森布朗运动出现在这个背景下。它是从标量随机变量到随机矩阵的布朗运动的扩展。此外,矩阵的傅立叶变换使我们能够定义标量独立同分布随机变量的生成函数的类比,并使用其对数来找到精心构造的随机矩阵之和的特征值密度。最后,我们可以将 Chernoff、Bernstein 和 Hoeffding 类型的不等式应用于有限个随机厄米矩阵的最大特征值。

大型随机矩阵的基本数学

在离开大型随机矩阵讨论之前,让我们强调一下如果我们想深入研究这一领域的必知内容。我们在本章中涉及了其中一些内容,其余内容留给您的搜索技能:

  • 计算谱:矩阵的特征值和特征向量(A v → = λ v →)

  • 矩阵的特征多项式(d e t ( λ I - A ))

  • 埃尔米特、拉盖尔和雅各比正交多项式

  • 高斯、伽玛和贝塔概率分布

  • 随机变量的矩和矩生成函数

  • 斯蒂尔杰斯变换

  • 切比雪夫一切

  • 马尔可夫一切

  • 切诺夫、伯恩斯坦和霍夫丁类型的不等式

  • 布朗运动和戴森布朗运动

截至 2022 年,最快的超级计算机是Frontier,世界上第一台艾克萨计算机(1.102 艾克萨 FLOPS),位于能源部奥克岭国家实验室。即使在这样一台超级计算机上,当矩阵非常大时,我们也无法应用数值线性代数(例如解涉及矩阵的方程组、找到其谱或找到其奇异值分解)。我们必须做的是对矩阵的列进行随机抽样。最好以导致最忠实逼近的概率抽样列,即方差最小的那个。例如,如果问题是将两个大矩阵AB相乘,我们不是均匀地从A中抽取一列和从B中对应的一行,而是选择A中的列和B中对应的行,概率为p j与norm(column j of A)norm(row j of B)成比例。这意味着我们更经常选择具有较大范数的列和行,从而更有可能捕捉乘积的重要部分

大型和非大型矩阵的列空间非常重要。记住给定矩阵A的列空间的三个最佳基础:

  1. 奇异值分解中的奇异向量,

  2. 来自 Gram Schmidt 过程的正交向量(矩阵的著名QR分解),

  3. 或者直接从A的列中选择线性独立的列。

随机过程

我们现在不再考虑静态(标量或向量或矩阵或张量)随机变量,而是考虑一个时间相关的随机变量。数学中的下一步总是包括时间演变实体。顺便说一句,人类尚未完全理解时间的本质,也没有找到表达其定义的方法。然而,我们理解运动和变化,一个系统从一个状态过渡到另一个状态,我们将时间与之联系起来。我们还将从一个状态过渡到另一个状态的概率联系起来。记住这一点,马尔可夫链很快就会出现。

随机过程是一个无限序列X 0 , X 1 , X 2 , . . .,其中我们将每个X t中的索引t视为离散时间。因此,X 0是时间0时的过程(或在某个特定时间0的随机量的值),X 1是时间1时的过程(或在某个特定时间1的随机量的值),依此类推。要正式定义一个随机变量,我们通常将其固定在我们称之为概率三元组的组合中:(样本空间,σ代数,概率测度)。暂时不要纠结于这个三元组的含义,而是纠结于一个随机过程X 0 , X 1 , X 2 , . . .中的所有随机变量都生活在相同的概率三元组上,从这个意义上说属于一个家族。此外,这些随机变量通常不是独立的。

同样重要(取决于应用)的是连续时间随机过程,其中X t现在编码了任意非负时间t的随机量的值。此外,这很容易与我们对时间的直观感知相吻合,即时间是连续的。

因此,随机过程是有限维多变量分布向无限维度的泛化。当试图证明随机过程的存在时,这种思考方式非常方便,因为我们可以借助允许我们通过依赖于组成分布的有限维集合扩展到无限维度的定理。

随机过程的例子无处不在。每当我们遇到波动时,我们就会想到这些:气体分子的运动,电流波动,金融市场中的股票价格,一段时间内呼叫中心接到的电话数量,赌徒的过程,以及这个有趣的微生物学领域中的例子,讨论在肠道中发现的细菌,血液、跳蚤或蜱虫的群落组装主要受随机过程控制,而肠道微生物组则由确定性过程决定

股市的例子在随机过程理论中是中心的,因为这是布朗运动(也称为维纳随机过程)如何被推广的,L. 巴舍利耶研究了巴黎证券交易所的价格变动。呼叫中心的电话例子也在理论中是中心的,因为这是泊松随机过程如何被推广的,A. K. 埃尔朗模拟了一段时间内发生的电话呼叫数量。

这两个过程,布朗运动和泊松过程,在许多与上述例子无关的情境中出现。也许这告诉我们一些关于自然及其基础过程统一性的更深层次的东西,但让我们不要陷入哲学,而是留在数学领域。一般来说,我们可以根据它们的数学特性将随机过程分为几类。其中一些是离散时间过程,另一些是连续时间过程。区分哪个是哪个是相当直观的。

为了得出关于布朗运动和泊松过程以及我们即将概述的其他随机过程的结论,我们需要对它们进行数学分析。在概率论中,我们首先要建立随机过程的存在性:也就是说,我们需要明确定义离散时间的无限随机变量序列 X 0 , X 1 , X 2 , . . . 或连续时间 X t 过程存在的概率三元组(样本空间,sigma 代数,概率测度),并证明我们可以找到一组满足其特征性质的随机变量。我们将在本章后面重新讨论这一点,但在证明随机过程的存在性时,我们要搜索的一个重要名字是 A.科尔莫戈洛夫(1903-1987),即科尔莫戈洛夫存在定理。这确保了存在一个随机过程,其具有与我们期望的过程相同的有限维分布。也就是说,我们可以通过以某种一致的方式指定所有有限维分布来获得我们期望的随机过程(无限过程,以离散或连续时间为索引)。

让我们来看一下最突出的随机过程:

伯努利过程

这是与反复抛硬币以及生活中模仿这种过程的任何过程大多相关的随机过程(在一些机场,海关官员让我们按下一个按钮,如果灯变绿,我们通过,如果变红,我们就被搜查)。在数学上,它是一个独立同分布的无限序列的随机变量 X 0 , X 1 , X 2 , . . . ,其中每个随机变量以概率p取零值或以概率1-p取一值。这个过程的一个样本实现看起来像 0 , 1 , 1 , 0 , . . . 。

泊松过程

我们可以将泊松过程看作是其基础随机变量为计数变量的随机过程:这些变量计算在一段时间内发生了多少有趣的事件。这些事件要么是独立的,要么是弱相关的,并且每个事件发生的概率很小。它们以一个固定的期望速率λ发生。这个参数表征了泊松随机变量。例如,在排队理论中,我们用它来模拟顾客到达商店的情况,或者电话中心的电话呼叫,或者在某个时间间隔内地震的发生。这个过程的状态空间是自然数,索引集是非负数。涉及泊松过程的随机变量的概率分布具有以下公式

P r o b ( X = n ) = λ n e -λ n!

上面的公式给出了在一个单位时间段内发生n个有趣事件的概率。显然,在固定的时间间隔内,不太可能发生许多罕见事件,这解释了大n时公式中的快速衰减。泊松随机变量的期望和方差是λ。

泊松过程 X t ; t ≥ 0 ,以连续时间为索引,具有以下特性:

  • X_0=0

  • 在长度为t的任何区间内的事件(或点)的数量是一个参数为λ t的泊松随机变量。

泊松过程具有两个重要特征:

  1. 每个有限间隔内的事件数量是一个泊松随机变量(具有泊松概率分布)。

  2. 不相交时间间隔内的事件数量是独立的随机变量。

泊松过程是一个 Levy 随机过程的例子,这是一个具有平稳独立增量的过程。

随机漫步

很容易将最简单的随机漫步想象为某人在道路上行走,他从某处开始,然后以概率p向前移动(在他的位置上加一),以概率1-p向后移动(从他的位置上减一)。我们可以定义结果离散时间随机过程X 0 , X 1 , ⋯,使得X 0 = x 0,X 1 = X 0 + Z 1,X 2 = X 1 + Z 2 = X 0 + Z 1 + Z 2,等等,其中Z 1 , Z 2 , d o t s是一个伯努利过程。如果p=0.5,这是一个对称随机漫步。

在第九章中,我们多次使用图上的随机漫步,我们从某个图节点开始,然后以给定概率转移到其中一个相邻节点。图的归一化邻接矩阵将定义所有节点的转移概率。这是一个很好的例子,说明了图上的随机漫步与马尔可夫链的联系,即将很快出现。有关更多信息,请查看这篇关于图上的随机漫步的笔记。

维纳过程或布朗运动

我们可以将维纳过程或布朗运动视为具有无穷小步长的随机漫步,因此离散运动变为无穷小波动,我们得到一个连续随机漫步。布朗运动是一个连续时间随机过程X t ; t ≥ 0。随机变量X t是实值的,具有独立增量,并且在两个不同时间ts的X t和X s之间的差异通常分布(遵循高斯钟形分布)具有均值0和方差t-s。也就是说,X t - X s根据增量的大小服从正态分布。

关于实值连续时间随机过程的有趣之处在于它们可以沿着连续路径移动,产生有趣的随机时间函数。例如,几乎可以肯定,布朗运动(维纳过程)的一个样本路径在任何地方都是连续的,但在任何地方都不可微分(尖峰太多)。

布朗运动在随机过程的研究中是基础性的。它是随机微积分的起点,位于几个重要类别的过程的交集处:它是一个高斯马尔可夫过程,它是一个莱维过程(一个具有平稳独立增量的过程),它是一个马丁格尔,接下来将讨论。

马丁格尔

离散时间马丁格尔是一个随机过程X 0 , X 1 , X 2 , . .,对于任何离散时间 t,

𝔼 ( X t+1 | X 1 , X 2 , ⋯ , X t ) = X t

也就是说,给定所有先前的观察,下一个观察的期望值等于最近的观察。这是定义某物的一种奇怪方式(遗憾的是这在这个领域非常常见),但让我们简要举几个例子,说明马丁格尔出现在其中的一些背景中:

  • 一个无偏随机游走是马丁格尔的一个例子。

  • 一个赌徒的财富是一个马丁格尔,如果赌徒玩的所有赌博游戏都是公平的:假设一个赌徒赢得 1 美元,如果硬币正面朝上,输掉 1 美元,如果硬币反面朝上。如果X n是赌徒在n次抛硬币后的财富,那么赌徒在下一次抛硬币后的条件期望财富,鉴于历史,等于他们目前的财富。

  • 在一个生态群落中,一群物种竞争有限资源,我们可以将任何特定物种的个体数量建模为随机过程。根据生物多样性和生物地理学统一中性理论,这个序列是一个马丁格尔。

当讨论马丁格尔时,停时出现。这是一个有趣的概念,捕捉到这样的想法:在任何特定时间 t,你可以查看到目前的序列,并判断是否是停止的时候。关于随机过程X 1 , X 2 , X 3 , . . .的停时是一个随机变量S(代表停止),具有这样的性质,即对于每个 t,事件S=t的发生或非发生仅取决于X 1 , X 2 , X 3 , . . . , X t的值。例如,停时随机变量模拟赌徒选择何时停止并离开赌桌的时间:这将取决于他之前的赢利和损失,但不取决于他尚未玩过的游戏的结果。

莱维过程

我们已经提到泊松过程和布朗运动(维纳过程)作为莱维过程最受欢迎的两个例子。这是一个具有独立、平稳增量的随机过程。它可以模拟一个粒子的运动,其连续的位移是随机的,在成对不相交的时间间隔内的位移是独立的,并且在相同长度的不同时间间隔内的位移具有相同的概率分布。在这个意义上,它是随机游走的连续时间模拟。

分支过程

一个分支过程会随机地分裂成分支。例如,它模拟了某种人口的演变(如细菌,或核反应堆中的中子),其中给定一代中的每个个体根据某个固定的概率分布产生下一代中的随机数量的个体,这个概率分布不会因个体而异。分支过程理论中的一个主要问题是最终灭绝的概率,即在有限代之后人口灭绝的概率。

马尔可夫链

现在让我们正式定义一个离散时间马尔可夫链,因为它是最重要的随机过程之一,并且在 AI 强化学习的背景下经常出现。为了定义一个马尔可夫链,我们需要:

  • 一个离散的可能状态集合S(有限或无限)。将其视为粒子或代理可以占据的状态集合。在每一步中,马尔可夫过程随机地从一个状态演变到另一个状态。

  • 一个初始分布规定了每个可能状态s t a t e i的概率ν i:最初,粒子在某个位置或代理处于某个状态的可能性有多大?

  • 转移概率p ij指定了粒子或代理从s t a t e i转移到s t a t e j的概率。注意对于每个状态i,和为 1 的总和p i1 + p i2 + ⋯ + p in = 1。此外,这个过程没有记忆,因为这个转移概率仅取决于s t a t e i和s t a t e j,而不是先前访问的状态。

现在,马尔可夫链是一个取值于S的随机过程X 0 , X 1 , ⋯,使得

P r o b ( X 0 = s t a t e i 0 , X 1 = s t a t e i 1 , ⋯ , X n = s t a t e i n ) = ν i 0 p i 0 i 1 p i 1 i 2 ⋯ p i n-1 i n

我们可以将所有的转移概率捆绑在一个方阵中(一个马尔可夫矩阵,每行都有非负数相加为 1),并乘以该矩阵。这个矩阵总结了从任何s t a t e i到s t a t e j的过渡概率在一步中。有趣的是,马尔可夫矩阵的幂也是马尔可夫的,例如这个矩阵的平方总结了从任何s t a t e i到s t a t e j的过渡概率在两步中,依此类推。

与马尔可夫链相关的一些基本概念是瞬态、再现性和不可约性。如果从一个状态开始,我们肯定最终会返回到它,则状态是再现的。如果状态不再现,则称为瞬态。如果马尔可夫链可以从任何状态移动到任何其他状态,则称为不可约。

最后,一个稳态概率向量,定义了可能状态上的概率分布,是一个不会在我们将其乘以转移矩阵时发生变化的向量。这直接与线性代数中的特征向量和对应的特征值为一的概念联系在一起。当我们知道的数学相互联系时,我们会感到非常愉快,这是一种让人上瘾的感觉,也是我们陷入这个领域的“爱恨”关系的原因。幸运的是,我们待的时间越长,这种感觉就会变得越来越“爱爱”。

伊藤引理

让我们再多谈一点数学。随机过程模拟随时间演变的随机数量。随机过程的函数也随时间随机演变。当确定性函数随时间演变时,下一个问题通常是,“多快?”为了回答这个问题,我们对时间求导,并围绕确定性函数的导数(和积分)发展微积分。链式法则至关重要,特别是对于训练机器学习模型。

伊藤引理是随机过程函数的链式法则的类比。它是链式法则的随机微积分对应物。我们用它来找到随时间变化的随机过程函数的微分。

马尔可夫决策过程和强化学习

在 AI 社区中,马尔可夫决策过程与以下内容相关:

  • 动态规划和 Richard Bellman:Bellman 在该领域发挥了重要作用,他的最优性条件被许多算法实现。

  • 强化学习:通过一系列与正面或负面奖励相关的行动(试错)找到最佳策略。代理在几种行动和转移状态之间有选择,其中转移概率取决于所选择的行动。

  • 深度强化学习:将强化学习与神经网络结合起来。在这里,神经网络将观察结果作为输入,并为代理可以采取的每个可能行动输出一个概率(概率分布)。然后代理根据估计的概率随机决定下一步行动。例如,如果代理有两个选择,向左转或向右转,神经网络为向左转输出 0.7,则代理将以 70%的概率向左转,以 30%的概率向右转。

强化学习有很大的潜力将我们推向智能的方向。智能代理需要在行动的回报不是立即产生而是由一系列连续采取的行动产生时做出理性决策。这是在不确定性下推理的典范。

强化学习的例子

强化学习的例子很多:自动驾驶汽车、推荐系统、家中的恒温器(每当接近目标温度并节省能源时获得正面奖励,当人们需要调整温度时获得负面奖励)、股票市场的自动投资(输入是股价,输出是买入或卖出每支股票的数量,奖励是货币收益或损失)。

也许最著名的深度强化学习成功例子是DeepMind 的 AlphaGo,这个 AI 代理在 2016 年击败了世界上最好的人类玩家在古老的中国围棋游戏中。以棋盘游戏的形式思考强化学习,比如国际象棋或围棋,是直观的,因为在每一步我们决定我们必须采取的行动序列,深知我们当前的决定会影响整个游戏的结果。我们最好在每一步都表现最佳。此外,在每一步,我们的最佳策略会演变,因为它还取决于我们对手的行动(他正在从他的角度解决完全相同的问题)。

我有点偏向于不包含游戏的例子,因为现在我的女儿沉迷于 PlayStation5。我更喜欢投资市场的例子:我们的理财顾问在每天都在变化的市场中操作,并且需要在每个时间步骤上做出买卖某些股票的决定,长期目标是最大化利润和最小化损失。市场环境是随机的,我们不知道其规则,但我们假设我们知道为了建模目的。现在让我们将我们的人类理财顾问换成一个 AI 代理,看看这个代理在不断变化的市场环境中每个时间步需要解决什么样的优化问题。

强化学习作为马尔可夫决策过程

让我们将强化学习在数学上表述为马尔可夫决策过程:我们的代理存在的环境是概率性的,由状态和这些状态之间的转移概率组成。这些转移概率取决于选择的动作。因此,从任何状态state →到另一个状态state → '的马尔可夫过程具有对在状态state →时采取的动作a →的显式依赖。

这里的主要假设是我们知道这个过程,这意味着我们知道环境的规则。换句话说,我们知道每个state →,state → '和动作a →的以下概率:

P r o b ( next state = state → ' | current state = state → , action taken = a → )

我们也知道奖励系统,即

P r o b ( next reward value | current state = state → , action taken = a → , next state = state → ' )

这个讨论现在属于动态规划的范畴:我们寻找导致最优值(最大奖励或最小损失)的最优策略(一系列良好的行动)。这个优化问题比我们迄今遇到的问题要复杂一些,因为它是导致最优值的一系列行动。因此,我们必须将问题分解为步骤,寻找每一步的行动,在未来多步中寻求最优奖励。贝尔曼最优方程恰好解决了这个问题,将其简化为在当前状态寻找仅一个最优行动(而不是一次性搜索所有行动),假设我们知道每一步要优化的问题。贝尔曼的巨大贡献是以下断言:当前状态的最优值等于采取一个最优行动后的平均奖励,加上这个行动可能导致的所有可能下一个状态的期望最优值

代理通过一个交互过程与其环境进行交互。它从一个初始状态开始,以及该状态可能的一组动作(在给定该状态的情况下采取行动的概率分布),然后迭代计算以下内容:

  1. 采取的下一个最优行动(将其转移到一个具有新一组可能行动的新状态)。这被称为策略迭代,优化目标是最大化未来奖励。

  2. 给出最优行动的预期值(奖励或损失)。这被称为值迭代

值函数将代理在其当前状态和之后采取的最优行动的预期未来奖励相加:

V a l u e ( state → , optimal sequence of actions ) = 𝔼 ( ∑ k γ k r e w a r d k ) .

折现因子 g a m m a 是介于 0 和 1 之间的数字。它有助于鼓励采取导致尽早而不是晚获得正奖励的行动。将这个因子放入优化问题中会调整随时间变化的奖励的重要性,对未来奖励给予较少的权重(如果g a m m a在 0 和 1 之间,则g a m m a k对于较大的k很小)。

让我们明确地在值函数中进行优化(我们正在选择在当前状态下最大化奖励的行动序列):

V a l u e ( s → ) = max actionsandstates 𝔼 ( ∑ k=0 ∞ γ k (reward) k | state → 0 = s → )

现在我们将这个问题分解,以确保代理的当前奖励明确且与其未来奖励分开:

V a l u e ( s → ) = max actionsandstates 𝔼 ( r e w a r d 0 + ∑ k=1 ∞ γ k (reward) k | state → 1 = s → ' ) .

最后,我们发现代理的当前状态的值函数取决于其当前奖励和未来状态的折现值函数:

V a l u e ( s → ) = max actionsandstates 𝔼 ( r e w a r d 0 + γ V a l u e ( s → ' ) ) .

上述陈述使我们能够通过迭代地解决我们的主要优化问题(向后推进时间)。现在,代理所要做的就是选择行动以达到下一个最佳状态。这个值函数的表达式是强大的贝尔曼方程贝尔曼最优性条件,它将原始优化问题分解为一系列更简单的优化问题的递归序列,在每个状态局部优化(找到V a l u e ( s → ' ) ),然后将结果放入下一个优化子问题(找到V a l u e ( s → ) )。奇迹在于,通过这种从期望的最终奖励向后推导到现在决定采取什么行动的方式,最终给出了每个状态的整体最优策略以及最优值函数。

在最优控制和非线性动力学的背景下的强化学习

在第十三章中关于偏微分方程,我们重新审视了在非线性动力学、最优控制和哈密顿雅可比贝尔曼偏微分方程的背景下的强化学习。与我们的代理在上面的讨论中与概率马尔可夫环境互动不同,强化学习的动态规划方法(导致哈密顿雅可比贝尔曼偏微分方程)是确定性的。

强化学习的 Python 库

最后,一个有用的库用于实现强化学习算法是 TF-Agents 库(由谷歌开源于 2018 年),这是一个基于 TensorFlow(Python)的强化学习库。

理论和严格的基础

严格的,或者数学上精确的概率论需要测度论。但为什么呢? 你可能会正当地抗议。毕竟,我们已经尽可能地避免了这个问题。

因为我们再也无法避免它了。

让我们写下这个但永远不要大声说出来:测度论让许多学生对继续深入研究数学产生了厌恶,主要是因为它的故事从来没有按照时间顺序讲述,以及它是如何以及为什么产生的。此外,测度论概率的许多工作都涉及证明某个随机变量存在(在某个样本空间、事件空间或σ代数上,以及对于该σ代数中的每个事件或集合的测度),好像把随机变量写下来并用它来模拟各种随机实体的存在不够。这一定是数学家和哲学家相处得如此融洽的原因。

我们已经以闪电般的速度飞过了本章中的许多概念(我的学生们总是指责我这样做),但我们需要重新开始,并给出:

  • 对概率和σ-代数的精确数学理解;

  • 随机变量和概率分布的精确数学定义,

  • 随机变量期望值的精确数学定义,以及它与积分的联系

  • 概率不等式的概述(控制不确定性)

  • 大数定律、中心极限定理和其他收敛定理的概述

好吧,这太雄心勃勃了。我们不能在一章的一节中提供关于严格概率论的完整课程。相反,我们将为此提出一个令人信服的理由,并以对基本思想的良好理解结束。

我们从非严格概率的两个主要局限性开始(除了它的数学对象具有无数不一致的名称、符号和模糊的定义之外):

哪些事件有概率?

给定一个样本空间(我们可以从中随机抽样的集合),任何子集都可以在其上定义概率吗?如果我们从实数线上均匀抽样数字,并问,我们选中一个有理数的概率是多少?代数数(某个整系数多项式方程的解)的概率是多少?或者从实数线的其他复杂子集中选中一个成员的概率是多少?

看看这些问题是如何慢慢将我们引入实数线上集合论的细节中,而这又直接将我们引入测度论:这个理论涉及我们可以测量实数线上哪些子集,以及哪些子集我们无法测量

为样本空间的子集定义概率开始听起来很像为那个集合定义一个测度,似乎只有可测的子集才能为它们定义概率。那么样本空间的其他不可测子集呢?对它们来说太糟糕了,我们无法为它们定义概率。再次强调,*Prob(A)*并不适用于样本空间的每个子集 A,而只适用于该空间的可测子集。因此,我们必须将所有可测子集聚集在一起,放弃其余部分,永远不要考虑它们或它们的数学,然后放松,因为这样我们就可以在一个所有我们聚集的事件(子集)都有概率(测度)定义的领域中行动。我们所使用的概率测度满足合理的性质,即它是[0,1]范围内的非负数,并且互补事件(子集)的概率之和为一。这整个过程揭示了实数及其子集的复杂性,更一般地,揭示了连续体和无限的奥秘。

严格的概率论帮助我们理解离散和连续空间的特性,这在简单的例子中得以体现,比如在离散集合上构建离散均匀分布与在给定区间上构建连续均匀分布。

我们能谈论更广泛范围的随机变量吗?

非严格概率的另一个限制,也就是避开我们刚刚描述的测度论的那种限制,是它允许的随机变量类型的限制。特别是,我们在离散和连续随机变量之间究竟应该划定何种界限?这个界限真的存在吗?那些既有离散又有连续特性的随机变量呢?举个简单的例子,假设一个随机变量的值由抛硬币决定:如果硬币正面朝上,则它服从泊松分布(离散),如果硬币反面朝上,则服从正态分布(连续)。这个新的随机变量在非严格意义上既不完全是离散的也不完全是连续的。那它是什么呢?严格的答案是:当我们定义了任何随机变量所依赖的基础后,离散和连续随机变量之间就没有区别了。这个基础是什么呢?是什么集合构成了样本空间?这个样本空间的哪些子集是可测的?概率测度是什么?随机变量的分布是什么?这是任何随机变量的共同基础,或者说起点。一旦我们明确了这个基础,那么离散、连续或者介于两者之间,就变成了一个小细节,就像回答:我们正在处理哪个集合(或者说集合的乘积)一样简单。

概率三元组(样本空间、σ代数、概率测度)

一切都始于一个概率三元组(实际上并非如此,但这是严谨开始的地方)。我们称之为概率测度空间,理解为整个样本空间的测度等于一。也就是说,样本空间的概率为一。我们现在感觉非常先进,交替使用概率和测度这两个词。测度提供的舒适感是,它将我们带回到确定性领域。抽样是随机的,但我们可以测量任何事件发生的可能性(即可测量)。

构成概率测度空间的三个对象(样本空间、σ代数、概率测度)是:

  • 样本空间:我们随机抽取样本的任意非空集合。

  • σ代数:样本空间的子集合的集合,代表允许的事件(我们可以谈论它们的概率的事件,因为它们是我们能够测量的唯一事件)。σ代数必须包含整个样本空间,在补集下是封闭的(意味着如果一个集合在σ代数中,那么它的补集也在其中),并且在可数并集下是封闭的(意味着σ代数的可数个子集的并集也是σ代数的成员)。从前两个性质和德摩根定律(与并集和交集的补集有关)推论出来的是,σ代数也是在可数交集下是封闭的。

  • 概率测度:介于零和一之间(包括零和一)的数字,与σ代数的每个子集相关联,满足我们与非严格概率相关的合理性质:

    1. Prob(样本空间)=1

    2. Prob(可数个两两不相交集合的并)=每个集合的概率的可数和。

这非常好,因为只要我们能够表达样本空间集合、σ代数和一个具有上述属性的函数,将σ代数的每个成员映射到其测度(概率),那么我们就可以在坚实的基础上开始建立理论,定义各种随机变量、它们的期望、方差、条件概率、和与积、序列的极限、随机过程、随机过程的函数的时间导数(伊藤积分微分学)等等。我们不会遇到哪种事件有为其定义概率(概率三元组的σ代数的所有成员),或者我们可以考虑哪种类型的随机变量(我们可以在概率三元组上严格定义的任何类型)的问题。

困难在哪里?

请注意,我们上面讨论的非严格概率的限制在涉及连续变量或样本空间在连续(不可数)时都会出现。如果我们的世界只是离散的,我们就不会遇到这些麻烦。当我们转向严格的概率,并尝试为离散样本空间构建概率三元组时,我们并不会遇到太多麻烦。挑战出现在连续世界中,即不可数样本空间。因为突然间我们必须在无限连续的深度上识别σ代数和相关的概率测度,这永远让人着迷。例如,即使我们想要为区间[0,1]上的连续均匀分布定义一个严格的概率三元组,这个挑战也会出现。

扩展定理来到我们的帮助,并允许我们构建复杂的概率三元组:不是在大型σ代数上定义概率测度,而是在一个更简单的子集合集合上构建它,一个半代数,然后定理允许我们自动将测度扩展到完整的σ代数。这个定理允许我们在[0,1]上构建勒贝格测度(这正是[0,1]上的连续均匀分布),乘积测度,多维勒贝格测度,有限和无限的抛硬币。

集合论、实分析和概率的世界已经很好地融合在一起。

随机变量、期望和积分

现在我们可以将概率三元组与样本空间关联起来,为样本空间的大量子集(所有相关 sigma 代数的成员)定义概率,我们可以严格地定义随机变量。正如我们从非严格概率中非常清楚的知道:随机变量为样本空间的每个元素分配一个数值。因此,如果我们将样本空间看作某个实验的所有可能随机结果(抛硬币得到正面和反面),那么随机变量为这些结果中的每一个分配一个数值。

为了建立在严格的基础上,我们必须定义随机变量Y如何与与样本空间相关的整个概率三元组交互。简短的答案是,它必须是一个从样本空间到实数线的可测函数,意味着集合Y -1 ( - ∞ , y )(Y -1从实数线映射回样本空间的子集),是 sigma 代数的成员,这意味着它有一个概率测度。

就像非严格概率中的随机变量在严格概率理论中实际上是一个可测函数(关于三元组),随机变量的期望𝔼 ( Y )实际上等同于随机变量(可测函数)关于概率测度的积分。我们写成:

𝔼 ( Y ) = ∫ Ω Y d P = ∫ Ω Y ( ω ) P r o b ( d ω )

理解期望公式中的积分符号

如果我们将随机变量的期望在离散设置中的含义理解为随机变量值乘以它假定该值的集合的概率的总和,那么很容易理解与概率测度相关的积分,比如上述公式中的积分:

𝔼 ( Y ) = ∑ i=1 n y i P ( ω ∈ Ω such that Y ( ω ) = y i )

现在将这个离散表达式与上面的连续积分进行比较。

我们严格地建立上述积分(期望)的方式与我们在测度论中建立勒贝格积分的方式完全相同:首先是简单随机变量,然后是非负随机变量,最后是一般随机变量。我们可以轻松地证明积分的基本性质,如线性和保序性。请注意,无论样本空间是离散的、连续的还是其他复杂的,只要我们有概率三元组来建立,上述积分就是有意义的(在我们为基本微积分里曼式积分所设想的更广泛的范围内)。一旦我们遇到勒贝格式积分,我们就不会再回头看了。

现在我们有了期望,我们可以像非严格概率理论一样精确地定义方差和协方差。

然后我们可以谈论独立性,以及重要性质,如如果 X 和 Y 是独立的,则 E(XY) = E(X)E(Y)和 Var(X + Y) = Var(X) + Var(Y)。

随机变量的分布和变量变换定理

随机变量X的分布是在实数线上定义的相应概率三元组( ℝ , ℬ , μ ),对于实数线上定义的波雷尔sigma 代数的每个子集B,我们有:

μ ( B ) = P ( X ∈ B ) = P ( X -1 ( B ) )

这完全由累积分布函数F X ( x ) = P ( X ≤ x ),决定X

假设我们有一个定义在实数线上的实值函数f。让X是一个概率三元组( Ω , s i g m a a l g e b r a , P )上的随机变量,其分布为μ。注意对于任意实数x,f(x)是一个实数,对于随机变量X,f(X)是一个随机变量。

变量变换定理表明,随机变量f(X)的期望值关于样本空间Ω上的概率测度P等于关于ℝ上的测度μ的函数f的期望值。让我们首先用期望的术语来表达这一点,然后用积分的术语来表达:

𝔼 P ( f ( X ) ) = 𝔼 μ ( f ) .∫ Ω f ( X ( ω ) ) P ( d ω ) = ∫ -∞ ∞ f ( t ) μ ( d t ) .

从上述变量变换定理中方便的一点是,我们可以在期望、积分和概率之间进行切换:让f是ℝ的一个可测子集的指示函数,那么上述公式给出:

∫ -∞ ∞ 1 B μ ( d t ) = μ ( B ) = P ( X ∈ B ) .

严格概率论的下一步

严格概率论中的下一步是证明著名的不等式(马尔可夫、切比雪夫、柯西-施瓦茨、延森)引入随机变量的和积,大数定律和中心极限定理。然后我们转向随机变量序列和极限定理。

极限定理

如果我们有一个收敛到某个极限随机变量的随机变量序列,那么序列的期望是否会收敛到极限的期望?用积分语言来说,我们什么时候可以交换极限和积分?

这是我们证明单调收敛、有界收敛、Fatou 引理、支配收敛和一致可积收敛定理时使用的。

最后我们考虑双重或更高的积分,以及何时可以翻转积分的条件。 Fubini 定理回答了这个问题,我们可以应用它来给出独立随机变量之和的分布的卷积公式。

神经网络的普适性定理。

严格的测度论(概率论)帮助我们证明神经网络的定理,这是数学的一个新兴子领域,旨在为许多经验性人工智能成功提供理论基础。

神经网络的普适性定理是一个起点。我们在本书中多次提到它。以下是陈述:

对于紧凑集 K 上的任何连续函数 f,存在一个只有一个隐藏层的前馈神经网络,可以在 K 上均匀逼近 f,误差小于 K 上的任意ϵ > 0。

这个网页有一个简单易懂的证明。

总结和展望

在本章中,我们概述了对人工智能、机器学习和数据科学重要的概率概念。我们快速浏览了诸如因果建模、悖论、大型随机矩阵、随机过程和强化学习在人工智能中的主题。

通常当我们学习概率时,我们会陷入关于定义和围绕不确定性的整体哲学的频率主义客观主义立场。以下是对每个观点的简洁描述:

  • 频率主义的立场是概率只能来自实验和观察重复试验结果。

  • 客观主义的立场是概率是宇宙的真实方面:一种真实的倾向或自然倾向以特定方式行为。例如,公平硬币翻转为正面的倾向百分之五十是公平硬币本身的固有属性。

然后频率主义者只是试图通过实验来测量这些自然倾向。严格的概率论统一了概率的不同观点。我们迅速介绍了严格的概率论,并建立了它实质上与实分析中的测度论相同。我们以神经网络的普适逼近定理结束。

我们以Yann LeCun的一条完美贴切的推文结束这一章,这条推文碰到了我们在本章中涵盖的每个主题:

我相信我们需要找到新的概念,使机器能够:

  • 通过像婴儿一样观察来了解世界是如何运作的。

  • 学会通过采取行动来预测如何影响世界。

  • 学习允许在抽象表示空间中进行长期预测的分层表示。

  • 妥善处理世界并非完全可预测的事实。

  • 使代理能够预测行动序列的影响,从而能够推理和规划,使机器能够分层规划,将复杂任务分解为子任务。

  • 所有这些都与基于梯度的学习兼容。

第十二章:数学逻辑

人类会打破规则……

在人工智能领域的历史上,基于逻辑的代理人出现在基于机器学习和神经网络的代理人之前。我们之所以在逻辑之前讨论了机器学习、神经网络、概率推理、图形表示和运算研究,是因为我们希望将所有这些内容融入到一个关于代理人推理的叙事中,而不是将逻辑看作是古老的,神经网络看作是现代的。我们希望将最近的进展视为增强逻辑人工智能代理人表示和推理世界的方式。一个好的思考方式类似于启蒙:一个 AI 代理人过去使用手工编码的知识库和规则来进行推理和决策,然后突然之间它得到启蒙,变得更具推理工具、网络和神经元,使其能够扩展其知识库和推理方法。这样,它就具有了更多的表达能力,可以应对更复杂和不确定的情况。此外,将所有工具结合在一起将使代理人有时可以打破更严格逻辑框架的规则,根据情况采用更灵活的规则,就像人类一样。打破、弯曲甚至改变规则是人类独有的特征。

单词逻辑的字典含义为本章设定了基调,并证明了其进展。

逻辑

组织用于合理思考和推理的规则和过程的框架。这是一个奠定了进行推理和推断的有效性原则的框架。

上述定义中需要注意的最重要的词是框架推理原则。逻辑系统在一个代理人内部编码了指导可靠推理和正确证明的原则。设计能够收集知识、逻辑推理的代理人,使用一个灵活的逻辑系统,适应他们存在的环境中的不确定性,并基于这种逻辑推理进行推断和决策,是人工智能的核心。

我们讨论了我们可以编程到代理人中的各种数学逻辑系统。目标是赋予 AI 代理人能力,使其能够进行适当的推理。这些逻辑框架需要知识库来配合不同大小的推理规则。它们还具有不同程度的表达和演绎能力。

各种逻辑框架

在本章中我们将重点介绍的各种逻辑框架(命题、一阶、时间、概率和模糊),我们将回答两个关于它们在代理人中如何运作的问题:

  1. 代理人的世界中存在哪些对象?也就是说,代理人如何感知其世界的构成?

  2. 代理人如何感知对象的状态?也就是说,在特定的逻辑框架下,代理人可以为其世界中的每个对象分配什么值?

如果我们将我们的代理人比作一只蚂蚁及其体验世界的方式,就很容易理解:由于蚂蚁预先确定的感知框架和允许的移动方式,蚂蚁将世界,以及其曲率,体验为二维。如果蚂蚁得到增强并赋予更具表现力的感知框架和允许的移动方式(例如翅膀),那么它将体验到三维世界。

命题逻辑

  • 代理人的世界中存在哪些对象?

简单或复杂的陈述,称为命题,因此称为命题逻辑。

  • 代理人如何感知对象的状态?

真(1),假(0),或未知。命题逻辑也被称为布尔逻辑,因为其中的对象只能有两种状态。命题逻辑中的悖论是指无法分类为真或假的陈述,根据逻辑框架的真值表

以下是陈述及其状态的示例:

  • 正在下雨(可以是真也可以是假)

  • 埃菲尔铁塔在巴黎(始终为真)

  • 公园里有可疑活动(可以是真也可以是假)

  • 这句话是假的(悖论)

  • 我快乐 我悲伤(始终为假,除非你问我的丈夫)

  • 我快乐 我悲伤(始终为真)

  • 如果分数是 13,那么学生就不及格(真假取决于不及格的阈值,因此我们需要在知识库中添加一个陈述,说所有分数低于 16 的学生都不及格,并将其值设为真)。

  • 1+2 等于 2+1(在具有算术规则的代理中始终为真)。

  • 巴黎浪漫(在命题逻辑中,这必须是真或假,但在模糊逻辑中,它可以在零到一的范围内取值,例如 0.8,这更符合我们感知世界的方式,以一个范围而不是绝对值。当然,如果我在编程一个代理并且受限于命题逻辑,我会为这个陈述分配真值,但是一个讨厌巴黎的人会分配假值。哦,好吧)。

命题逻辑世界中的对象是简单陈述和复杂陈述。我们可以使用五个允许的运算符从简单陈述中形成复杂陈述:非(否定);和;或;蕴含(与如果那样相同);等同于(与如果且仅如果相同)。

我们还有五条规则来确定一个陈述是真还是假:

  1. 如果一个陈述的否定为真,那么该陈述为假。

  2. s t a t e m e n t 1 s t a t e m e n t 2 为真,只有当s t a t e m e n t 1 和s t a t e m e n t 2 都为真时才为真。

  3. 如果s t a t e m e n t 1 s t a t e m e n t 2 为真,那么只有当s t a t e m e n t 1 或s t a t e m e n t 2 为真时,该语句为真(或者两者都为真)。

  4. s t a t e m e n t 1 implies s t a t e m e n t 2 是真的,除非当 s t a t e m e n t 1 为真且 s t a t e m e n t 2 为假时。

  5. s t a t e m e n t 1 equivalent to s t a t e m e n t 2 当且仅当 s t a t e m e n t 1 和 s t a t e m e n t 2 都为真或都为假。

我们可以通过一个真值表总结上述规则,考虑到 s t a t e m e n t 1 和 s t a t e m e n t 2 的状态以及它们的组合使用五个允许的运算符。在下面的真值表中,我们使用 S 1 代表 s t a t e m e n t 1,使用 S 2 代表 s t a t e m e n t 2 以节省空间:

S 1S 2not S 1S 1 and S 2S 1 or S 2S 1 implies S 2S 1 equivalent to S 2
FFTFFTT
FTTFTTF
TFFFTFF
TTFTTTT

我们可以通过简单的递归评估使用上述表格计算任何复杂语句的真值。例如,如果我们处于一个 S 1 为真,S 2 为假,且 S 3 为真的世界中,那么该语句:

S 1 ( S 2 S 3 ) ⟺ F (F T) = F T = F。

为了能够使用命题逻辑推理和证明定理,建立逻辑等价是有帮助的,意味着具有完全相同真值表的陈述,因此它们可以在推理过程中相互替换。以下是一些逻辑等价的示例:

  • 与的交换律: S 1 S 2 ⟺ S 2 S 1 。

  • 或的交换律: S 1 S 2 ⟺ S 2 S 1 。

  • 双重否定消除:非(非 S 1 ) ⟺ S 1 。

  • 逆否命题: S 1 蕴含 S 2 ⟺ 非( S 2 ) 蕴含 非( S 1 ) 。

  • 蕴含消除: S 1 蕴含 S 2 ⟺ 非( S 1 ) S 2 。

  • 德摩根定律:非( S 1 S 2 ) ⟺ 非( S 1 ) 非( S 2 )。

  • 德摩根定律:非( S 1 S 2 ) ⟺ 非( S 1 ) 非( S 2 )。

让我们通过展示它们具有相同的真值表来证明 S 1 蕴含 S 2 ⟺ 非( S 1 ) S 2,因为这种等价对于一些人来说并不那么直观:

S 1not ( S 1 )S 2not( S 1 ) or S 2S 1 implies S 2
FTFTT
FTTTT
TFTTT
TFFFF

展示逻辑等价性有用的一个例子是反证法推理方式:为了证明陈述 S 1 意味着陈述 S 2 ,我们可以假设我们有 S 1 ,但同时我们没有 S 2 ,然后我们得出一个错误或荒谬的结论,这证明我们不能假设 S 1 而不得出 S 2 。我们可以使用命题逻辑等价性验证这种证明方式的有效性,即 S 1 意味着 S 2 :

S 1 意味着 S 2 = 真 ⟺

非( S 1 ) S 2 = 真(蕴含消除) ⟺

非(非( S 1 ) S 2 )= 非(真) ⟺

S 1 非( S 2 )= 假(德摩根定律和双重否定)。

我们赋予命题逻辑框架推理规则,这样我们就能够从一个陈述(简单或复杂)顺序推理到下一个,并达到所需的目标或正确证明一个陈述。以下是一些伴随命题逻辑的推理规则:

  • 如果 S 1 意味着 S 2 是真的,并且我们已知 S 1 ,那么我们可以推断 S 2 。

  • 如果 S 1 S 2 是真的,那么我们可以推断 S 1 。同样,我们也可以推断 S 2 。

  • 如果 S 1 等价于 S 2 ,那么我们可以推断( S 1 意味着 S 2 )( S 2 意味着 S 1 )

  • 相反,如果(S 1 蕴含 S 2 )(S 2 蕴含 S 1 )那么我们可以推断出(S 1 等价于 S 2 )。

最后强调命题逻辑不适用于大型环境,并且不能有效地捕捉普遍关系模式。然而,命题逻辑为一阶逻辑和高阶逻辑提供了基础,因为这些逻辑建立在命题逻辑的机制之上。

从少量公理到整个理论

上述推理规则是正确的:它们只允许我们证明真实陈述,即给定一个真实陈述和一个与之相符的推理规则,我们得到一个真实陈述。因此,正确推理规则提供的保证是它们不允许从真实陈述中推导出错误陈述。我们需要比这个保证稍微多一点。

当我们能够仅使用系统的知识库(公理)和推理规则推断所有可能的真实陈述时,逻辑框架是完备的。系统的完备性的概念非常重要:在所有数学系统中,如数论、概率论、集合论或欧几里得几何中,我们从一组公理开始(数论和数学分析的皮亚诺公理,概率论的概率公理),然后使用逻辑推理规则从这些公理中推导定理。在任何数学理论中的一个主要问题是公理和推理规则是否确保其完备性和一致性。

然而,没有一阶理论有足够的力量来唯一描述具有无限域的结构,比如自然数或实数线。可以在更强的逻辑中获得完全描述这两个结构的公理系统(即,范畴公理系统),比如二阶逻辑。

在代理中编码逻辑

在继续进行一阶逻辑之前,让我们回顾一下在具有命题逻辑的 AI 代理环境中学到的内容。以下过程很重要,对于更具表现力的逻辑来说也是一样的:

  • 我们在形式为真实陈述的初始知识库(公理)中编写。

  • 我们编写推理规则。

  • 代理感知其世界当前状态的某些陈述。

  • 代理可能有或没有目标陈述。

  • 代理使用推理规则推断新的陈述,并决定要做什么(移动到下一个房间,打开门,设置闹钟,等等)。

  • 代理系统的完备性(知识库和推理规则的结合)在这里很重要,因为它允许代理在足够的推理步骤中推导出任何可满足的目标陈述。

确定性和概率机器学习如何适应其中?

机器学习(包括)神经网络的前提是我们不将初始知识库编程到代理中,也不编写推理规则。相反,我们编写的是一种表示输入数据、期望输出和将输入映射到输出的假设函数的方法。然后代理通过优化目标函数(损失函数)来学习函数的参数。最后,代理使用学到的函数对新的输入数据进行推理。因此,在这种情况下,知识库和规则可以通过学习期间推理期间进行分离。在学习期间,知识库是数据和假设函数,目标是最小化损失,规则是优化过程。学习后,代理使用学到的函数进行推理。

如果我们将确定性假设函数替换为数据特征的联合概率分布,我们可以以完全相同的方式思考概率机器学习模型。一旦代理学会了它,就可以用于推理。例如,贝叶斯网络对于不确定知识的作用类似于命题逻辑对于确定知识的作用。

一阶逻辑

  • 代理的世界中存在哪些对象?

“陈述、对象和它们之间的关系。”

  • 代理如何感知对象的状态?

“真(1)、假(0)或未知。”

命题逻辑非常适合说明基于知识的代理如何工作,并解释某种逻辑的“语言”和推理规则的基本规则。然而,命题逻辑在能够表示的知识和推理方式方面存在局限。例如,在命题逻辑中,这样的陈述:

所有年龄超过十八岁的用户都可以看到这则广告。

可以表达为一个“蕴含”陈述(与“如果那么”相同),因为这种语言存在于命题逻辑框架中。这就是我们如何在命题逻辑中将上述陈述表达为推理的方式:

(年满十八岁的用户意味着看广告)并且(年满十八岁 = T)然后我们可以推断(看广告 = T)。

现在让我们考虑一个略有不同的陈述:

一些年满十八岁的用户点击广告。

突然之间,命题逻辑的语言不足以表达上述陈述中的“一些”数量!仅依赖于命题逻辑的代理将不得不将整个陈述存储在其知识库中,然后不知道如何从中推断出任何有用信息。也就是说,假设代理获得了用户确实年满十八岁的信息,它无法预测用户是否会点击广告。

我们需要一种语言(或逻辑框架),其中的词汇包括“存在”和“对于所有”,这样我们就可以写出类似以下的内容:

对于所有年满十八岁的用户,存在一部分点击广告的用户。

这两个额外的量词正是“一阶逻辑”框架提供的。这种词汇量的增加使我们能够更经济地存储知识库中的内容,因为我们能够将知识分解为对象和它们之间的关系。例如,与其存储:

所有年满十八岁的用户都看广告;

年满十八岁的一些用户点击广告;

一些年满十八岁的用户购买产品;

点击广告的一些用户购买了产品;

作为一个只有命题逻辑框架的代理的知识库中的三个独立陈述(我们仍然不知道如何从中推断出任何有用信息),我们可以在一阶逻辑中存储两个陈述:

对于所有年满十八岁的用户,看广告 = T;

对于所有看广告 = T 的用户,存在一部分点击广告的用户;

对于所有点击广告的用户,存在一部分购买产品的用户。

请注意,在命题逻辑和一阶逻辑中,仅凭上述陈述,我们将无法推断特定年满十八岁的用户是否会点击广告或购买产品,甚至无法推断这样做的用户的百分比,但至少在一阶逻辑中,我们有语言来更简洁地表达相同的知识,并且以一种能够进行一些有用推断的方式。一阶逻辑与命题逻辑最显著的特征是,在命题逻辑已有的基础语言上增加了诸如“存在”和“对于所有”之类的量词,这些量词已经存在于命题逻辑中的“非”、“和”、“或”、“蕴含”和“等价于”之上。这一小的增加打开了一个表达对象与其描述以及它们之间关系的大门:

命题逻辑和一阶逻辑的强大之处在于它们的推理规则独立于领域及其知识库或公理集。现在,为了为特定领域,如数学领域或电路工程,开发一个知识库,我们必须仔细研究该领域,选择词汇,然后制定支持所需推理的公理集。

对于所有存在之间的关系

对于所有存在通过否定相互连接。以下两个陈述是等价的:

  • 所有年满十八岁以上的用户看到广告。

  • 不存在一个年满十八岁以上的人不看广告。

在命题逻辑语言中,上述两个陈述翻译为:

  • 对于所有用户,使得用户>18 为真,看到广告为真。

  • 不存在这样的用户,使得用户>18 且看到广告是假的

这些是关系:

  • not(存在一个 x 使得 P 为真) ⟺ 对于所有 x,P 为假。

  • not(对于所有 x,P 为真) ⟺ 存在一个 x 使得 P 为假。

  • 存在一个 x 使得 P 为真 ⟺ 不是对所有 x,P 为假。

  • 对于所有 x,P 为真 ⟺ 不存在一个 x 使得 P 为假。

我们不能在不欣赏转向一阶逻辑所获得的表达能力的情况下离开这一部分。这种逻辑框架现在足以支持这样的断言和推理:

神经网络的普适逼近定理

粗略地说,普适逼近定理断言:对于所有连续函数,存在一个神经网络可以将函数近似到我们希望的程度。请注意,这并不告诉我们如何构建这样的网络,它只是断言其存在。尽管如此,这个定理足够强大,使我们对神经网络在各种应用中近似所有种类的输入到输出函数的成功感到不惊讶。

推断关系

父母和孩子之间具有相反的关系:如果 Sary 是 Hala 的孩子,则 Hala 是 Sary 的母亲。此外,关系是单向的:Sary 不能是 Hala 的母亲。在一阶逻辑中,我们可以分配两个指示关系的函数:母亲孩子,可以由HalaSary或任何其他母亲和孩子填充的变量,以及这些函数之间对所有输入变量成立的关系:

对于所有的 x,y,如果 mother(x,y)=T,则 mother(y,x)=F;

对于所有的 x,y,mother(x,y) ⟺ child(y,x)。

现在,如果我们给一个代理提供这些知识,并告诉它 Hala 是 Sary 的母亲,或者 mother(Hala, Sary)=T,那么它将能够回答类似以下的查询:

  • Hala 是 Sary 的母亲吗?T

  • Sary 是 Hala 的母亲吗?F

  • Sary 是 Hala 的孩子吗?T

  • Hala 是 Sary 的孩子吗?F

  • Laura 是 Joseph 的母亲吗?未知

请注意,在命题逻辑世界中,我们将不得不将每个陈述单独存储,这是极其低效的。

概率逻辑

  • 代理的世界中存在哪些对象?

陈述

  • 代理如何感知对象的状态?

一个介于 0 和 1 之间的概率值,表示一个陈述为真的可能性。

概率是一阶逻辑的扩展,允许我们量化对陈述真实性的不确定性。我们不是断言一个陈述是真还是假,而是为我们对该陈述真实性的信念程度分配一个介于零和一之间的分数。命题和一阶逻辑提供了一组推理规则,允许我们确定一些陈述的真实性,假设其他一些陈述为真。概率理论提供了一组推理规则,允许我们确定一个陈述在其他陈述的真实性可能性的基础上有多大可能是真的。

处理不确定性的这种扩展比一阶逻辑具有更具表现力的框架。概率公理允许我们扩展传统逻辑真值表和推理规则:例如,P(A)+P(not (A))=1:如果 A 为真,则 P(A)=1 且 P(not A)=0,这与关于陈述及其否定的一阶逻辑一致。

将概率理论视为一阶逻辑的自然扩展对于需要将事物连接在一起而不是将它们视为不同事物的思维是令人满意的。这样看待也自然地导致了关于数据的贝叶斯推理,因为我们在收集更多知识并做出更好推断时更新代理人的先验分布。这以最逻辑的方式将我们所有的主题联系在一起。

模糊逻辑

在代理人的世界中存在哪些对象?具有[0,1]之间真实程度的陈述。代理人如何感知对象的状态?已知的区间值。

命题和一阶逻辑的世界是黑白分明的,真或假。它们允许我们从真实陈述开始推断其他真实陈述。这种设置非常适合数学,其中一切都可以是对或错(真或假),或者适合具有非常明确边界的 SIMS 的视频游戏。在现实世界中,许多陈述可能是模糊的,无论它们是完全真(1)还是完全假(0),这意味着它们存在于真实度的尺度上,而不是在边缘上:巴黎浪漫她很快乐黑暗骑士电影很好模糊逻辑允许这样做,并为陈述分配 0 到 1 之间的值,而不是严格的 0 或严格的 1:

巴黎浪漫(0.8);她很快乐(0.6);黑暗骑士电影很好(0.9)。

在一个真假程度呈滑动尺度的模糊世界中如何进行推理?这绝对不像在真假世界中进行推理那样直截了当。例如,给定上述真值,陈述巴黎浪漫她很快乐有多真实?我们需要新的规则来分配这些值,并且我们需要了解上下文或领域知识。另一个选择是单词向量,我们在第七章中讨论过。这些向量在不同维度中携带单词的含义,因此我们可以计算代表单词巴黎的向量与代表浪漫点的向量之间的余弦相似度,并将其分配为巴黎浪漫的陈述的真值。

请注意,概率理论中的信念程度与模糊逻辑中的真实度尺度不同。在概率逻辑中,陈述本身是明确的。我们想要推断的是明确陈述为真的概率。概率理论不推理不完全真实或假的陈述:我们不计算巴黎浪漫的概率,而是计算随机询问巴黎是否浪漫的人会回答真或假的概率。

关于模糊逻辑的一个有趣之处在于,它将其他逻辑中存在的两个原则抛在一边:如果一个陈述是真的,那么它的否定就是假的原则,以及两个矛盾的陈述不能同时为真的原则。这实际上打开了不一致性和开放宇宙的大门。在某种程度上,模糊逻辑并不试图纠正模糊性,而是接受它并利用它来允许在边界不清晰的世界中运作。

时间逻辑

还有其他类型的特殊用途逻辑,其中某些对象,比如本节中的“时间”,受到特别关注,有自己的公理和推理规则,因为它们对需要表示的知识和对其进行推理至关重要。时间逻辑将时间依赖性以及关于时间依赖性的公理和推理规则置于其结构的前沿,而不是将包含时间信息的陈述添加到知识库中。在时间逻辑中,陈述或事实在某些时间点或时间间隔上是真实的,这些时间是有序的。

代理的世界中存在哪些对象?陈述、对象、关系、时间。代理如何感知对象的状态?真(1)、假(0)或未知。

在时间逻辑中,我们可以表示如下陈述:

  • 当时间是早上 7 点时,闹钟会响。

  • 每当向服务器发出请求时,最终会授予访问权限,但永远不会同时授予两个请求。

与人类自然语言的比较

我们在整章中讨论了能够表达人类自然语言似乎轻松做到的知识的逻辑系统。我刚刚用英语写了一本关于数学的整本书,而不是使用任何其他技术语言。我们是如何做到的?人类如何表示和扩展他们的知识库,自然语言使用什么规则来表示和推理,使其如此富有表现力?此外,使用的特定自然语言并不重要:任何多语言的说话者都知道思想,但不一定知道他们用来表达这种思想的特定语言。人们知道或想要表达的东西有一种内在的非语言表示。它是如何工作的,我们如何解锁它的秘密并将其传授给我们的机器?

与人类语言类似,如果我们用两种不同的形式逻辑来表示相同的知识,那么我们可以推断相同的事实(假设逻辑具有完整的推理规则)。唯一的区别在于哪种逻辑框架提供了更容易的推理路径。

也就是说,人类自然语言在许多情况下允许模糊性,并且不能在没有数学形式和所采用的形式逻辑的情况下做出绝对的数学断言。我不能要求一个没有 GPS 系统的人预测从 DC 到 NYC 的驾驶时间。

总结和展望

一个具有各种类型逻辑的 AI 代理可以表达关于世界的知识,对其进行推理,回答查询,并进行推断,这些都在这些逻辑的边界内是允许的。

我们讨论了各种逻辑框架,包括命题逻辑、一阶逻辑、概率逻辑、模糊逻辑和时间逻辑。

下一个自然的问题将是:代理的知识库应该包含什么内容?如何表示关于世界的事实?知识应该在什么框架中表示和推理?

  • 命题逻辑?

  • 一阶逻辑?

  • 用于推理计划的分层任务网络?

  • 用于处理不确定性推理的贝叶斯网络?

  • 因果图和因果推理,代理可以有选择地违反逻辑规则?

  • 用于随时间推理的马尔可夫模型?

  • 用于推理图像、声音或其他数据的深度神经网络?

另一个可能的下一步是深入研究我们讨论过的任何逻辑框架,学习它们的推理规则和现有的推理算法,以及它们的优势、劣势以及适用于哪种知识库。这些研究中的一个重要主题是调查提供完整证明系统的推理规则,意味着一个系统,其中公理或知识库以及规则允许证明所有可能的真陈述。这些规则包括命题逻辑的分辨推理规则和一阶逻辑的广义分辨推理规则,适用于特定类型的知识库。这些对于理论(证明数学定理)和技术(验证和合成)软件和硬件都很重要。最后,一些逻辑比其他逻辑更具表现力,意思是我们可以用更具表现力的逻辑表示的一些陈述,不能用较不具表现力的逻辑语言中的任何有限数量的陈述来表达。例如,高阶逻辑(我们在本章中没有讨论)比一阶逻辑(我们在本章中讨论过,足够强大以支持整个数学理论)更具表现力。

第十三章:人工智能和偏微分方程

《壮志凌云 2》(2022 年电影)中的第一场景展示了 Maverick(汤姆·克鲁斯)操纵一架实验军用飞机,并将其推向声速的 10 倍(10 马赫),然后在大约 10.2 马赫时失去稳定性。到目前为止,最快的非虚构有人飞行器可以达到 6.7 马赫(图 13-1)。无论是真实的速度还是虚拟的(尚未实现),看到物理学、数学和工程学共同将这些飞机放入空中,特别是它们壮观的空中机动,都是令人着迷的。在观看 Maverick 令人敬畏的空战和 10 马赫的场景时,会想起一些偏微分方程(PDEs):

250

图 13-1。有史以来最快的有人飞行器(图片来源或需要类似于这个的无版权图片)

波动传播的波动方程:想象声速、空气中声波的传播,以及由于空气温度和密度的变化而导致不同高度声速的变化。

Navier Stokes 方程用于流体动力学:想象流体流动、气流隧道和湍流。

燃烧的 G 方程:想象飞机发动机中的燃烧和飞机尾部喷出的火焰。

材料弹性方程:想象飞机机翼板、升力、机翼板的屈曲(在压缩下发生的应力平面外移动的过程图 13-2),由于负载引起,这反过来降低了机翼的承载能力。当承载能力低于设计极限时,故障就会发生。

250

图 13-2。飞机的屈曲(图片来源)。

PDE 模拟也会让人想起:想象一下飞行路径模拟,机组人员在计算机屏幕上实时观看 Maverick 的飞行过程并与他交谈。

清单还在继续。我们在这里声称我们之所以让飞机飞行是因为我们写下并解决了 PDE 吗?不是。航空博物馆讲述了莱特兄弟的故事、他们的实验以及航空工业的发展。科学和实验是相辅相成的。我们想要宣称的是,我们可以发明、改进和优化各种设计,因为有了微分方程和数学。

什么是偏微分方程?

PDE 是一个等式,意味着左边等于右边,涉及到一个多变量函数以及它的任何偏导数。函数关于某个变量的偏导数衡量了函数相对于该变量的变化率。普通微分方程(ODEs)是那些只涉及一个变量的函数的方程,比如只有时间、只有空间等(与多个变量相反)及其导数。动态系统是一个非常重要的 ODE,描述了我们关心的系统状态随时间的演变,比如一个粒子系统或商业环境中客户的状态。ODE 涉及系统状态的时间导数,动态规定为系统状态、系统物理参数和时间的函数。ODE 看起来像 dx →(t) dt = f ( x → ( t ) , a ( t ) , t ) 。我们将在本章多次讨论动态系统。大多数情况下,如果我们能够将 PDE 转化为 ODE 系统,或者甚至转化为动力系统,那么问题基本上就解决了。

自然没有给我们确定性函数,也没有给我们用来产生我们周围观察到的世界并能准确测量的联合概率分布。到目前为止,它一直保守这些秘密。然而,它确实给了我们一些方法来测量、评估或制定关于事物如何相对于彼此变化的法则,这正是偏微分方程所代表的。因为事物如何变化实际上就是导数。

解决偏微分方程的目标是撤销微分算子,以便我们可以恢复函数而不带有任何导数。因此,我们寻找偏微分方程代表的微分算子的精确或近似逆(或伪逆)。积分可以撤销导数,因此偏微分方程的解表示通常涉及一些核函数对 PDE 的输入数据(其参数、初始和/或边界条件)的积分。随着本章的发展,我们将详细阐述这一点。

人们通常将 ODE 和 PDE 分类为类型。我对此的看法是,除非我们恰好在个人工作中处理这些特殊的 ODE 或 PDE,并且这些的解对人类的未来有直接和立即的影响,否则我们不应该让自己困惑于分类。当你在本章中遇到某种类型,比如非线性抛物线或反向随机,接受这个名称然后直接理解我试图表达的观点。甚至不要尝试谷歌这些术语。这就像你谷歌你的症状,互联网告诉你明天就会死一样。自己小心。

用微分方程建模

微分方程模拟了现实世界中无数的现象,从空气湍流到星系的运动,再到纳米尺度材料的行为,再到金融工具的定价,再到与对手和多个玩家的游戏,再到人口流动和增长。典型的偏微分方程课程跳过了建模步骤,因此我们最终研究的偏微分方程似乎是突如其来的,但事实并非如此。偏微分方程的来源和分析解决它们一样重要。通常,偏微分方程表达了一些守恒定律,比如能量、质量、动量等与我们特定应用相关的守恒定律。许多偏微分方程是守恒陈述的表达,看起来像:

时间内数量的变化率=增益-损失

现在当我们有一个有界域时,偏微分方程在域的内部起作用,但我们需要伴随边界条件,告诉我们域的边界发生了什么。如果域是无界的,那么我们需要远场条件,告诉我们当x → ∞时发生了什么。我们使用极限符号来写这些条件。如果偏微分方程在时间上有导数,那么我们需要一些初始时间条件或结束时间条件。我们需要多少这些条件取决于偏微分方程的阶数。将这些视为我们需要解决多少方程以解决多少未知数。未知数是偏微分方程的积分常数。当我们解决偏微分方程时,我们寻求有关函数的信息,给出其导数的信息。为了消除这些导数并恢复函数,我们必须积分偏微分方程,沿途获得积分常数。我们需要边界和/或远场条件来解决这些常数。

不同尺度的模型

忠实模拟自然的现实模型需要考虑所有重要变量以及它们的相互作用,有时在不同尺度的空间和时间。编写数学模型的方程需要一些工作。一旦制定,它们就是优雅的,将大量信息压缩成几行方程。这些方程涉及函数、它们的导数和模型的参数,通常比制定方程更难解决。此外,如果两个模型描述不同尺度上相同的现象,比如一个在原子尺度上(快速摆动的分子)和另一个在更大尺度上,比如在微观或宏观尺度(我们观察到的尺度),那么这两个模型的方程看起来会非常不同,甚至可能依赖于不同科学领域的物理定律。例如,想象一下描述分子水平上气体运动(粒子速度、位置、作用于其上的力等)以及如何将其与在宏观尺度观察到的气态系统的热力学联系起来。或者想想原子如何结合形成晶体结构,以及这些结构如何转化为材料性质,比如导电性、渗透性、脆性等。自然的问题是,我们是否可以在不同尺度上成功地调和这样的模型?更准确地说,如果我们将一个模型的极限取到另一个模型的范围,我们会得到相同的结果吗?这些都是分析师要解决的问题类型。调和不同尺度模型验证了它们,并统一了数学和科学的不同领域。

偏微分方程的参数

我们为一个模型写下的偏微分方程通常涉及参数。这些参数与我们建模的物理系统的属性有关。例如,对于热方程

u t ( x → , t ) = α Δ u ( x → , t ) ,

参数α是扩散系数,这是一个物理常数,取决于扩散物质的性质和其扩散到的介质的性质。我们通常从实验获得的参考表中获取这些值。它们对工程目的非常重要。当我们的方程模拟现实时,我们必须使用从这些真实实验或观测数据中导出的参数值。但实验和观测数据通常存在噪声,缺失值,未解释的异常值,以及各种数学模型的困难。很多时候,我们甚至没有我们方程中的参数的实验值。实验可能很昂贵(想想大型强子对撞机)甚至不可能。因此,我们必须使用间接方式学习参数值,基于实验、观测和计算机模拟值的可访问组合的一些其他变量。从历史上看,许多这些参数值是手动调整的,以适应某些期望的结果,这是不好的!我们应该对进入模拟的参数值的选择有明确的理由。我们将看到机器学习如何帮助 PDEs 在从数据中学习参数值。

在 PDE 中改变一件事可能是一件大事

如果你在大学里上过偏微分方程(PDEs)课程,请回想一下你学过的最简单的方程,也许是在一个类似图 13-3 中的棒上的热扩散方程。如果你没有学过 PDEs,不要担心它的细节。热方程的公式是:

u t ( x , t ) = α Δ u ( x , t ) .

在这里,u ( x , t )表示棒上点x处和时间t处的温度,操作符Δ是x的二阶导数(所以Δ u ( x , t ) = u xx ( x , t )),因为棒只有一维,如果忽略其厚度。在更高维度中,操作符Δ是每个维度中二阶导数的总和。

现在让我们将域从一个棒改变成一个奇怪形状的板:不是正方形、圆形或椭圆形,而是一些不规则的形状,例如,比较图 13-3 和图 13-4。我们在初级 PDE 课程中学到的适用于棒的真实解的公式,在奇怪的板上不再适用。情况变得更糟。我们不仅通过改变域失去了对解析解的访问:当我们尝试用新域数值解微分方程时,新的几何形状突然使事情复杂化。现在我们必须找到一个离散网格,准确地描绘出新域的形状及其所有细节,然后我们必须在该网格上计算一个数值解,使其满足域内的方程,并满足沿着看起来奇怪的边界的边界条件。

A

图 13-3。在棒上研究热扩散对于那些学过 PDEs 的人来说是容易的,无论是在分析上还是在数值上(图片来源)。

B

图 13-4。研究不规则几何形状上的热扩散并不容易(图片来源)。

这在 PDE 中很正常:改变一点微小的东西,突然我们学到的所有数学方法可能就不再适用了。这些变化包括:

  • 改变域的形状,

  • 改变边界条件的类型,

  • 在系数中引入空间或时间依赖性(参数),

  • 引入非线性,

  • 引入更多导数项(高阶),等等

  • 引入更多变量(更高维度)

这令人沮丧的一面使许多学生不愿专攻 PDE(没有人想成为只擅长一种方程的专家,这种方程可能与现实建模相去甚远)。我们不想被打消积极性。我们想看到全局图景。自然现象非常多样化,因此我们必须接受 PDE 及其解决方法的变化作为我们理解和预测自然的探索的一部分。此外,PDE 是一个庞大而古老的领域。已经在统一许多线性和非线性偏微分方程家族的方法上取得了许多进展,并且在这一过程中发现了许多强大的分析。现状是 PDE 是一个非常有用的领域,它没有,也可能永远不会有,一个统一的理论。

一般来说,非线性 PDE 比线性 PDE 更困难,高阶 PDE 比低阶 PDE 更困难,高维 PDE 比低维 PDE 更困难,PDE 系统比单个 PDE 更困难,我们无法为大多数 PDE 编写显式解的公式,许多 PDE 只在形式下满足。许多 PDE 的解随时间演变会产生奇点(想想波动方程和激波)。开发 PDE 理论的数学家花费时间证明 PDE 的解的存在,并试图理解这些解的正则性,即它们在实际拥有涉及 PDE 的导数方面有多好。这些使用了许多高级微积分方法,寻找积分的估计(上下界的不等式)。

AI 可以介入吗?

如果我们有方法可以考虑 PDE 的变化、域的几何形状、边界条件和参数范围的变化,类似于实际的物理问题,那不是很棒吗?许多行业和科学领域都将目光投向 AI 和深度学习,以解决长期存在的问题或为其带来新的启示。过去十年在计算非常高维问题的解决方案方面取得的巨大进步有潜力改变许多被维度诅咒束缚的领域。这样的转变将对 PDE 和整个人类产生深远影响,因为 PDE 及其解锁的大量科学。

在本章的其余部分,我们强调微分方程社区在传统方法中遇到的障碍,以及如何将真实和嘈杂的数据拟合到他们的模型中。然后我们说明了机器学习如何帮助绕过或减轻这些困难。我们还区分了两个问题:

  1. AI 对 PDE 有什么作用?

  2. PDEs 对 AI 有什么作用?

在为 PDE 提供服务时,我们需要确保机器学习的标志性特征——训练函数、损失函数和优化设置清晰,以及监督学习的标签或目标。将 PDE 的成熟领域融入到机器学习环境中并不是非常直接。理想情况下,我们需要建立从 PDE 到其解决方案的映射。这需要一些暂停和思考。

数值解非常有价值

编写描述自然现象的数学模型,以方程描述涉及变量如何相互作用,只是第一步。我们需要解决这些方程。

分析解比数值解更难,因为模型越接近自然,方程就越复杂。即使分析方法无法为解提供公式,它们仍然为解的重要属性提供了宝贵的见解。数值解比分析解更容易,因为它们涉及将连续方程离散化,将我们从连续函数的领域转移到离散数字的领域,或者从无限维函数空间转移到有限维向量空间(线性代数),这是我们的计算机建立的。数值解为模型的真实分析解提供了宝贵的见解,并且在可用时易于与实验观察进行测试。它们也易于调整,因此对实验设计是很好的辅助。

我们可以在任何尺度上设计数值解,但当我们尝试实施和计算我们的数值方案时,维度的诅咒会困扰我们。在许多情况下,为了模拟系统自然演化的一秒钟,需要大量的计算能力,因此必须进行大量的维度降低和简化假设,这使我们离真实解的良好近似更远。令人沮丧的是,这已经成为常态而非例外。

连续函数 vs 离散函数

函数f ( x ) = x 2 - 3在整个实数线上是连续的( - ∞ , ∞ )。当我们为机器处理的数值方案离散化它时,首先,定义域不能再是整个实数线,因为机器尚不能概念化无限域。因此,我们的第一个近似是将定义域大幅缩减到某个有限区间[-N,N],其中 N 是一个大数。我们的第二个近似是将这个有限区间离散化,再次大幅减少,从一个连续区间[-N,N]到仅有限的一组点。如果我们使用许多点,那么我们的网格将更加精细,我们的近似将更好,但计算成本会增加。假设我们只使用 6 个点来离散化区间[-5,5]:-5,-3,-1,1,3,5,那么我们的连续函数将被减少为一个只有六个条目的向量:

f ( x ) = x 2 - 3 is continuous on ( - ∞ , ∞ ) discretef → = (-5) 2 - 3 (-3) 2 - 3 (-1) 2 - 3 1 2 - 3 3 2 - 3 5 2 - 3 = 22 6 - 2 - 2 6 22

图 13-5 显示了连续函数及其仅有六个点的极不充分的近似。

250

图 13-5。将连续函数离散化为仅有六个点的向量。我们失去了点之间所有连续的丰富信息。

我们仍然需要离散化导数

我们可以通过在一个区间中选择点来离散化一个函数f(x),就像我们之前所做的那样。微分方程包含函数的导数,比如f x , Δ f,而不仅仅是函数。因此,我们必须离散化导数,或者找到其他方法将问题从函数空间(如连续空间)降维到向量空间(这样我们就可以使用线性代数和计算机进行计算)。有限差分和有限元是两种流行的微分方程离散化方法。我们将很快介绍它们,以及基于随机漫步的概率蒙特卡洛方法。

数值解的简单性之一是,当我们离散化时,我们进行了近似,将无限连续减少为有限的点集,失去了在有限点集之间的所有无限详细信息。也就是说,我们牺牲了高分辨率。对于某些方程,有分析方法可以帮助我们准确量化通过离散化失去了多少信息,并通过将离散网格的大小趋近于零的极限来帮助我们回到准确的分析解。

离散连续函数及涉及它们的方程具有优势:易于访问。我们可以教高中生如何数值解描述杆中热量扩散的热方程(本章后面会讨论),但在他们完成大学微积分和线性代数课程之前,我们无法教他们如何解析解决它。这就是为什么我们必须在孩子很小的时候教他们如何对现实生活中的问题建模和计算数值解。数值解的简单性和计算的力量有助于解决各种人类问题,这应该成为我们教育体系的优先事项。我怀疑自然并不希望我们在计算周围世界如何运作之前建立和解开疯狂复杂的数学理论。我也怀疑自然并不像某些数学理论那样复杂(尽管它们仍然以自身的方式有趣,即使只是作为逻辑和推理规则能引导我们走多远的练习)。

我的博士论文中的 PDE 主题

我的博士论文故事展示了数学理论和数值方法之间的巨大差异。这也是本章某些主题的良好原型。在我的博士论文中,我研究了一个数学模型,描述了原子在薄晶体表面的阶梯状表面上不同级别之间扩散和跳跃的方式。这对材料科学界和设计我们电子设备中所需微型部件的工程师很有用。随着时间的推移,晶体的形状会因其表面上原子的移动而发生变化。最终,晶体会放松成某种稳定的形状。

立即离散化并进行计算机模拟

当我写下这些方程时,我能够进行计算机模拟,展示晶体形状随时间的演变。这是我研究过的偏微分方程之一(并不是你应该关心它或知道其中的函数指的是什么):

u t ( h , t ) = - u 2 (u 3 ) hhhh where h ∈ [ 0 , 1 ] , t ∈ 0 , ∞ )

对于训练有素的人来说,这是一个高度非线性的四阶方程:未知函数u既平方又立方。它的立方体在空间中出现了四个导数,我们可以将其视为距我们想要评估的函数有四个度的距离。[图 13-6 展示了我在空间中使用有限差分(我们将很快讨论有限差分)对我的 PDE 进行离散化,以及其边界条件(在点 0 和 1 处的函数值)。

250

图 13-6。离散微分方程及其连续模拟。

通常,方程非线性程度越高,它就越不愿意服从标准的分析技术。我仍然需要进行数学分析,并证明数值模拟显示的形状确实是方程要求解决方案采取的方式,也就是说,它是分析解,也是自然在可能的其他解决方案中选择的方式。我不得不花费接下来的两年时间只做这件事。我得出的结论是,对于一个物理上不现实的一维晶体*,我在一个微小的案例中得出了一个微小的证明!我必须将我的方程减少到只有一个维度,才能够对其进行任何数学分析。

维度的诅咒

一个始终存在的主题是问题的维度性:即使我进行了少于一个下午的数值模拟,我也只能对一维域上的方程进行模拟。当我尝试进行模拟以建模放置在平面上的现实薄膜实验晶体时,也就是说,当我必须将二维表面离散化而不是一维段时,离散点的数量从一维段上的 100 个跳到了二维表面上的 100,000 个。当时我的电脑无法数值求解在一维情况下只需几秒钟的相同方程。诚然,我当时还不够复杂,无法在大学服务器上进行计算或使用并行计算(我不知道当时是否已经发明了分布式云计算)。这就是维度的诅咒。随着维度数量的增加,计算开销呈指数级增长。现在让我们想想那些在开始时就具有高维度域的方程,比如用于量子粒子系统的薛定谔方程,用于定价金融工具的 Black Scholes 方程,或者用于动态规划的 Hamilton-Jacobi-Bellman 方程,该方程模拟多人游戏或资源分配问题。那么想象一下维度的诅咒的程度。

问题的几何形状

我们之前提到过但值得重复的另一个主题是:域的形状很重要,无论是对于分析还是数值计算。在我不切实际的一维情况下,我使用了一个段作为方程的定义域。在二维情况下,我有更多选择:矩形(具有规则网格的优势),圆形(具有径向对称性的优势),或者任何其他通常没有名称的现实非规则形状。对于分析来说,矩形和圆形域是最容易的(对于我的特定方程来说不是,但对于其他更简单的方程如线性方程来说是)。对于模拟,这些也很好。但是当域的形状不规则时,这是大多数现实事物的情况,如果我们想忠实地捕捉域,我们需要在不规则部分放置更多的离散点。维度的诅咒再次显现:更多的点意味着更长的向量和更大的输入矩阵用于计算。

模拟你关心的事物

结束我的博士故事,直到我完成学位后的十年,我才看到了一个真实的薄膜金晶体,就像我当时正在研究的那个,当时我的朋友在她的实验室里向我展示了一个薄膜金晶体。回想起来,也许我应该从那里开始,通过看到我试图模拟的真实生活中的东西。我的现在的优先事项有所不同,我总是首先询问自己是否关心我试图模拟的东西,我选择工作的模型有多接近现实,以及思考分析解是否值得为这个特定应用付出时间和精力。

离散化和维度的诅咒

研究偏微分方程的数学家喜欢连续世界,但机器喜欢离散世界。数学家喜欢分析函数,但机器喜欢计算函数。为了调和这两者,使机器能够帮助数学家,反之亦然,我们可以离散化我们的连续方程。如何做到?首先,我们离散化方程的定义域,创建一个离散网格。我们选择网格的类型(规则或不规则)以及精细程度。然后我们离散化微分方程本身,使用四种流行的方法之一:

  • 有限差分:确定性,适用于离散化时间,一维或相对规则的空间几何。

  • 有限元:确定性,适用于离散化更复杂的空间几何结构,也适用于随时间变化的空间几何结构。

  • 变分或能量方法:这类似于有限元,但适用于一组更窄的偏微分方程。它们应该具有一个“变分原理”或一个“能量形式”,即,PDE 本身应该等价于“∇E(u)= 0”对于某个能量函数 E(u)(将函数映射到实数线)。我能获得博士学位的原因是我纯粹凭运气为我的 PDE 发现了这样一个能量函数。就像微积分函数的最小值出现在“∇f(x→)= 0”的点处一样,能量函数的最小值出现在“∇E(u)= 0”的“函数”处,但当然我们需要定义如何对“泛函”进行导数运算。

  • 蒙特卡洛方法:概率性的,从离散化 PDE 开始,然后利用这一点设计一个适当的随机游走方案,使我们能够在域中的某一点“聚合”解决方案。

这些方法中的“有限”一词强调了这个过程将我们从函数的连续无限维空间转移到有限维向量空间。

如果我们用于离散化的网格太细,它会捕捉更多的分辨率,但我们最终会得到高维向量和矩阵。记住这种维度的诅咒,以及以下内容:神经网络的流行之所以飙升是因为它们似乎有一种神奇的能力来克服维度的诅咒。我们很快会看到这一点。

有限差分

我们使用有限差分来数值逼近偏微分方程中出现的函数的导数。例如,粒子的速度是其位置矢量在时间上的导数,粒子的加速度是其位置矢量在时间上的两个导数。

在有限差分逼近中,我们用域中离散点处的函数值的线性组合替换导数。回想一下,一个导数测量函数的变化率。两个导数测量凹度。更高阶导数测量更多一些科学家偶尔使用的东西。函数在一个点处的导数与其在该点附近的值如何相互比较之间的联系是相当直观的。这些逼近的数学理由依赖于微积分中的泰勒定理:

f ( x ) = f ( x i ) + f ' ( x i ) ( x - x i ) + f '' (x i ) 2 ( x - x i 2 ) + f (3) (x i ) 3! (x-x i ) 3 + ⋯ + f (n) (x i ) n! (x-x i ) n + error term ,

其中误差项取决于下一个阶导数在我们尝试使用多项式逼近的点附近的“xi”处的“f(n+1)(xi)”有多好。泰勒定理近似了一个足够好的函数在一个点附近的多项式,其系数由该点处函数的导数确定。函数在一个点处具有的导数越多,它就越好,它在该点附近的行为就越像一个多项式。

现在让我们离散化一个一维区间[a,b],然后写出定义在该区间上的函数f(x)的导数的有限差分逼近。我们可以使用 n+1 个等间距点来离散化[a,b],因此网格大小为 h = (b-a)/n。我们现在可以在任何这些离散点上评估f。如果我们关心某点附近的值 x_i,我们定义 f_{i+1} = f(x_i + h),f_{i+2} = f(x_i + 2h),f_{i-1} = f(x_i - h),等等。在接下来的内容中,h 很小,因此一个 O(h²)方法(或更高阶的 h)比一个 O(h)方法更准确:

  1. 一阶导数的 O(h)精度的前向差分逼近(使用 2 个点):(添加图片)

    f ' ( x i ) ≈ f i+1 -f i h

  2. 一阶导数的 O(h)精度的后向差分逼近(使用 2 个点):(添加图片)

    f ' ( x i ) ≈ f i -f i-1 h

  3. 中心差分逼近的 O(h²)精度,适用于高达四阶的导数(使用 2 个点,平均前向和后向差分):(添加图片)

    f ' ( x i ) ≈ f i+1 -f i-1 2h f '' ( x i ) ≈ f i+1 -2f i +f i-1 h 2 f ''' ( x i ) ≈ f i+2 -2f i+1 +2f i-1 -f i-2 2h 3 f (4) ( x i ) ≈ f i+2 -4f i+1 +6f i -4f i-1 +f i-2 h 4

  4. 中心差分逼近的 O(h⁴)精度,适用于高达四阶的导数:

    f ' ( x i ) ≈ -f i+2 +8f i+1 -8f i-1 +f i-2 12h f '' ( x i ) ≈ -f i+2 +16f i+1 -30f i +16f i-1 -f i-2 12h 2 f ''' ( x i ) ≈ -f i+3 +8f i+2 -13f i+1 +13f i-1 -8f i-2 +f i-3 8h 3 f (4) ( x i ) ≈ -f i+3 +12f i+2 -39f i+1 +56f i -39f i-1 +12f i-2 -f i-3 6h 4

O ( h k ) 是什么意思? 这是h的数值逼近的阶数。当我们用数值逼近替换导数时,就会产生误差。 O ( h k ) 告诉我们我们产生了多少误差。显然,这取决于网格h的大小。误差应该随着网格更细而变小。为了推导这种误差界限,我们使用 f(x+h), f(x-h), f(x+2h), f(x-2h)等的泰勒展开,以及这些的线性组合来确定所需导数的逼近和我们的有限差分逼近的h阶。为了使用泰勒展开,我们假设我们正在处理的函数在我们评估它们的点上确实具有所需数量的导数。这意味着我们假设我们的函数足够好,以允许这些导数评估。如果函数在这些点附近有奇点,那么我们需要找到解决方法,比如在奇点附近使用更细的网格。

例子:让我们在[0,1]上解决y '' ( x ) = 1,带有边界条件 y(0)=-1 和 y(1)=0。这是一维有界域上的二阶线性常微分方程。

这个例子很简单,因为解析解非常容易。我们只需对方程积分两次,恢复函数而不带其导数y ( x ) = 0 . 5 x 2 + c 1 x + c 2,其中 c 是积分常数。我们将两个边界条件代入以找到 c,并获得解析解y ( x ) = 0 . 5 x 2 + 0 . 5 x - 1。然而,这个例子的重点是展示如何使用有限差分来计算数值解,而不是解析解,因为对于许多其他微分方程,解析解是不可用的,所以我们最好擅长这个。我们首先离散化域[0,1]。我们可以使用任意多的点。点数越多,我们需要处理的维度就越高,但分辨率会更好。我们只使用八个点,因此网格大小为h=1/7(图 13-7)。我们的连续[0,1]区间现在缩减为八个点(0,1/7,2/7,3/7,4/7,5/7,6/7,1)。

250

图 13-7。使用八个离散点离散化单位区间,这等同于七个间隔。步长(或网格大小)为h=1/7

接下来,我们离散化微分方程。我们可以使用任何有限差分方案来离散化二阶导数。让我们选择O ( h 2 ) 中心差分,因此离散化的微分方程变为:

y i+1 -2y i +y i-1 h 2 = 1 for i = 1 , 2 , 3 , 4 , 5 , 6 .

请注意,微分方程仅在域的内部有效,这就是为什么我们在写其离散模拟时不包括 i=0 和 i=7 的原因。我们从边界条件中得到 i=0 和 i=7 处的值:y 0 = - 1 和 y 7 = 0。现在,我们有一个六个未知数的六个方程的系统,y 1 , y 2 , y 3 , y 4 , y 5 , y 6:

y 2 - 2 y 1 - 1 = 1 / 49 y 3 - 2 y 2 + y 1 = 1 / 49 y 4 - 2 y 3 + y 2 = 1 / 49 y 5 - 2 y 4 + y 3 = 1 / 49 y 6 - 2 y 5 + y 4 = 1 / 49 0 - 2 y 6 + y 5 = 1 / 49

因此,我们现在从连续世界转移到线性代数世界:

- 2 1 0 0 0 0 1 - 2 1 0 0 0 0 1 - 2 1 0 0 0 0 1 - 2 1 0 0 0 0 1 - 2 1 0 0 0 0 1 - 2 y 1 y 2 y 3 y 4 y 5 y 6 = 1 / 49 + 1 1 / 49 1 / 49 1 / 49 1 / 49 1 / 49

解决这个系统相当于求逆上面的三对角矩阵,这是我们二阶导数算子的离散模拟。在连续世界中,我们积分微分算子以恢复y(x),在离散世界中,我们求逆离散算子以恢复离散值y i。在使用更多点离散化域时,请记住维度的诅咒。

显然,我们必须将离散值y i与它们的精确对应物y ( x i )进行比较,以查看我们仅使用八个离散点执行的有限差分方案的性能(图 13-8)。图 13-9 显示了数值解(仅使用四个离散点)与精确解析解的图形。

250

图 13-8. 在每个离散点比较数值解和精确解析解。

250

图 13-9. 数值解的图形(仅使用四个离散点)与精确解析解的对比(实线)。

现在我们可以使用有限差分来离散化任何任意阶或类型的微分方程,在任何维度的域上。我们所要做的就是离散化域并决定有限差分方案,以近似域内所有离散点处的导数。

示例:在区间x ∈ ( 0 , 1 )的内部离散化一维热方程u t = α u xx。这是一维有界空间域上的二阶线性偏微分方程。

这里,u=u(x,t)是两个变量的函数,因此我们的离散化方案应该涉及两个坐标。我们可以只在空间中离散化并保持时间连续,只在时间中离散化并保持空间连续,或者在空间和时间中都离散化。我们总是有多个数值路径。选择是好的。如果我们在空间和时间中都离散化,那么我们最终得到一个代数方程组。如果我们只在空间中离散化而不在时间中离散化,那么我们最终得到一个常微分方程组。由于 PDE 是线性的,因此离散化系统也是线性的。

让我们写出一个完整的离散方案:为了在空间中离散化,让我们使用二阶中心差分。为了在时间中离散化,让我们使用向前差分:

u i,j+1 -u i,j s = u i+1,j -2u i,j +u i-1,j h 2 for i = 1 , 2 , ⋯ , n and j = 1 , 2 , ⋯

在这样的方程中,u(x,t) 在某个初始时间可以被确定(u(x,0)=g(x)),我们想要知道 u(x,t) 随时间的演变。在上面的数值方案中,下标 j 代表离散时间,因此未知数是 u i,j+1。

(完成这部分)

有限元

有限元方法与有限差分方法不同,因为它们是基于 PDE 的弱形式而不是直接操作 PDE。弱形式是加权和平均的,因此我们考虑积分和分部积分。我们很快会回到这个问题。

在讨论有限元的一般概念之前,让我们稍微观察一下图 13-10:这显示了在圆形域上的 PDE 的有限元解。域的离散化使用三角形网格,解似乎被分段线性函数逼近。我们可以使用其他多边形形状的网格,我们可以使用比分段线性更平滑的函数,如分段二次或更高次多项式。更平滑的代价是更多的计算。

250

图 13-10。在圆形域上的有限元解(图片来源)

让我们演示有限元方法如何给出以下 PDE 的数值近似解:

- Δ u ( x , y ) = f ( x , y ) for ( x , y ) ∈ Ω ⊂ ℝ 2 u ( x , y ) = 0 for ( x , y ) ∈ b o u n d a r y Ω

这是泊松方程(出现在静电学中)。没有时间演变。f(x,y)是指定的,我们正在寻找一个未知函数 u(x,y),它在整个边界上为零,并且其二阶导数 u xx 和 u yy 加起来为*-f(x,y)*。这个 PDE 已经被广泛研究,我们有其解析解的公式,但我们只对使用有限元方法进行数值逼近感兴趣。

为此,我们将使用一个存在于无限维空间中的未知函数u(x,y)的近似,使用一个存在于有限维空间中的已知函数。有限维空间仅由有限多个线性无关函数张成。我们可以选择这些基函数,以确保我们的选择使我们的计算非常容易。我们通常选择分段线性函数或分段多项式函数,每个最小支持在网格上。这意味着基函数仅在网格的一个或两个相邻元素的顶部为非零,而在其他地方为零。因此,涉及该函数在 PDE 的整个域上的积分将简化为在网格的一个或两个元素上的积分。

在选择这些基函数之后,每个基函数都支持在少量网格元素上,我们通过这些简单且局部支持的基函数的线性组合来近似真实解u(x,y)

u ( x , y ) ≈ u 1 b a s i s 1 ( x , y ) + u 2 b a s i s 2 ( x , y ) + ⋯ u n b a s i s n ( x , y )

现在我们必须找到线性组合的常数u i。因此,我们将问题从在连续介质中解决未知函数u(x,y)降低到解决未知系数向量( u 1 , u 2 , ⋯ , u n )。我们必须选择它们,使得近似u 1 e l e m e n t 1 ( x , y ) + u 2 e l e m e n t 2 ( x , y ) + ⋯ u n e l e m e n t n ( x , y )满足 PDE,在某种意义上。我们有n个未知数,所以我们必须写n个方程并解决一个n个未知数的系统。我们从 PDE 或其弱形式中得到这些。为了得到 PDE 的弱形式,我们将其乘以一个函数v(x,y),在整个域上积分,然后使用分部积分来摆脱高阶导数。记住我们有的导数越少,我们就越接近未知函数。让我们一步一步来做:

原始 PDE 是:

- Δ u ( x , y ) = f ( x , y ) for ( x , y ) ∈ Ω ⊂ ℝ 2 u ( x , y ) = 0 for ( x , y ) ∈ b o u n d a r y Ω

将 PDE 乘以一个函数v(x,y)并在整个域上积分。这是 PDE 的弱形式,因为它以积分形式满足,而不是逐点形式:

- ∫ Ω Δ u ( x , y ) v ( x , y ) d x d y = ∫ Ω f ( x , y ) v ( x , y ) d x d y

注意算子Δ = ∇ . ∇,两个导数算子的点积。通过分部积分,我们可以通过将一个导数移到积分内的另一个函数来摆脱其中一个导数。这并非免费:在这个过程中,它会带上一个负号和另一个作用于域边界的积分项。域边界上的新积分积分了两个反导数的乘积。边界项需要外法向量到边界n →:

∫ Ω ∇ u ( x , y ) . ∇ v ( x , y ) d x d y - ∫ boundary Ω v ( x , y ) ∇ u ( x , y ) . n → d s = ∫ Ω f ( x , y ) v ( x , y ) d x d y

我们可以选择v(x,y)=0在边界上,这样整个边界项就消失了:

∫ Ω ∇ u ( x , y ) . ∇ v ( x , y ) d x d y = ∫ Ω f ( x , y ) v ( x , y ) d x d y

现在我们用有限维近似替换u(x,y)

∫ Ω ∇ ( u 1 b a s i s 1 ( x , y ) + u 2 b a s i s 2 ( x , y ) + ⋯ u n b a s i s n ( x , y ) ) . ∇ v ( x , y ) d x d y = ∫ Ω f ( x , y ) v ( x , y ) d x d y ,

等价于:

∫ Ω ( u 1 ∇ b a s i s 1 ( x , y ) + u 2 ∇ b a s i s 2 ( x , y ) + ⋯ u n ∇ b a s i s n ( x , y ) ) . ∇ v ( x , y ) d x d y = ∫ Ω f ( x , y ) v ( x , y ) d x d y

就是这样:我们可以选择n个不同的函数作为v(x,y),得到n个未知数的n个不同方程(u i 是未知数)。一个共同的主题是,每次我们都可以选择,我们选择那些不会使我们的计算变得复杂的东西。v(x,y)的最简单选择是我们已经有的n个基函数,因为这些在相互积分时产生许多抵消(正交性),并且在与自身积分时产生数字 1(正规性)。我们最初选择的基函数形成了一组正交归一的函数。一切都是为了让我们的生活更轻松。因此,这n个方程是:

∫ Ω ( u 1 ∇ b a s i s 1 ( x , y ) + u 2 ∇ b a s i s 2 ( x , y ) + ⋯ u n ∇ b a s i s n ( x , y ) ) . ∇ b a s i s 1 ( x , y ) d x d y = ∫ Ω f ( x , y ) b a s i s 1 ( x , y ) d x d y ∫ Ω ( u 1 ∇ b a s i s 1 ( x , y ) + u 2 ∇ b a s i s 2 ( x , y ) + ⋯ u n ∇ b a s i s n ( x , y ) ) . ∇ b a s i s 2 ( x , y ) d x d y = ∫ Ω f ( x , y ) b a s i s 2 ( x , y ) d x d y ⋯ ∫ Ω ( u 1 ∇ b a s i s 1 ( x , y ) + u 2 ∇ b a s i s 2 ( x , y ) + ⋯ u n ∇ b a s i s n ( x , y ) ) . ∇ b a s i s n ( x , y ) d x d y = ∫ Ω f ( x , y ) b a s i s n ( x , y ) d x d y

最后,我们解决了* n 方程 n *未知数的系统,我们将其设置为线性代数形式:

∫ Ω ∇ b a s i s 1 ( x , y ) . ∇ b a s i s 1 ( x , y ) d x d y ∫ Ω ∇ b a s i s 2 ( x , y ) . ∇ b a s i s 1 ( x , y ) d x d y ⋯ ∫ Ω ∇ b a s i s n ( x , y ) . ∇ b a s i s 1 ( x , y ) d x d y ∫ Ω ∇ b a s i s 1 ( x , y ) . ∇ b a s i s 2 ( x , y ) d x d y ∫ Ω ∇ b a s i s 2 ( x , y ) . ∇ b a s i s 2 ( x , y ) d x d y ⋯ ∫ Ω ∇ b a s i s n ( x , y ) . ∇ b a s i s 2 ( x , y ) d x d y ⋮ ⋮ ⋯ ⋮ ∫ Ω ∇ b a s i s 1 ( x , y ) . ∇ b a s i s n ( x , y ) d x d y ∫ Ω ∇ b a s i s 2 ( x , y ) . ∇ b a s i s n ( x , y ) d x d y ⋯ ∫ Ω ∇ b a s i s n ( x , y ) . ∇ b a s i s n ( x , y ) d x d y u 1 u 2 ⋮ u n = ∫ Ω f ( x , y ) b a s i s 1 ( x , y ) d x d y ∫ Ω f ( x , y ) b a s i s 2 ( x , y ) d x d y ⋮ ∫ Ω f ( x , y ) b a s i s n ( x , y ) d x d y

请记住,我们知道函数f(x,y)、所有基函数和域Ω,所以我们要做的就是解方程组。这个系统是稀疏的,因为大多数这些积分为零。出于这个原因,我们选择了支持较小的基函数。我们永远不想解一个密集的方程组。

当然,我们对有限元有许多问题和丰富的文献来处理这些问题:

  • 所有 PDE 都有一个允许我们做这样事情的弱形式吗?(是的,因为我们总是可以将 PDE 与v函数相乘并进行部分积分,但有些 PDE 比其他 PDE 具有更好的结构来进行简化计算)。

  • PDE 的能量形式变分原理与之相关吗?(是的,它们相关。查找里兹方法。我们在运筹学和变分微积分章节中暗示了这一点,当我们将最小化能量泛函与解 PDE 联系起来时。在这里要记住的一件事是,大多数 PDE 具有弱形式,但并非所有 PDE 都有能量最小化形式。我获得博士学位的一个原因是我发现了我正在研究的 PDE 的能量形式。这完全是偶然。我所做的只是一个幸运的弱形式,然后是部分积分。就像我们在本节中所做的那样。在这个生活中,试错是被低估的)。

  • Sobolov 空间是怎么回事,为什么我们在 PDE 的高级课程中学习它们?(因为我们需要将我们的函数uv和基函数设置在适当的函数空间中,告诉我们我们正在使用的所有计算和近似是有效的。例如,我们不希望包含我们的函数及其导数的涉及积分爆炸)。

  • 我们可以使用非均匀网格来调整域的更详细部分,比如图 13-11 中的部分吗?(是的,我们讨论中的内容并不严格依赖于均匀网格)。

150

图 13-11。一个具有非均匀三角形网格的二维域(图片来源)
  • 我们需要多少基函数?(和我们的网格元素一样多)。

  • 在什么条件下,近似解会收敛到真实解?(欢迎来到有限元分析)。

  • 这在应用中如何使用?(一直在使用。它始于力学和结构设计:载荷、应力和应变;但现在有限元方法被用来数值解决各种具有复杂几何空间域的 PDE)。

  • 可能出什么问题?(一如既往,维度的诅咒。我们需要更多的网格元素以获得更高的分辨率,因此我们最终需要解决的方程组随着网格元素数量的增加呈指数增长。不好。理想情况下,我们希望网格在不需要详细的地方不详细,并在域的更有趣的部分更详细)。

  • 还有什么可能使事情复杂化?(对于域随时间演变的 PDE,我们需要相应随时间演变的网格)。

  • AI 能帮助学习给定几何和 PDE 的适当网格吗?(是的,我们将在本章中很快看到这一点)。

在继续之前,我们注意到有限元方法是一个有限维度的网格依赖方法,用于近似 PDE 的解。在本章的后面,我们将学习无网格神经网络方法。

变分或能量方法

一些偏微分方程在某种意义上非常特殊,因为它们的解最小化了一个能量泛函。我们说这样的偏微分方程具有变分原理。泊松方程,我们刚刚使用有限元方法解决的方程之一,就是这些幸运的偏微分方程之一。当一个偏微分方程具有变分原理时,它为我们打开了另一条理解其解的途径,通过研究它恰好最小化的能量泛函。

让我们写出泊松方程及其解最小化的能量泛函,而不深入讨论为什么会这样:

Δ u ( x , y ) = f ( x , y ) for ( x , y ) ∈ Ω ⊂ ℝ 2 u ( x , y ) = 0 for ( x , y ) ∈ b o u n d a r y ΩE ( u ( x , y ) ) = ∫ Ω |∇u(x,y)| 2 + 2 f ( x , y ) d x d y .

现在我们可以利用这一新知识来数值近似求解 PDE:寻找能量泛函的近似最小化方案。类似于有限元方法,我们将我们的无限维解(x, y)投影到有限维空间,我们可以选择基元素:

u ( x , y ) ≈ u 1 b a s i s 1 ( x , y ) + u 2 b a s i s 2 ( x , y ) + ⋯ u n b a s i s n ( x , y )

我们必须再次解出数字<u_1, u_2, ..., u_n>。为了做到这一点,我们将近似的 u(x, y)代入能量泛函的公式中。由于我们知道所有的基元素,这现在是<u_1, u_2, ..., u_n>的函数,我们可以使用标准微积分方法来最小化。完成!

这种方法相当通用,并将我们顺利引入变分微积分,这是关于寻找泛函的最优解而不是函数的,就像在正常微积分中一样。

蒙特卡洛方法

我们现在习惯于将大脑转换为概率思维,以解决确定性问题。我们用随机梯度下降来最小化损失函数,相乘大矩阵,对大矩阵进行随机奇异值分解,图上的随机游走来识别社区,排名网页等等。蒙特卡洛方法最著名的入门示例有:

  1. 通过在单位正方形内生成许多随机点<x_random, y_random>,并找到落在半径为 1 的内切四分之一圆内的比例:<x_random² + y_random² ≤ 1>。现在我们可以估计落入四分之一圆内的概率:

    P r o b ( point inside the quarter circle ) = areaofquartercircleofradius1 areaofunitsquare = π 4 ≈ numberoftimespointisinsidethequartercircle totalnumberofpointsgenerated .

  2. 通过生成随机点( x random , y random ),其中a ≤ x random ≤ b和0 ≤ y random ≤ max ( f ),来估计非负连续函数f(x)在区间[a,b]上的积分∫ a b f ( x ) d x。积分的值是f图形下的面积。我们可以通过找到随机点位于*f(x)*图形下的比例来估计它,或者y random ≤ f ( x random ):

    P r o b ( point under the graph of f ) = areaunderthegraphoff totalareaoftherectangle = ∫ a b f(x)dx (b-a)×max(f) ≈ numberoftimespointisunderthegraphoff totalnumberofpointsgenerated

解决确定性问题的这种随机方法被称为蒙特卡罗方法,因为它们涉及重复的机会游戏,并计算特定结果的比例,就像在摩纳哥的蒙特卡洛赌场赌博一样。它们也可以被称为拉斯维加斯大道方法。这类似于随机对照试验来回答确定性问题,例如评估某种药物对给定人群的影响。回答相同问题的另一种方法是完全确定性的观察性研究,其中控制所有疑似混杂变量,并评估药物干预的效果。

现在假设我们有一个确定性的 PDE,并且我们想使用随机数值试验(蒙特卡洛)来找到它的解决方案。为了说明这是如何工作的,让我们使用一个简单的 PDE:

Δ u ( x , y ) = 0 for ( x , y ) in the unit square ⊂ ℝ 2 , u ( x , y ) = g ( x , y ) for ( x , y ) ∈ b o u n d a r y square .

让我们首先使用均匀网格离散化域,然后为内部网格点和边界条件编写 PDE 的有限差分方案:

u i+1,j -2u i,j +u i-1,j h 2 + u i,j+1 -2u i,j +u i,j-1 h 2 = 0 when (i,j) corresponds to an interior grid point , u i ' ,j ' = g i ' ,j ' when (i',j') corresponds to a boundary point .

目标是使用上述数值方案找到网格的每个内部点的u i,j。这将是该特定内部点真实解*u(x,y)*的数值估计。让我们解出u i,j:

u i,j = 1 4 u i+1,j + 1 4 u i-1,j + 1 4 u i,j+1 + 1 4 u i,j-1 when (i,j) corresponds to an interior grid point , u i ' ,j ' = g i ' ,j ' when (i',j') corresponds to a boundary point .

这就是我们如何解释上述方程对于随机行走设置的:如果我们在边界上,那么我们知道解,它是 u i ' ,j ' = g i ' ,j ' 。因此,遵循 PDE 方案指导进行行走的随机行走者将在边界点收集他的奖励 g i ' ,j ' 。此外,在内部网格点(i,j)处的解 u i,j 是四个周围网格点的解的无权平均值。因此,如果一个随机行走者从内部网格点(i,j)开始,我们将给他 0.25 的概率漫步到他的四个相邻点中的任意一个,然后到它们的相邻点,直到他碰到一个边界网格点(i',j'),在那里他收集他的奖励 g i ' ,j ' 。这只是 PDE 方案的一个探索,以某种方式为我们提供了有关哪个边界点对解 u i,j 有贡献的微小信息。如果我们重复这个过程很多次,比如一千次,都从相同的网格点(i,j)开始,我们想要找到数值解的地方,那么我们可以计算随机行走者最终到达每个边界点的比例:

p r o b ( ending up at point ( i ' , j ' ) ) ≈ numberoftimesrandomwalkerendedupatpoint(i ' ,j ' ) totalnumberofrandomwalksstartingat(i,j)

这将为我们提供他从所有边界点预期奖励的估计,这正是我们正在寻找的数值解:每个边界值在内部点的解中扮演什么角色。因此,PDE 的数值解是:

u i,j = ∑ (i ' ,j ' ) p r o b ( ending up at point ( i ' , j ' ) ) g i ' ,j '

这是一种非常巧妙的获得数值解的方法,不涉及解线性方程组(可能非常庞大和不可取)。当我们关心仅在少数点找到解而不是在整个网格找到解时,这也非常出色。

当然,对于每个 PDE,我们必须设计正确的数值方案,以及随机行走者的转移概率。例如,如果 PDE 中有与二阶导数相乘的系数,那么随机行走者不会以 0.25 的等概率漫步到他的四个相邻点中的每一个。系数会为每个相邻点引入权重,因此我们调整每个转移概率。

在理论上,我们必须证明行走者最终会碰到边界,并且以这种方式获得的数值解会收敛到 PDE 的真实解析解。我们还必须获得关于随机行走停止时间(平均值)、数值解收敛速度有多快,以及以这种方式获得的数值解在准确性、计算成本和收敛速度方面与从有限差分或有限元获得的解相比如何的分析估计。

使用蒙特卡洛方法,有时我们从另一个角度开始。我们设计一个涉及不同过程和转移速率的模拟,模拟某些物理现象(例如系统中相互作用的粒子),然后我们对其进行平均,并转变为编写涉及手头系统描述符的偏微分方程。这与从偏微分方程开始然后设计一个颗粒尺度的蒙特卡洛模拟来解决它的过程完全相反。我们接下来讨论这一点。

一些统计力学:奇妙的主方程

我最喜欢的偏微分方程之一是来自统计力学的主方程,因为它是少数能够让我们从以概率描述系统的原子或分子尺度(粒子系统)转变到以确定性描述系统的宏观尺度的偏微分方程之一。可以合理地期望,底层的原子过程和转变导致了在宏观尺度上观察到的行为。向我介绍统计力学的非常聪明的人告诉我:我们整个生活经验不就是一些庞大的基础化学反应的集体行为的结果吗?

从原子概率的主方程转变为观察量的确定性偏微分方程是干净的,不会让我们感到欺骗或做出模糊的假设,或者让我们有两个完全不相关的模型,一个在宏观尺度,另一个在原子尺度,彼此毫无关联。

主方程跟踪统计系统(一些粒子)在某个特定时间处于某种状态的概率的演变。我们通过减去损失并考虑不同状态之间的转移速率来计算系统状态的概率的变化率:

∂P(h,t) ∂t = ∑ h ' P ( h ' , t ) T ( h ' → h ) - P ( h , t ) T ( h → h ' ) , : = L P ,

其中T ( h → h ' )和T ( h ' → h )是从状态h到*h’*和反之的转移速率。我们使用底层的物理假设或对系统的观察来计算这些转移速率,例如原子的蒸发和凝结速率,扩散速率,等等

现在我们可以利用主方程为系统的确定性描述符编写偏微分方程,通过计算它们的期望值。期望值将我们从概率量转换为确定性量。这是我们计算的方法:

〈 f 〉 = ∑ h f P ( h , t ) = ∑ h f e -H(h)/KT Z ,

其中 H(h)是总能量,Z 是配分函数。表达式e -H(h)/KT Z在统计力学中非常常见,它表达了高能量状态指数上更不可能发生的直观观念,意味着系统更倾向于低能量,并且更倾向于向降低总能量的状态演化。

期望值与对 Monte Carlo 模拟的 N 次重复平均值比较

这个期望值〈 f 〉与蒙特卡洛模拟相关:它等同于蒙特卡洛模拟重复N次后f的均值的极限N → ∞。

现在我们可以计算感兴趣量的期望变化率,比如表示晶体剖面(由原子组成)在某个位置i处的高度的h i,使用主方程:

d〈h i 〉 dt = ∑ h h i ∂P ∂t = ∑ h h i L P .

如果系统是封闭的,也就是说,如果我们能够用h及其对空间和时间的导数来表达右侧,那么我们就可以得到期望高度剖面的运动方程。如果系统不是封闭的,那么我们必须做一个近似以关闭系统。最好做一个物理上合理的近似,比如系统接近平衡,否则我们的努力将是无用的。

最后一步是对离散运动方程进行粗粒化,以获得描述晶体剖面的连续 PDE 模型。这一步将我们从有限差分方案转移到连续 PDE,这与我们通过有限差分学习的离散化过程相反。使用这个过程,得到的 PDE 直接从原子过程中出现。这样的 PDE 通常看起来像:

h t ( x → , t ) = F ( h ( x → , t ) , t ; ω → )

其中ω →是系统的物理参数集。

在本章的后续部分,我们将学习如何使用图神经网络直接从粒子系统模拟宏观尺度的自然现象。这将绕过我们在本节中所做的写 PDE 的过程。网络的输入将是粒子及其相互作用和相互作用速率,输出将是整个系统的时间演变(视频或图的时间序列)。

解决方案作为基础随机过程的期望

对于某些类型的 PDE,找到解决方案的一个巧妙方法是将它们制定为某些基础随机过程的期望:我们模拟适当随机过程的随机路径,然后计算期望。这使我们能够在任何给定的空间-时间位置评估解决方案。

要学习如何做到这一点,我们需要研究费曼-卡克公式伊藤微积分(帮助我们找到依赖于时间的随机变量函数的导数)。这些将 PDE 和概率很好地联系在一起。

费曼-卡克公式(我们不会写)提供了一种实用的方法来解决一些被维度诅咒困扰的 PDE。例如,在量化金融中,我们可以使用费曼-卡克公式高效计算解决方案,以定价股票期权的布莱克-斯科尔斯方程。在量子化学中,我们可以用它来解决薛定谔方程。

转换 PDE

这里的想法很简单:也许在一个转换后的空间中解决 PDE 问题会比在当前空间中更容易(无论是分析还是数值解)。因此,我们以某种方式对其进行转换,并期望最好的结果。

傅里叶变换

傅里叶变换是从x空间到频率ξ空间的积分变换:

F . T ( f ( x ) ) = f ^ ( ξ ) = 1 2π ∫ -∞ ∞ e -iξx f ( x ) d x

逆傅里叶变换撤销了傅里叶变换,并将我们从频率ξ空间带回到x空间:

F . T -1 ( f ^ ( ξ ) ) = f ( x ) = 1 2π ∫ -∞ ∞ e iξx f ^ ( ξ ) d x

有许多函数的傅里叶变换表格供我们方便使用。当这些不可用时,我们就求助于数值方法。由于傅里叶变换及其逆变换对于许多应用非常重要,比如频率分析、信号调制和滤波,因此已经专门开发了用于快速计算的算法。

以下是关于傅里叶变换的一些重要事项:

  1. 它将一个函数分解为其频率分量:函数的傅里叶变换告诉我们函数具有每个频率的多少。函数*f(x)*的频率谱是其傅里叶变换的绝对值:| F ( ξ ) |。

  2. 它有一个逆变换,允许我们在x空间和频率空间ξ之间来回移动。

  3. 它将x空间中两个函数的卷积转换为频率ξ空间中函数的乘积:F . T . ( f g ( x ) ) = F . T . ( f ( x ) ) × F . T . ( g ( x ) ) = f ^ ( ξ ) g ^ ( ξ )。当尝试为 PDE 找到解析解时,这是有帮助的:在x空间中解 PDE 归结为在ξ空间中解代数方程或更简单的微分方程,然后使用傅里叶逆变换回到x空间。许多情况下,我们要反转两个傅里叶变换的乘积,因此解最终变成x空间中的卷积。如果您之前遇到过用于解析解的Green 函数*,这是到达它们的一种方法。

  4. 它将x上的微分变为i ξ的乘法,因此F . T . ( u x ( x ) ) = i ξ F . T . ( u ( x ) ) = i ξ u ^ ( ξ ),以及F . T . ( u xx ( x ) ) = - ξ 2 F . T . ( u ( x ) ) = - ξ 2 u ^ ( ξ )。摆脱导数是巨大的。这意味着原始空间中的微分方程变成了傅里叶空间中的代数方程。

  5. 这是一个线性变换,因此我们可以将其分别应用于 PDE 中的每一项。这使我们能够无缝解决具有恒定系数的线性 PDE。对于具有非恒定系数的线性 PDE(其中参数取决于空间),如果我们愿意用这些系数的级数展开来解决问题,我们仍然可以使用傅里叶变换。一旦我们写出级数,就必须调查它们的收敛性。

  6. 我们用它来证明神经网络的通用逼近定理*(Hornik 等人,1989)*。

  7. 我们可以用它来加速卷积神经网络*(Mathieu 等人,2013)*。

  8. 将 PDE 表示为傅里叶空间中是方便的,如果我们想要训练神经网络来学习 PDE 解决方案。

也有一些不太方便的事情:

  • 许多函数具有复值傅里叶变换。我们只是学习复分析并接受这一点。

  • 并非所有函数都有傅里叶变换。涉及的积分在无限域上操作,因此如果积分中没有函数补偿以快速衰减为零,积分会发散(使傅里叶变换无用)。傅里叶变换的核是e -iξx = cos ( ξ x ) - i sin ( ξ x )。这以频率ξ振荡,永远不会衰减为零。

  • 即使对于其逆傅里叶变换存在(帮助我们找到 PDE 的解析解)的函数,有时我们也不知道它们的公式。在这些情况下,我们将无法使用这种方法编写明确的解析解。这是许多解析方法的常见问题。

它们有海森堡不确定性原理 不确定性原理的研究始于沃纳·海森堡的论点,即不可能同时确定自由粒子的位置和动量到任意精度。在量子力学中,位置的波函数是动量的波函数的傅里叶变换。:傅里叶不确定性原理最常见的用途是描述系统稳定性和可测性之间的自然权衡,特别是量子力学系统。假设 f(x)是粒子位置为 x 的概率,f(ξ)是其动量为ξ的概率,海森堡的不等式给出了这两个概率分布必须有多分散的下限。物理假设是位置和动量由傅里叶变换相关联。|f|2L2 ≤ 4π · |(x - xo)f|L2 · |(ξ - ξo)f|L2. 从定性上讲,这意味着一个狭窄的函数具有宽广的傅里叶变换,而一个宽广的函数具有狭窄的傅里叶变换。在任一域中,一个更宽广的函数意味着数据分布广泛,因此总是存在一定的不确定性。

傅里叶变换与傅里叶级数

我们不应将傅里叶变换与傅里叶正弦和余弦级数混淆。函数sin x没有傅里叶变换,但其傅里叶正弦级数本身就是。

拉普拉斯变换

拉普拉斯变换使我们能够转换比傅里叶变换更广泛的函数类,因为它的核e -st以指数速度衰减为零(指数中没有复值i来搞乱事情)。拉普拉斯变换作用于定义在[ 0 , ∞ )上的函数,因此在偏微分方程中,我们使用它来转换时间变量,或者如果其他变量的范围是[ 0 , ∞ )。因此,我们不直接在时间域中解决 PDE,而是对其进行拉普拉斯变换,用s域中解决它,然后再将其逆拉普拉斯变换回时间域。

拉普拉斯变换的公式是:

L . T . ( f ( t ) ) = f ^ ( s ) = ∫ 0 ∞ e -st f ( t ) d t

逆拉普拉斯变换的公式是:

L . T . -1 ( f ^ ( s ) ) = f ( t ) = 1 2πi ∫ c-i∞ c+i∞ e st f ^ ( s ) d s

就像傅里叶变换一样,有许多函数的拉普拉斯变换表格供我们方便计算。

我们关心拉普拉斯变换对 PDE 中涉及的(时间)导数的作用。它最好消除它们,否则 PDE 如何让我们更接近其解?它确实做到了:

  • L . T ( u t ( x , t ) ) = s u ^ ( x , s ) - u ( x , 0 )。

  • L . T ( u tt ( x , t ) ) = s 2 u ^ ( x , s ) - s u ( x , 0 ) - u t ( x , 0 ) .

请注意,我们通常知道 PDE 的初始条件u ( x , 0 )和u t ( x , 0 ),因此上述变换确实消除了对时间的导数。

我们还关心卷积到乘法的性质,这样我们可以通过逆拉普拉斯变换将s中的代数表达式转换回t空间中的 PDE 解。请注意,这是一个有限卷积,从0t,而不是从- ∞到∞,就像在傅立叶变换的情况下一样:

  • L . T . ( ( f g ) ( t ) ) = f ^ ( s ) g ^ ( s ) 其中 ( f g ) ( t ) = ∫ 0 t f ( τ ) g ( t - τ ) d τ = ∫ 0 t f ( t - τ ) g ( τ ) d τ .

类似于傅立叶变换,拉普拉斯变换是一个线性算子,因此最适合用于线性 PDEs。

将 PDEs 简化为代数方程或 ODEs

傅里叶变换、拉普拉斯变换以及其他一些变换,如汉克尔变换和梅林变换,能够消除 PDE 中某些变量(时间、空间等)的导数。我们剩下的是一个代数方程,如果变换作用于 PDE 中涉及的所有变量,或者是一个普通微分方程(ODE),如果变换作用于除一个变量之外的所有变量。希望这里的代数方程或 ODE 比原始 PDE 更容易解决,并且我们可以利用代数、数值和 ODE 的已知方法来解决变换变量中的新方程。我们将在解算符的下一节中看到这种工作方式的一个简单示例。

解算符

现在我们将通过两个简单但具有信息性的示例来说明上述变换方法,同时展示解决 PDE 的解算符背后的思想。这些例子相当一般化,更重要的是为利用神经网络解决 PDE 奠定了基础。此外,这两个示例都有明确的解析解,因此我们可以使用它们来测试解决 PDE 的近似或迭代方法(包括神经网络方法)。

第一个示例使用具有恒定系数的一维热方程在无限域上(这是时间相关的),第二个示例使用具有恒定系数的二维泊松方程在具有简单几何形状的有界域上(这不是时间相关的,解在时间上是静态的)。

使用热方程的示例

无限一维杆上的热方程如下:

u t ( x , t ) = α u xx ( x , t ) for x ∈ ℝ , t ∈ ( 0 , ∞ ) u ( x , 0 ) = u 0 ( x ) for x ∈ ℝ .

由于这个 PDE 在x的无限域上定义,我们必须指定远场条件(没有边界,因此我们必须指定当x→∞和x→-∞时我们认为解函数*u(x,t)*是什么样子)。让我们假设这些极限为零。

为简单起见,让我们假设参数α是常数,这样我们就可以应用傅里叶变换。当将这种变换(关于x)应用于 PDE 时,我们设法消除x中的导数,并将 PDE 简化为只有时间导数的常微分方程:

u ^ t ( ξ , t ) = - α ξ 2 u ^ ( ξ , t ) for ξ ∈ ℝ , t ∈ ( 0 , ∞ ) u ^ ( ξ , 0 ) = u ^ 0 ( ξ ) for ξ ∈ ℝ .

现在我们可以轻松地使用常微分方程中的变量分离方法(让我们不要去烦恼细节),在傅里叶空间中获得解决方案:

u ^ ( ξ , t ) = e -αξ 2 t u ^ 0 ( ξ )

我们需要在x空间中的解决方案而不是在傅里叶空间中,因此我们对上述表达式进行逆傅里叶变换,并利用了在x空间和傅里叶空间之间转换时乘法变为卷积的知识。因此,在x空间中的解决方案是:

u ( x , t ) = F . T . -1 ( e -αξ 2 t u ^ 0 ( ξ ) ) = F . T . -1 ( e -αξ 2 t ) u 0 ( x ) = 1 4παt e -x 2 4αt u 0 ( x ) = ∫ -∞ ∞ 1 4παt e -(s-x) 2 4αt u 0 ( s ) d s = ∫ -∞ ∞ k e r n e l ( s , x ; t ; α ) u 0 ( s ) d s

以上计算的要点是:

PDE 的解 u(x,t)是一些核函数k ( s , x ; t ; α )对解的初始状态u 0 ( s )的积分。

此外,PDE 的解算子将给定的输入数据,即参数α和初始状态u 0 ( x ),映射到我们正在寻找的解 u(x,t)的输出,通过将初始状态与某个取决于 PDE 参数(以及其对空间和时间的依赖性)的核函数进行积分。

了解这个核的公式,或使用神经网络来近似它,可以解锁给定 PDE 的解。然后我们说神经网络学习了 PDE 的解算子

在我们简单的例子中,我们利用线性和恒定系数来融入傅立叶变换方法和卷积,当回到实空间时,我们有幸得到了积分核的显式解析公式,即,k ( s , x ; t ; α ) = 1 4παt e -(s-x) 2 4αt,因此不需要近似。有趣的是,这个核来自于一个时间相关的高斯函数G a u s s i a n ( x ; t ; α ) = 1 4παt e -x 2 4αt,随着时间的推移扩散开来。将其与解的初始状态进行卷积会产生平滑效果,使任何初始振荡和尖峰变得平滑。我们观察到这种平滑效果在任何我们可以可视化的扩散过程中,比如空气中的烟雾扩散,或液体中染料的扩散,物质会平滑地扩散直到我们得到一个均匀的介质。

使用泊松方程的示例

有界域上的泊松方程如下:

- ∇ . ( a ( x → ) ∇ u ( x → ) ) = f ( x → ) for x → ∈ D u ( x → ) = 0 for x → at the boundary of D.

当a ( x → )是常数且定义域是二维时,变成:

- a Δ u ( x , y ) = f ( x , y ) for ( x , y ) ∈ D ⊂ ℝ 2 u ( x , y ) = 0 for ( x , y ) at the boundary of D,

在这里,我们可以像处理热方程(具有恒定系数的线性方程)一样,在xy上使用傅立叶变换,但让我们改用格林函数方法。我们可以将 PDE 的右侧视为在连续脉冲聚集的位置(x,y)处的强度 f(x,y)的聚合。我们需要Dirac delta measure δ (x,y) ( s , p ) 来在数学上表达脉冲的概念。这在域上的任何地方都是零,除了在点*(x,y)处是无穷大,它在域上的总测度被归一化为 1。这里的理念是,我们可以解决只有在特定位置有脉冲的 PDE,然后从中聚合原始解决方案。可以推测,仅将脉冲作为右侧的 PDE 比将给定函数作为右侧的 PDE 更容易解决,因此我们将从脉冲 PDE 的解决方案G(x,y;s,p)构建出解决方案u(x,y)*。更重要的是,使用格林函数允许我们获得输入数据的解的积分表示形式,该积分表示形式是针对一个核(即格林函数)的。带有脉冲右侧的 PDE 是:

- a Δ G ( s , p ; x , y ) = δ (x,y) ( s , p ) for ( s , p ) ∈ D ⊂ ℝ 2 G ( s , p ; x , y ) = 0 for ( s , p ) at the boundary of D.

现在让我们写:

f ( x , y ) = ∫ D f ( s , p ) δ (x,y) ( s , p ) d s d p ,

以及 PDE 为:

- a Δ u ( x , y ) = ∫ D f ( s , p ) δ (x,y) ( s , p ) d s d p for ( x , y ) ∈ D ⊂ ℝ 2 u ( x , y ) = 0 for ( x , y ) at the boundary of D.

让我们用δ (x,y) ( s , p )替换积分中的- a Δ G ( s , p ; x , y ):

- a Δ u ( x , y ) = ∫ D - a Δ G ( s , p ; x , y ) f ( s , p ) d s d p for ( x , y ) ∈ D ⊂ ℝ 2 u ( x , y ) = 0 for x → at the boundary of D.

现在让我们假设我们有正确的条件来交换微分和积分:

- a Δ u ( x , y ) = - a Δ ( ∫ D G ( s , p ; x , y ) f ( s , p ) d s d p ) for ( x , y ) ∈ D ⊂ ℝ 2 u ( x , y ) = 0 for ( x , y ) at the boundary of D.

最后,这使我们能够将解*u(x,y)*表示为:

u ( x , y ) = ∫ D G ( x , y ; s , p ; a ) f ( s , p ) d s d p

请注意,我们在G中明确了 G 对a的依赖关系,因为在神经网络设置中学习 PDE 的解算子时,物理参数a将成为网络输入的一部分。如果参数a=a(s,p)不是常数,那么我们将写成G(x,y;s,p;a(s,p))。类似于前面示例的讨论,上述计算的要点是:

PDE 的解u(x,y)是某个核函数的积分,本例中是格林函数G ( s , p ; x , y ; a ) 对 PDE 的右侧f ( s , p ) 的积分。

此外,PDE 的解算子将给定的输入数据(在本例中为参数 a 和 PDE 的右手边 f(x, y))映射到我们正在寻找的解 u(x, y)的输出,通过将右手边函数与依赖于 PDE 参数的某个核函数进行积分(以及其对空间的依赖)。在我们的情况下,解算子的核是 PDE 的 Green 函数,我们恰好知道它适用于具有简单几何形状的域上的 Poisson 方程,但在更复杂的情况下则不知道。再次强调,了解这个核的公式,或者使用神经网络来近似它,可以解锁给定 PDE 的解。

固定点迭代

固定点迭代对于构建显式解以及证明某些幸运的 PDE 的存在性和唯一性非常有用。这是一种简单而通用的方法,因此绝对是我们工具箱中必不可少的。我们将把它写下来,然后立即应用它来表示动力系统的解作为一个级数。动力系统是描述粒子或一群粒子(系统)随时间演化的常微分方程。同样,我们希望神经网络学习动力系统的解算子,这与我们上面的讨论是一致的。此外,将固定点迭代级数表示的解与神经网络表示并列是很好的。请记住,在许多数学设置中,我们可以用多种方式表示相同的解。固定点迭代级数是加法的,而神经网络表示是组合的。此外,神经网络似乎有优势,可以表示整个 PDE 家族的解算子和更广泛的多样性,这在这个领域是一种梦想成真。

固定点迭代旨在找到一个函数的不动点,或者一个函数映射回自身的点 x*:f(x*) = x*。这并不是一项简单的任务,因为 f 通常是非线性的,大多数情况下我们不知道给定函数是否存在这样的点。与非线性方程一样,迭代方法避免了“一次性”解决方案,而是提出了一系列点,希望在正确条件下收敛到期望的解,即函数的不动点。

它是如何工作的?

固定点迭代的步骤如下:

  • x0 是起始点,然后

  • xi+1 = f(xi)。

就是这样。我们的序列{ x 0 , x 1 , x 2 ⋯ }是通过连续应用f生成的,看起来像{ x 0 , f ( x 0 ) , f ( f ( x 0 ) ) , f ( f ( f ( x 0 ) ) ) , . . . }。在f和x 0的正确条件下,这个序列会收敛到f的一个不动点x (所以f ( x ) = x *)。

请注意,根据f和起始点,这个序列的渐近行为可以是以下任何一种:

  • 收敛到极限x :如果 FPI 收敛,那么它捕获了一个不动点(对于一个连续函数f*,如果 FPI 收敛,那么极限必须是f的不动点)。

  • 发散到∞:序列增长无限制

  • 周期性行为:序列在两个或更多值之间振荡。

  • 混沌行为:序列表现得不规律,没有任何模式。

与不动点迭代相关的定理断言,不动点迭代的起始点x 0的选择对于是否收敛到一个不动点很重要。

我们如何用它来解 ODEs 和 PDEs?

本章我们关注的是找到微分方程的解,这些解是函数。因此,我们首先会重新表述一个 PDE,使得它的解u满足一个看起来像F(u)=u的方程(注意这里的F是一个算子而不是一个函数),使其适合于一个不动点迭代设置,然后我们将应用上述相同的逻辑并构建一个函数序列,希望在正确的条件下,收敛到算子的不动点u ,这就是我们正在寻找的 PDE 的解。请注意,在前面的讨论中,我们构建了一个数字序列(而不是函数),希望在正确的条件下,收敛到一个函数*(而不是算子)的不动点。

让我们使用动力系统设置来演示这一点。这是描述空间中点的时间演变的最重要、最普遍和最深入研究的常微分方程之一。它易于理解,因为通常是一阶的,只有一个导数需要消除,但在一般情况下是非线性的,因此难以理解。人们习惯于在线性系统附近对动力系统进行线性化研究其线性化行为。这通常对非线性行为具有启发性,但两者不应混淆。对于线性化系统了解很多,对于非线性系统了解很少,因此我们需要同等关注非线性系统。在本节中,我们不进行线性化。相反,我们使用固定点迭代构造的级数来近似解。

知道点的初始状态u → ( t 0 ) = u → 0,一个解轨迹u → ( t )跟踪其所有未来状态。函数f → ( u → ( t ) , a ( t ) , t )指定了演变:

du →(t) dt = f → ( u → ( t ) , a ( t ) , t ) u → ( t 0 ) = u → 0

我们需要消除一个关于时间的导数,因此我们对时间积分一次:

u → ( t ) = u → 0 + ∫ t 0 t f → ( u → ( s ) , a ( s ) , s ) d s

现在让我们以适合固定点迭代的形式重新写上述积分方程:我们将整个右手边视为一个运算符,其输入为u → ( t ),

u → ( t ) = F ( u → ( t ) ) .

现在我们可以生成序列{ u → 0 ( t ) , u → 1 ( t ) , u → 2 ( t ) , u → 3 ( t ) , ⋯ },它收敛到解u → ( t ),在所有时间或有限时间内,在f的正确条件下。该序列看起来像:

  • u → 0 ( t ) = u → 0 ( t )

  • u → 1 ( t ) = F ( u → 0 ( t ) ) = u → 0 + ∫ t 0 t f → ( u → 0 ( s ) , a ( s ) , s ) d s

  • u → 2 ( t ) = F ( u → 1 ( t ) ) = u → 0 + ∫ t 0 t f → ( u → 1 ( s ) , a ( s ) , s ) d s

  • u → 3 ( t ) = F ( u → 2 ( t ) ) = u → 0 + ∫ t 0 t f → ( u → 2 ( s ) , a ( s ) , s ) d s

等等...

简单但非常有启发性的例子

最好的例子是那些简单到有多种解决方法的例子。同时看到多种解决方法有助于巩固新学习方法的要点。考虑非常简单的一维线性动力系统:

du(t) dt = u ( t ) u ( 0 ) = 1 .

解决这个问题的第一种方法是通过变量分离,将所有包含 u(t) 的内容放在方程的一边,将所有仅包含 t 的内容放在另一边:

du(t) u(t) = d t

现在我们可以从 0 积分到 t

∫ 0 t du(s) u(s) = ∫ 0 t d s

我们得到 ln ( u ( t ) ) = t 因此我们使用变量分离方法解决我们简单的动力系统,得到解 u ( t ) = e t(可以说是数学中最重要的函数)。现在让我们使用不动点迭代构造一系列函数,并看它是否收敛到动力系统的解 u ( t ) = e t:

  • u 0 ( t ) = 1

  • u 1 ( t ) = F ( u 0 ( t ) ) = u 0 ( t ) + ∫ 0 t u 0 ( s ) d s = 1 + ∫ 0 t 1 d s = 1 + t

  • u 2 ( t ) = F ( u 1 ( t ) ) = u 0 ( t ) + ∫ 0 t u 1 ( s ) d s = 1 + ∫ 0 t 1 + s d s = 1 + t + t 2 2

  • u 3 ( t ) = F ( u 2 ( t ) ) = u 0 ( t ) + ∫ 0 t u 2 ( s ) d s = 1 + ∫ 0 t 1 + s + s 2 2 d s = 1 + t + t 2 2 + t 3 3!

  • 继续: u n ( t ) = F ( u n-1 ( t ) ) = u 0 ( t ) + ∫ 0 t u n-1 ( s ) d s = 1 + t + t 2 2 + t 3 3! + ⋯ + t n n!

当 n → ∞ 时,不动点迭代收敛到级数

u ∞ ( t ) = 1 + t + t 2 2 + t 3 3! + ⋯ + t n n! + ⋯ = ∑ n=0 ∞ t n n!

这是 u ( t ) = e t 的幂级数展开,与我们使用变量分离得到的解相同(尽管形式不同)。很酷。

当我们使用这种迭代方式构造动力系统的解,或者将 PDE 重新表述为动力系统,或者适合不动点迭代的方式(u=F(u)),我们称之为皮卡迭代。它简单并且在步骤中到达解(当它收敛时)。

复杂在哪里?

为什么我们不使用皮卡迭代来构建所有动力系统和所有我们能够重构成适合固定点迭代的形式的偏微分方程的解?和往常一样,答案是维度的诅咒。即使对于我们非常简单的一维和线性示例,每个皮卡迭代步骤都涉及评估一个积分,对于更复杂的问题,我们必须进行数值评估。例如,对于代表许多粒子的演化和相互作用的动力系统,这个过程会乘以粒子的数量。总体而言,在 ODE 和 PDE 文献中,只有有限数量的情况下,可以为高维设置提供实用算法。

最近的成功!

话虽如此,最近一种基于皮卡迭代找到高维非线性拟线性抛物型 PDE 和反向随机微分方程的显式解的方法在找到现实生活中物理学和金融应用中出现的高维 PDE 的显式解方面取得了相当成功。该论文(2017 年)的摘要很有见地:抛物型偏微分方程(PDEs)和反向随机微分方程(BSDEs)是物理学和金融工程模型中的关键要素。特别是,抛物型 PDE 和 BSDE 是金融衍生品定价和对冲的最先进工具。在这些应用中出现的 PDE 和 BSDE 通常是高维和非线性的。由于这些 PDE 和 BSDE 的显式解通常不可用,因此解决这些 PDE 和 BSDE 的近似方法是一个非常活跃的研究课题。在最近的文章[E, W., Hutzenthaler, M., Jentzen, A., and Kruse, T. Linear scaling algorithms for solving high-dimensional nonlinear parabolic differential equations. arXiv:1607.03295 (2017)]中,我们提出了一系列基于皮卡逼近和多层蒙特卡洛方法的近似方法,并在对半线性热方程的精确解的适当正则性假设下表明,计算复杂度受到O ( d ϵ -(4+δ) )的限制,其中 d 是问题的维度,δ ∈ ( 0 , ∞ ),而ϵ ∈ ( 0 , ∞ )是所需的精度。在本文中,我们通过数值模拟测试了这种算法在物理学和金融中出现的各种 100 维非线性 PDE 的适用性,展示了逼近精度与运行时间的关系。这些 100 维示例 PDE 的模拟结果在精度和速度方面非常令人满意。此外,我们还从文献中提供了其他非线性 PDE 和 BSDE 的逼近方法的综述。

为 PDE 的深度学习做准备

在离开这一部分之前,让我们为解决 ODE 和 PDE 在深度学习背景下的情况,特别是深度算子网络,做好准备。我们将保留我们的一维动力系统示例,但这次我们强调对物理参数*a(t)*的依赖,并通过在时间上增加另一个显式依赖,使其稍微更一般化:

du(t) dt = f → ( u ( t ) , a ( t ) , t ) u → ( t 0 ) = u → 0

在这之前,我们对时间进行一次积分:

u ( t ) = u 0 + ∫ t 0 t f ( u ( s ) , a ( s ) , s ) d s

神经网络的目的是将数据作为输入,对其进行处理,然后给我们一个我们关心的输出。对于常微分方程或偏微分方程,当然我们关心的输出是解<u(t)>。让我们将这个解写成某个运算符G的输出,该运算符将常微分方程或偏微分方程的给定数据作为输入。在我们的动力系统案例中,输入数据是表示动力系统物理参数的函数a(t)。请注意,我们不需要输入动力系统右侧函数f。这在训练数据中是隐含的,现在看起来像是*(训练输入,训练输出)= ( a ( t ) , u ( t ) )。通过不输入f*,我们在某种程度上在说:我不关心这种行为来自哪个精确形式的常微分方程或偏微分方程,但我能够学习系统正在做什么。这就是机器学习的典范:无需编码系统遵守的规则,模型仍然可以模拟它,只要观察到足够多的实例。

我们可以将解<u(t)>等于上述积分方程中的解算符 G 写成u ( t ) = G ( a ( t ) ),其中解算符 G将使用神经网络进行学习。请记住这个符号和思想,直到本章后面讨论神经运算符网络时。将u ( t ) = G ( a ( t ) )代入上述积分方程中,我们发现要学习的解算符,它满足使用神经网络的条件:

G ( a ( t ) ) = u 0 + ∫ t 0 t f ( G ( a ( s ) ) , a ( s ) , s ) d s .

我们刚刚写了一个积分方程,我们不会对其进行任何操作。它只是展示了我们关心的实体G(a(t))满足的真实属性。在上面的讨论中,我们使用了 Picard 的迭代来近似这个方程,在深度学习的新时代中,我们使用深度运算网络来近似它(更多内容即将介绍)。这种深度学习方法在计算上更有效,如果我们包括傅立叶变换来加快计算速度。此外,深度学习方法更广泛,它适用于更多的偏微分方程和常微分方程,而不仅仅是动力系统。动力系统很容易积分一次并获得一个让我们更接近解决方案的表示,而对于许多常微分方程和偏微分方程来说并非如此。

网格独立性和不同分辨率

最后一点:神经网络学习我们动力系统解决方案的输入和输出对看起来像:(训练输入,训练输出)= ( a ( t ) , u ( t ) ) 。由于机器只接受数值而不是函数,我们在实现时必须离散化。这里有一件很漂亮的事情,区分了作用于函数的算子作用于点的函数,并赋予神经算子网络其网格独立性特征:a(t)u(t)不必在相同的t值上离散化。我们只关心将一个函数映射到另一个函数,因此我们可以将离散化的a(t)看作映射到另一个向量的向量,该向量是离散化的u(t),不一定在相同的点上,甚至不一定是相同大小的。出于同样的原因,我们可以在给定分辨率下训练网络,然后在另一个分辨率下进行预测。这对于常微分方程和偏微分方程领域非常有用,因为数值解的质量一直受到所使用的离散化分辨率的限制。

PDE 的 AI

在调查解决 PDE 的主要关注点和基本方法之后,我们终于准备讨论 AI 与 PDE 的关系,而不仅仅是在这里或那里暗示或设定其舞台。我们希望区分深度学习进入 PDE 社区的几种不同方式:

  • 深度学习学习 PDE 的物理参数值

  • 深度学习学习二维和三维网格,用于数值模拟和实体建模

  • 深度学习学习 PDE 的解算子:神经网络学习两个无限维空间之间的映射

  • 深度学习绕过 PDE,直接从观察数据中模拟自然现象(粒子系统及其相互作用)

深度学习学习物理参数值

我们可以使用神经网络推断 PDE 模型的参数及其不确定性。我们可以从实验中获取训练数据(真实的或通过模拟已知参数的众所周知现象)。这些训练数据将带有参数值标签,因此神经网络将学习将某个 PDE 的初始设置映射到适当的参数值,从而产生更准确的建模结果。在历史上,无法直接测量的参数必须被猜测或手动调整以适应某些观察到的行为,这种做法破坏了整个建模过程。深度学习的这种简单应用极大地帮助了 PDE 建模社区,因为它为他们的结果带来了更多的真实性。我们现在可以从实验的标记图像、录音以及其他非结构化或非常高维的数据中学习参数值。一旦训练完成,神经网络可以估计具有相似设置的任何输入数据的参数和不确定性。这篇海报有一个很好而简单的例子,使用深度学习来预测 G 方程(模拟燃烧过程)的速度场参数:基于物理非线性火焰模型的贝叶斯推断

深度学习学习网格

我们在本章中学到,生成网格是有限元方法的一个组成部分,有限元方法又为模拟具有复杂域几何形状的自然现象的各种 PDE 提供了数值解。底层网格的质量会影响数值解的质量。网格越精细,就越有可能捕捉到真实解,但也会增加计算成本。一个理想的网格应该在数值解与真实解之间的误差可能较大的地方密集,而在误差较小的地方粗糙,从而在保持精度的同时保持整体计算成本可控(图 13-12)。

250

图 13-12. 左侧为非均匀网格,右侧为均匀网格。网格需要在误差较大的地方更细致(图片来源)。

如果给定一个偏微分方程(PDE)、其定义域几何形状、边界条件和参数值作为输入,我们可以训练一个神经网络自动生成一个理想的网格,预测在定义域的每个位置的网格元素的密度分布,这将是非常好的。这正是MeshingNet(2020)所做的。

在 MeshingNet 之前,网格学习是通过昂贵的多步有限元解和误差估计器来完成的。相比之下,MeshingNet 依赖于类似的问题来预测新问题的理想网格。它从一个初始均匀和粗糙的网格开始,并预测用于细化的非均匀网格密度。作为深度学习的标志,MeshingNet 在不同几何域中的各种控制 PDE、边界条件和参数下都有很好的泛化能力。

MeshingNet 的输入是控制 PDE、PDE 参数、定义域几何形状和边界条件,输出是整个定义域上的区域上限分布 A(X)。输入和输出之间的映射是高度非线性的,因此通过神经网络学习,神经网络已经展示出表达许多种非线性关系的出色能力。

为了构建训练数据集,MeshingNet 团队使用标准有限元求解器在高密度均匀网格上计算高精度解。他们还对低密度均匀网格进行相同的计算以获得较低精度的解。然后他们通过在这些解之间进行插值来计算一个误差分布 E(X)。他们使用 E(X)作为指导来细化 A(X)。他们通过结合不同几何形状、不同参数和边界条件来丰富训练数据。

用于三维网格的深度学习

三维网格(图 13-13)对计算机图形、娱乐行业的动画和实体建模非常有用。从给定的三维数据点集合中重建纹理和逼真的表面也是非常有价值的。传统方法包括 Delaunay 三角剖分和 Voronoi 图,它们使用三角形网格对点进行插值。然而,当坐标中存在噪声时,得到的表面会过于粗糙,需要数据预处理。

250

图 13-13. 三维网格 (图片来源)

深度学习正在生成更高质量的三维网格,例如,Deep Hybrid Self-Prior for Full 3D Mesh Generation(2021)Pixel To Mesh (2018),它们通过不断变形椭球从单色图像中生成三维三角形网格中的三维形状。

利用深度学习来逼近 PDE 的解算子

我们在本章中已经多次开始讨论这个问题。我们不想使用深度学习来增强 PDE 的现有方法,比如从数据中学习物理参数值,或者学习数值方法的更好网格,我们想要学习 PDE 的解算子。这将 PDE 的输入,如其域、物理参数、解的初始/最终状态和/或边界条件,直接映射到其解。我们可以将其视为:

PDE 的解=函数(PDE 的物理参数、域、边界条件、初始条件等)

我们想要构建一个神经网络来逼近这个函数。实际上,这是一个操作符,而不是通常意义上的函数,因为它将函数映射到其他函数。这里的警告是,微分算子及其逆映射无限维空间无限维空间,有时是线性的,比如从泊松方程的右侧到解的映射,大多数情况下是非线性的,比如从泊松方程的参数到解的映射。相比之下,我们在整本书中学到的神经网络的输入和输出是有限维的(输入和输出是向量、图像、图形等)。这些神经网络能够逼近有限维空间之间的函数映射。它们有一个强大的通用逼近定理,并在实际应用中取得了许多成功(如果对隐藏层的宽度和深度没有约束,我们可以使用神经网络以任意精度逼近任何连续函数)。为了类比地使用深度学习来解决 PDE,我们必须回答两个问题:

  1. 神经网络能够逼近无限维空间之间的映射吗?也就是说,它们能够逼近任何非线性连续泛函(网络的输入将是一个函数或一组函数,输出将是一个实数)或非线性算子(网络的输入将是一个函数或一组函数,输出将是另一个函数)吗?答案是!就像有关神经网络函数的通用逼近定理一样,神经网络算子也有通用逼近定理。具有单个隐藏层的神经网络可以准确逼近任何非线性连续泛函或算子。此外,神经网络能够学习整个 PDE 族的解算子,而不是传统的解 PDE 方法,后者一次只能解决给定 PDE 的一个实例。

  2. 在实践中如何实现这一点?对于有限维情况,神经网络中的一个节点线性组合输入向量的有限维特征(或上一层的输出),添加偏置项,应用非线性激活函数,然后将结果传递给下一层。在无限维情况下,我们不再有有限数量的条目进行线性组合,类似的做法是对输入函数的一些可学习核(乘法器函数)进行积分(对于数值积分,我们必须在有限多个点上采样,将积分转换为加法),添加偏置函数(可选),应用非线性激活函数,然后将结果传递给下一层。下一层将对上一层节点结果的倍数进行相加,并将它们与上一层节点结果的可学习核进行积分,依此类推。一个这样做的例子看起来像:

u n+1 ( x ) = σ ( ∫ D k e r n e l ( x , s , a ( x ) , a ( s ) ; ω ) u n ( s ) d s + W u n ( x ) ) ,

在这里,我们通过一定数量的全局积分、与核函数的局部线性变换以及与非线性激活函数的组合迭代地到达解u(x)。迭代过程中的核函数参数是ω和W的条目。神经网络通过训练从带有 PDE 解的标记数据中学习这些参数,通过最小化损失函数。类似于有限维情况,神经算子网络通过将在整个域上全局作用的线性积分算子与非线性激活函数组合来逼近非线性算子。上述迭代公式还包括一个局部线性乘数,在我们离散化时变为矩阵(检查这一点)。

神经算子网络学习我们推导出的解算子

让我们暂停一下,将上述表达式与我们为以下三种情况推导出的真实解算子进行比较:热方程、泊松方程和动力系统。我们可以很容易地将神经算子迭代过程适应到上述三种情况中的每一种:

  • 对于一维空间中具有恒定系数的热方程,解算子将初始状态和 PDE 的物理参数(恒定)映射到解u(x,t),我们很幸运地对所有涉及的量都有明确的公式:

G ( u 0 ( x ) , a ) = u ( x , t ) = ∫ -∞ ∞ 1 4πat e -(s-x) 2 4at u 0 ( s ) d s = ∫ -∞ ∞ k e r n e l ( s , x ; t ; a ) u 0 ( s ) d s

在这种情况下,神经算子网络通过以下迭代来逼近真实算子:

G ( u 0 ( x ) , a ) = u ( x , t ) ≈ u n+1 ( x , t ) = σ ( ∫ D k e r n e l ( s , x ; t ; a ; ω ) u n ( s ) d s + W u n ( x ) )

  • 对于二维空间中具有零边界条件和恒定系数的泊松方程,解算子将 PDE 的右侧f和其物理参数(恒定)映射到解u(x,y),只有对于某些简单的几何形状,我们才有所有涉及的数量的明确公式(我们这里没有写出):

G ( f ( x , y ) , a ) = u ( x , y ) = ∫ D G r e e n F u n c t i o n ( x , y ; s , p ; a ) f ( s , p ) d s d p

在这种情况下,神经算子网络通过以下迭代来逼近真实算子:

G ( f ( x , y ) , a ) = u ( x , y ) ≈ u n+1 ( x , y ) = σ ( ∫ D k e r n e l ( x , y , s , p , a ; ω ) u n ( s , p ) d s d p + W u n ( x , y ) )

  • 对于一维动力系统,解算子将 ODE 的物理参数(函数)映射到解u(t),我们有一个隐式积分方程来满足它:

G ( a ( t ) ) = u ( t ) = u 0 + ∫ t 0 t f ( G ( a ( s ) ) , a ( s ) , s ) d s .

在这种情况下,神经算子网络通过以下迭代来逼近真实算子:

G ( a ( t ) ) = u ( t ) ≈ u n+1 ( t ) = σ ( ∫ t 0 t k e r n e l ( t , s , a ( t ) , a ( s ) ; ω ) u n ( s ) d s + W u n ( t ) )

在这里,一个数据点是一个三元组(t, a(t), G(a(t))),因此一个特定的输入 a 可能会出现在多个具有不同 t 值的数据点中。例如,一个大小为 10,000 的数据集可能只从 100 个 a(t)轨迹中生成,并且每个轨迹对 100 个 t 位置进行评估。(解释这个)

观察上述三种不同情境时要注意的一点是,神经算子网络只需要输入和输出数据,而不需要了解底层的 PDE。关于 PDE 的知识隐含在训练数据中。有了这个想法,让我们强调神经算子网络的输入输出形式:

PDE 的解 ≈ learned_operator(PDE 的物理参数,域,边界条件,初始条件,_ 等)

重要的问题

当我们超越这本书去扩展我们对神经算子网络的了解时,我们必须将以下问题作为我们的指南:

对于给定的 PDE,网络的输入和输出是什么?

我们在热方程、泊松方程和动力系统的简单情境中解决了这些问题。

神经算子的架构示例是什么?

图 13-14 显示了DeepONet的输入和输出结构。输入是一个离散化的对(t,a(t)),输出是一个离散的 G(a(t))。

300

图 13-14.(使用正确的标签重新制作此图,标签为 G,u,a 和 t)(A)学习算子 G(a(t))的网络接受两个输入( a ( t 1 ) , a ( t 2 ) , ⋯ , a ( t m ) )和 t。(B)训练数据的示意图(图片来源)

我们如何处理输入在维度上存在如此巨大差异的事实,比如同时具有有限维和无限维?

换句话说,在训练和推断过程中,我们如何离散化涉及的有限维(如时间和空间)和无限维量(解函数、参数函数、边界条件、初始条件等)?请注意,对于学习有限维映射的神经网络,输入(表格、图像、音频文件、图形、自然语言文本)始终具有相同的维度,被预处理为具有相同的维度,或者网络本身逐个处理输入的固定维度部分。

我们如何避免许多 PDE 解决方法中的常见陷阱,这些方法最终取决于离散化?

神经操作器网络在哪种意义上是无网格的,并且能够将其学习的参数推广到其他不同于训练过的离散化的情况?这里的重大进展在于神经操作器网络是离散化不变的,它们在不同的离散化之间共享相同的网络参数。这意味着它们的输出不依赖于底层的离散化,并且可以与不同的网格表示一起使用。

我们如何加快神经操作器中涉及的积分的计算时间,并使其成本更低?

我们引入傅立叶变换。傅立叶神经网络加速了计算所涉及积分的过程,将输入转换为傅立叶空间。这利用了快速傅立叶变换方法。我们将在下一小节讨论的傅立叶神经网络实现了这一点。

神经操作器网络如何处理涉及数百或数千个变量的高维 PDE?

金融市场模型(Black Scholes)、涉及多个参与代理的博弈论设置(Hamilton Jacobi Bellman),或者涉及多粒子的物理系统,都是非常高维的。在每个维度上的离散化会使本来就很大的问题在计算上变得更加庞大,直到现在,这些优雅的 PDE 的任何实际实现都是不可行的。2018 年的文章使用深度学习解决高维微分方程,我们很快也会讨论,使用 AI 技术来解决这些 PDE,但是将该文章的方法与深度神经操作器设置进行比较会更好。

傅立叶神经网络

加州理工学院最近开源了其傅立叶神经网络,用于解决偏微分方程,其方法在文章参数化偏微分方程的傅立叶神经操作器(2021)中有所说明。这些网络可以近似高度非线性、高频模式和能量衰减缓慢的 PDE 的解算符。

傅立叶神经网络中的每一层都对其输入数据应用快速傅立叶变换,然后是线性变换,然后是逆傅立叶变换。这导致准线性的计算复杂度,即 O(n 多项式(log(n)))的顺序,并使模型对数据的空间分辨率不变(尽管仍需要均匀网格)。

图 13-15 显示了傅立叶神经网络的架构。

250

图 13-15. 傅立叶神经网络的架构(图片来源)。

输入是物理参数 a(x),输出是 PDE 解 u(x)。

  • 从输入 a(x)开始。

  • 通过一个浅度全连接的神经网络 P 将其提升到更高维度的通道空间:v0(x) = P(a(x))。

  • 应用几个傅立叶层的积分算子和激活函数。在这些层中,我们:应用傅立叶变换 F.T;对较低的傅立叶模式应用线性变换 R 并滤除较高的模式;应用逆傅立叶变换 F . T -1 。在底部:应用局部线性变换 W。

  • 通过神经网络 Q 将结果投影回目标维度。最后输出 u(x) = Q(vT(x)),这是通过局部变换 Q 对 v 进行的投影,Q 也由一个浅度全连接的神经网络参数化。

  • 最后输出 u(x)。

文章展示了各种重要的 PDE 的方法:

  • 伯格斯方程

  • 达西流

  • Navier-Stokes 方程

  • 在其他方法发散的湍流流动区域中进行。

傅立叶神经网络是网格不变的,因此可以在较低分辨率上进行训练,并在较高分辨率上进行评估,而不需要看到任何更高分辨率的数据(零样本超分辨率)。

由于数据驱动方法依赖于数据的质量和数量,我们需要通过其他方法解决实际 PDE 来生成神经算子网络的输入和输出的训练对。为此,作者指出:为了学习具有 v i s c o s i t y = 1 e -4 ,我们需要生成 N = 10000 个训练对 ( a ( x ) , u ( x ) ) 使用数值求解器。对于更具挑战性的 PDE,生成甚至少量的训练样本可能非常昂贵。未来的方向将是将神经算子与数值求解器结合起来,以减轻对数据的要求。

运算符的通用逼近定理陈述

假设σ是一个连续非多项式函数,X 是 Banach 空间,K 1 ⊂ X,K 2 ⊂ ℝ d是两个紧集,V 是C ( K 1 )中的紧集,G 是一个非线性连续算子,将 V 映射到C ( K 2 )。那么对于任意ϵ > 0,存在正整数 n,p,m,常数c i k , ξ i,j k , θ i k , ξ k ∈ ℝ , ω k ∈ ℝ d , x j ∈ K 1 , i = 1 , ⋯ , n , k = 1 , ⋯ , p , j = 1 , ⋯ , m,使得

| G ( u ) ( y ) - ∑ k=1 p ∑ i=1 n c i k σ ( ∑ j=1 m ξ ij k u ( x j ) + θ i k ) σ ( ω k . y + ξ k ) | < ϵ

对于所有u ∈ V和y ∈ K 2成立。请注意,这个逼近定理只使用神经网络中的一个隐藏层,但没有指定这个层有多少节点。在应用中,就像在有限维情况下一样,我们使用多个层。

不要被大词汇和希腊字母吓到。这个定理告诉我们的是,我们有理论基础来制定一个神经网络算子,并期望它能很好地逼近 PDE 解算子。即使我们可能永远不会知道 PDE 解算子的确切公式,我们构建的算子神经网络作为一个很好的代理。这就是我们都热爱逼近定理的原因,应该永远感激那些找到它们的数学家们。

我们已经在固定点迭代的加法逼近解的背景下提到过这一点,值得再次提到:无论是逼近有限维空间之间的映射还是无限维空间之间的映射,神经网络都使用简单函数的组合(线性组合或线性积分算子与非线性激活函数组合)来逼近复杂函数、泛函或算子。这与传统的逼近方法不同,传统的逼近是加法的,而不是组合的。

我们如何拓展并深入了解更多技术细节?

要深入研究神经算子网络,关于这个主题的三个重要出版物是:

  1. DeepONet: Learning nonlinear operators for identifying differential equations based on the universal approximation theorem of operators (2020)

  2. Neural Operator: Graph Kernel Network for Partial Differential Equations (2020)

  3. Fourier Neural Operator For Parametric PDEs (2021)

高维微分方程的数值解

微分方程是普遍的,它们可以模拟我们几乎可以想到的任何事物,包括我们的日常通勤和交通情况。暴露于微分方程然后不考虑我们所处的每种情况是否符合某种微分方程是很困难的。也就是说,自从微分方程领域诞生以来,维度的诅咒一直困扰着这个领域,并阻碍了许多实际应用。这就是为什么许多初级 PDE 课程误导性地只关注一维和二维微分方程,好像那就是全部了。如果 AI 被赋予一个不那么花哨的名字,肯定不会出现在任何电影中,那就是:高维数据的处理、计算和分析。这并不是贬低 AI,因为处理、计算和分析高维数据正是人类每天所做的事情,前提是我们为其增加了创造性的维度(在 AI 中这将转化为生成模型)。因此,深度学习结果被证明是寻找非常高维微分方程的数值解的合适设置。这是 2018 年文章Solving High Dimensional Differential Equations Using Deep Learning (2018)的重点,该文章涉及具有数百甚至数千维的 PDE。通过这种方式,我们可以同时包括所有参与者、资产、资源或粒子,而不是人为地设计关于它们相互作用和联系的假设。作者考虑了多个高维 PDE,包括 Hamilton-Jacobi-Bellman 方程(每个相互作用代理的最佳策略是什么,涉及数百个代理?)和 Black-Scholes 方程(基于 100 个基础资产,尚未发生违约的情况下,欧洲索赔的公平价格是多少?)

当我们将深度学习设置作为模型的基础时,例如用于计算高维 PDE 的解时,我们必须首先问的问题是我们的深度学习网络的输入和输出是什么。对于任何解为u(x,t)的 PDE,理想情况下我们会输入xt,输出u(x,t)。在这种情况下,x可以是一个极高维度的向量。如果x的条目具有任何固有的随机性,比如金融市场资产的价格,那么我们必须将它们建模为这样,如果我们不这样做,那么我们通常是在假设某种平均值。最重要的是,对于许多现实情况,我们可以将x作为X,一个随机过程进行输入。我们必须在数学上定义这一点。

上述文章中的一个重要步骤是在将X输入到近似解梯度的神经网络之前,将高维 PDE 重新表述为反向随机微分方程。为了掌握这里所需的基本数学,我们必须定义:

  1. 布朗运动(见第十一章)

  2. 随机过程(见第十一章)

  3. 随机微分方程(这超出了本书的范围)

  4. 将非线性抛物型 PDE 与随机 PDE 相关联(这超出了本书的范围)

  5. 反向随机微分方程(这超出了本书的范围)

我们必须回答一个问题:为什么在训练网络之前我们必须将偏微分方程重新表述为随机形式?这种形式给我们带来了什么优势?这超出了本书的范围,但现在你知道要寻找什么以及要问什么问题了。

最后,这种方法为解决许多高维微分方程打开了大门,但也存在一些限制。该方法无法应用于量子多体问题,因为处理泡利不相容原理的困难。

直接从数据模拟自然现象

在本章中,我们曾经讨论过粒子系统:我们使用统计力学框架描述了粒子尺度系统状态的概率,然后用这些概率编写了描述系统在宏观尺度上时间演变的偏微分方程。

在本节中,我们将解释最近基于神经网络的模型如何模拟粒子系统并预测其演变,而不需要编写任何偏微分方程。换句话说,我们绕过了偏微分方程,将其替换为从数据中学习。

为了跟踪某个粒子系统(如水或沙)在颗粒尺度上的演变,我们需要知道每个粒子在每个时间步长t的位置矢量p → i ( t )。这些位置的变化取决于粒子与其邻居之间的局部和远程相互作用(如能量和动量交换),这些相互作用既受系统的物理性质影响,也受重力、温度、力、磁场等外部影响的影响。我们可以训练一个神经网络来学习一个给定时间点(输入)的粒子系统状态与未来某个时间点的所有粒子位置(或速度或加速度)之间的映射,而不是为这些相互作用编写明确的方程,并将它们与粒子的位置、速度和/或加速度联系起来。图网络非常适合模拟粒子系统,因为每个粒子及其状态可以是一个节点,边及其特征可以模拟特定粒子之间的相互作用。

我们强调并评论了一项最近的工作中的一般思想,该工作学习了这样一个映射:使用图网络学习复杂物理学(2020 年,谷歌 DeepMind 和斯坦福大学)

首先,我们需要训练数据

我们可以从观察或模拟某个粒子系统的轨迹数据集中生成输入(某个时间点的粒子系统及其特征)和目标(稍后时间点每个粒子的加速度)对:例如,从一个 1000 步长的轨迹中,团队生成 995 对,以过去 5 个状态为条件。在数据集中,我们只需要位置矢量,可以使用有限差分推导出速度和加速度矢量。数据集通常包含 1000 个训练、100 个验证和 100 个测试轨迹,每个轨迹模拟了 300-2000 个时间步长,根据各种材料达到稳定平衡所需的平均持续时间进行调整。

接下来,我们需要构建从输入到输出(网络组件)的映射。

从整数时间 t 的某个状态开始系统 X t = ( x → 0 t , ⋯ , x → N t ),其中每个 N 个粒子的 x → i t 代表其在时间 t 的状态(包括其位置 p → i t 和其他特性,如质量,材料属性等)。

接下来,学习一个表示状态的地图 X t = ( x → 0 t , ⋯ , x → N t ) 作为图 G = (节点,边,全局属性,也可以作为节点特征包含)。节点嵌入 node → i = f u n c t i o n ( x → i ) 是粒子状态的学习函数(使用多层感知器)。添加有向边以创建粒子节点之间可能相互作用的路径。边的嵌入 e → i,j = f u n c t i o n ( r → i,j ) 是对应粒子的成对属性的学习函数(使用多层感知器),例如它们位置之间的位移,弹簧常数等等。

然后学习一个图到图的映射:通过 M 步学习的消息传递计算节点之间的相互作用,生成一系列更新的潜在图,G = ( G 1 , ⋯ , G M )。然后返回最终图。消息传递允许信息通过边在节点之间传播,并且遵守约束。这样,系统的复杂动态通过节点之间的学习消息传递在它们的局部邻域内近似。此外,最终图具有与第一个图相同的结构,但具有潜在不同的节点、边和图级属性。

然后,学习一个从最终图到提取系统动态的矩阵的映射(多层感知器),例如,粒子加速度的矩阵Y = ( p → 1 '' , p → 2 '' , ⋯ , p → N '' )。最后,使用 Y 中的加速度的 Euler 积分器更新粒子的位置和速度。这反过来将系统的状态更新为X t+1。

这样的模型不仅限于材料和粒子系统,还可以模拟具有许多相互作用代理人的系统,例如机器人控制系统。这是朝着真实模拟复杂现象迈出的一大步,对科学和工程领域具有重要价值。

动态规划的 Hamilton-Jacobi-Bellman PDE

Hamilton-Jacobi-Bellman 方程是另一个偏微分方程,其解决方案在经济学、运筹学和金融领域中打开了许多可能性,只要我们能够在高维度中解决它。简而言之,我们正在寻找一个最佳策略(如投资策略),以确保在一定时间段内有一些最小的实施成本。理想情况下,我们希望包括数百或数千个相互作用的代理人,例如所有投资银行的金融资产,而不是缩小到不切实际的代理人模型。这就是在本章前面看到的使用神经网络为高维度 PDE 找到数值解的地方。

从数学上讲,哈密尔顿-雅可比-贝尔曼偏微分方程非常丰富:它结合了动力系统(∂x(t) dt = f ( x ( t ) , a ( t ) , t )),偏微分方程(偏导数和等式)以及优化(maxmin问题)。当我们学会如何从现实世界应用中推导出这个偏微分方程时,尝试理解它,找到它的解,并分析这些解(存在性,唯一性,平滑性等),我们会获得大量数学知识。

此外,这个偏微分方程直接与人工智能中的强化学习相关,但是与以马尔可夫决策过程为基础的概率强化学习不同,我们考虑以确定性动态规划的方式来思考强化学习。

在动态规划设置中,相互作用代理的状态,捆绑在一个向量x → ( t )中,随时间演变,我们需要找到一种优化策略,引发这个动态系统的特殊解:在给定时间段内产生最小成本。思路是这样的:一种特定的时间依赖策略影响动态系统的行为,进而影响产生的成本。所有这些都是数学量。

理查德·贝尔曼(1920-1984)对动态规划领域(在给定时间段内找到演变系统的最佳策略)的贡献是无价的。我们很快将遇到贝尔曼最优性原理,实际上,正是他创造了“维度诅咒”这个术语。这个原理非常有帮助,因为它将在考虑的时间段内涉及的优化问题分解为更小的子问题,然后我们可以以递归方式解决这些问题。

确定性和随机设置中的贝尔曼方程

在确定性动态规划设置中,有:

  • 离散时间贝尔曼方程:我们可以通过选择当前时间步骤k处的最佳策略(或控制或政策)a k来找到从当前时间到最终时间的值函数,以便当前成本加上下一个时间步骤的值函数最小化。这是一个递归过程:

V a l u e ( x → k , n ) = min a → k ( C o s t ( x → k , a → k ) + V a l u e ( x → k+1 , n - 1 ) )

其中n是最终时间步骤,离散时间动态是

x → k+1 = f → ( x → k , a → k )

因此

V a l u e ( x → k , n ) = min a → k ( C o s t ( x → k , a → k ) + V a l u e ( f → ( x → k , a → k ) , n - 1 ) )

每个离散时间步骤k处的优化器a → k序列构成了整个时间段的最优策略(或策略或控制),保证了最小总成本,就像在强化学习中一样。

  • 连续时间贝尔曼方程,即哈密尔顿-雅可比-贝尔曼偏微分方程。

随机最优控制设置中,还有贝尔曼方程的随机版本。这在投资银行、调度和路径问题中广泛适用。在随机框架中,我们需要找到一个引导基础随机过程到达某个期望最终状态的最优控制输入(策略或政策),并且成本最小。例如,考虑这样一个问题:我们需要执行一个金融订单,最小化实施成本,并在一定时间内完成。我们可以首先对基础资产的短期动态进行建模,然后在时间和状态空间中进行离散化。这使我们能够在每个时间步执行给定数量的股票,条件是我们必须在给定时间段内执行所有股票。我们寻找告诉我们,在每个时间点我们可以采取的所有可能行动中,哪一个是最优的,让我们达到我们想要的位置的策略。

在第十一章中,我们将贝尔曼方程与强化学习联系起来。这是在具有价值函数的马尔可夫决策过程的背景下完成的:

V a l u e ( s → ) = max statesandactions 𝔼 ( r e w a r d 0 + γ V a l u e ( s → ' ) )

在确定性动态规划设置中,价值函数的类似方程是哈密尔顿雅可比贝尔曼 PDE。在写出其公式之前,这是我们需要注意的语言:

  1. 最小化成本函数:在这个世界上还有更常见的目标吗?

  2. 选择最优控制或最优策略:这是我们正在寻找的最小化器,它控制着动态系统。

  3. 价值函数:在考虑的时间段内的总最小成本。

  4. 贝尔曼最优性原理:一个非常有帮助的原理,让我们能够简化优化问题。

  5. 时间反向解:从期望的结果开始,逆向地、最优地工作到初始状态。在这种情况下,逆向解是更容易理解的。因为我们知道最终目标,我们立即排除了不会导致它的所有路径,从前一个时间步开始,节省了我们探索许多无用路径的时间。另一方面,如果我们向前解决问题,从时间间隔的开始开始,那么我们就没有接近期望结果的优势,因此我们必须浪费时间和计算资源来探索更多无用的路径。

大局观

最终的问题是:我们现在必须做什么(初始状态是x → ( t initial )和时间相关的策略a → ( t )),以便以最经济的方式(实现策略成本函数的最小值)将我们带到我们想要到达的地方(x → ( t fnal ))?

涉及的数量有:

  1. x → ( t )是描述动态系统状态的向量。

  2. 策略(或政策或控制)a → ( t ):我们需要设计这个策略,以便调用一个状态x → ( t ),使某个成本函数最小化。也就是说,如果我们将我们正在寻找的特殊a → ( t )输入到动态系统中,输出x → ( t )将最小化成本函数。

  3. 成本函数 C o s t ( x → ( t ) , a → ( t ) , t initial , t final ) 是由于实施策略(或政策或控制)而产生的成本:这是由某个终端成本在 t final 处以及从 t initial 过渡到 t final 的增量成本(积分)组成。增量成本取决于系统的当前状态和当前控制。

  4. 值函数 V a l u e ( x → ( t initial ) , t initial , t final ) 是通过实施最小化策略 a → ( t ) 获得的特定时间段内的最小成本,该策略进一步指定了使用系统动态信息的状态 x → ( t )。

Hamilton-Jacobi-Bellman PDE

这些是涉及的方程和公式:

dx(t) → dt = f → ( x → ( t ) , a → ( t ) , t ) C o s t ( x → ( t ) , a → ( t ) , t initial , t final ) = C o s t final ( x → ( t final ) , t final ) + ∫ t initial t final C o s t incremental ( x → ( s ) , a → ( s ) ) d s V a l u e ( x → ( t initial ) , t initial , t final ) = min a →(t) C o s t ( x → ( t ) , a → ( t ) , t initial , t final )

贝尔曼最优性原理告诉我们关于值函数(最优成本)在特殊轨迹 x → ( t ) 对应于优化策略 a → ( t ) 的行为非常有价值:在指定时间间隔内的值是如果我们沿着特殊轨迹 x → ( t ) 对应于优化策略 a → ( t ) ,值的总和。这使我们能够将长时间间隔上的优化问题分解为在更短时间间隔上的优化问题的递归:

V a l u e ( x → ( t initial ) , t initial , t final ) = V a l u e ( x ( t initial ) , t initial , t intermediate ) + V a l u e ( x → * ( t intermediate ) , t intermediate , t final )

利用贝尔曼原理,我们可以推导出值函数满足的哈密尔顿-雅可比-贝尔曼 PDE。这个 PDE 推广了一个旧的用于最优控制的哈密尔顿-雅可比 PDE。这个 PDE 的解包含非常有价值的信息:假设我们在任何时间 t 遇到系统,不仅仅是在其初始状态 t initial,那么我们可以通过解哈密尔顿-雅可比-贝尔曼方程计算值函数直到期望的最终成本。

- ∂Value ∂t = min a →(t) ( (∂Value ∂x →) T f → ( x → ( t ) , a → ( t ) ) + C o s t incremental ( x → ( t ) , a → ( t ) ) )

根据最终时间条件:

V a l u e ( x → ( t final ) , t final ) = C o s t final ( x → ( t final ) , t final )

这是值函数V a l u e ( x → ( t ) , t , t final )的一阶 PDE。同样,这是从时间t开始在状态x → ( t )控制系统的最优成本,直到时间t final。我们知道在t final时的最终值函数,我们正在寻找时间t时的值函数,即V a l u e ( x → ( t ) )。因此,我们逆向解决这个 PDE,从t final开始,直到t initial结束。

解决哈密尔顿-雅可比-贝尔曼 PDE

如果我们能够解决哈密尔顿-雅可比-贝尔曼偏微分方程,那么我们就知道最优控制a → ( t ),这将产生从当前状态x → ( t initial )到最终期望状态x → * ( t final )的最少成本(或最有益)轨迹。

汉密尔顿-雅可比-贝尔曼 PDE 通常没有平滑解,因此我们必须满足于广义解。这是许多 PDE 的共同主题,研究 PDE 理论的人几乎专注于发展广义解并理解它们存在的函数空间(如 Sobolov 空间等)。汉密尔顿雅可比贝尔曼 PDE 的广义解的经典例子,我们只是简单提及而不详细解释,包括粘性解和极小极大解。

人工智能对汉密尔顿-雅可比-贝尔曼方程的广泛文献做出的贡献是在非常高维度中进行数值求解,如数百或数千维。价值函数是基础资产或贡献代理的状态向量x → ( t )的函数,如果这些很多,那么 PDE 就是非常高维的。我们之前引用的论文使用深度学习解决高维 PDE,讨论了汉密尔顿-雅可比-贝尔曼方程的数值解,以及其他重要且具有广泛影响的高维 PDE。

术语Hopf formulas通常与汉密尔顿-雅可比 PDE 的解相关联。对于一类无粘汉密尔顿-雅可比类型 PDE,Darbon 和 Osher 克服控制理论和其他领域中某些汉密尔顿-雅可比方程维度诅咒的算法(2016) 基于 Hopf formulas 开发了一种高维汉密尔顿-雅可比 PDE 的有效算法。

动态规划和强化学习

在一些领域中,使用神经网络学习动态规划的最佳策略被称为强化学习,而在其他领域中被称为神经动态规划。神经网络和搭载它的机器学会预测当前和未来的动作如何影响长期累积成本或奖励,即该时间段的价值。我们当前和每日的投资策略如何影响我们的年度表现?我们的第一步和随后的国际象棋走法如何影响游戏的整体结果?价值函数是遵循每个(离散或连续)时间步骤的最佳策略所对应的成本和奖励的总和。

神经网络在训练过程中需要历史数据的输入和输出。输入是状态和该状态下允许的所有潜在动作,输出是价值(总成本和奖励)。训练后,例如对于一个正在制定如何处理每个客户的业务模型,神经网络学会将客户的状态作为输入,并输出下一个动作序列,以最大化长期价值。查看神经动态规划(1996) D. P. Bertsekas 和 J. N. Tsitsiklis,了解神经动态规划和利用人工神经网络逼近贝尔曼方程中价值函数的更早但全面的解释。这对于减少维度的影响非常有用:我们不需要存储和评估整个高维函数,只需要存储神经网络的参数。

AI 的 PDE?

前一节强调了动态规划和贝尔曼方程与人工智能的强化学习密切相关。

此外,PDE 领域有一整套分析工具,研究各种函数、它们所在的空间、弱解和强解,以及各种意义上的收敛。如果有任何领域有能力解锁神经网络在近似许多数据生成过程中的成功秘密,无论是联合概率分布还是确定性函数,那将是 PDE 领域。我们需要用定理和最终有助于设计和架构优化的数学严谨来支持神经网络。神经网络的神奇能力需要在分析的镜头下,以及来自 PDE 及其解的分析工具,是前进的一种有希望的方式。例如,Sobolev 训练(Czarnecki,Osindero,Jaderberg,Swirszcz,Pascanu;2017)(添加示例)

在偏微分方程中的其他考虑

在强调本章主题时,我们大多数时间都远离了著名的偏微分方程,以强调这些主题适用于远不止研究过的微分方程和应用。本科课程主要涉及仅涉及两个变量(x,y)或(x,t)的函数的线性 PDE。学生们要么被误导,认为这就是所有重要的内容,要么感到困惑:非线性 PDE 呢?以及所有高维应用呢?PDE 系统呢?这些课程还倾向于专注于热方程(抛物线)、波动方程(双曲线)、拉普拉斯方程(椭圆)以及一些数值解和模拟(有限差分、有限元和蒙特卡洛)。这些以最简单的形式呈现:线性的、一维、二维或三维的,在具有规则几何形状的域上定义,给本科生们一种错误的印象,即这些 PDE 是可能出现在应用中的所有方程的基础。它们还在类型之间提供了人为的区分:椭圆型、抛物型和双曲型,好像有一个完整的理论包括每种类型。分析解方法是狭窄的,仅关注简单解的叠加原理(由于线性性),这导致了傅立叶级数和变换(实际上这是一件非常好的事情)。神经网络扩大了范围,以近似使用简单函数的组合而不是加法来解非线性方程。

本科 PDE 课程的设置都很好,但它们并没有真正反映 PDE 的现实:不是在理论上,也不是在数值上,甚至不是在它们的广泛适用性上。学生毕业时会感到,如果给他们一个全新的 PDE,他们不知道该怎么处理,因为它与他们在入门 PDE 课程中学到的任何内容都不匹配(我可以告诉你首先要做什么,当然是在谷歌搜索之后:离散化并模拟它;这将让你对其解的行为有深刻的了解)。

也就是说,有一些一般的思考方式可以将 PDEs(偏微分方程)组合在一起(建模),这几乎总是与物理学中的一些守恒定律相关,并且进行它们的分析(理论-解的存在性、唯一性和敏感性分析以及弱解),并找到实际的解析或数值解(表示公式、格林函数、变换方法和数值解)。

首先,每个研究领域都有自己的微分方程,用于模拟其关心的现象,例如:

  • 在流体动力学中,我们研究纳维-斯托克斯方程(以及其他方程)。这是一个非线性的 PDE 系统。纳维-斯托克斯 PDE 考虑了流体的速度、压力、密度、应力、可压缩性以及作用在其上的力。该方程表达了质量守恒和动量守恒。方程的解描述了粘性流体的运动。

  • 在经济和金融领域,我们研究布莱克-斯科尔斯方程(以及其他方程)。

  • 在人口动态学中,我们研究洛特卡-沃尔特拉捕食者-猎物方程(以及其他方程)。

  • 在广义相对论中,我们研究爱因斯坦场方程(以及其他方程)。

当偏微分方程模拟随时间演化的现象时,可能会有更高级的演化驱动因素,这些因素可以更深入地了解偏微分方程解及其性质:倾向于减少能量。在数学上,当在 PDE 的解处评估能量泛函的导数时,结果为负数。通过理解这些能量泛函、它们的导数以及它们作用的函数空间,我们学到了很多数学知识。我们使用许多相对容易的能量估计来证明各种非线性 PDE 的解的存在性。通过能量方法研究 PDE 的正确设置是Sobolov 函数空间。变分法关注能量泛函的最大值或最小值(统称为极值)。这对于非线性 PDE 的理论是基础的。作为能量泛函的极小值出现的 PDE 被称为欧拉-拉格朗日方程

总结和展望

这一章向我们介绍了 PDE 与人工智能的关系。PDE 具有无与伦比的能力来模拟自然和社会现象。解开它们的解决方案为许多领域打开了许多可能性。我们强调了许多获得这些解决方案的困难,如维度诅咒、网格生成、嘈杂数据,以及 AI 如何帮助解决这些问题。

还有很多工作要做。为了开发物理信息智能机器,我们需要建立新的框架、数据集、标准化基准和可扩展和稳健系统的新严格数学。

有许多重要的 PDE 主题我们没有涉及,比如不适定的反问题,我们需要从部分或完全观察其解中学习 PDE 的参数或初始数据。物理信息神经网络对于这类问题非常有效和高效。

在哈密顿-雅可比-贝尔曼方程的背景下,我们只是随意提到了粘性解和霍普夫-拉克斯公式。在 PDE 的存在性方法方面,除了固定点迭代外,还有某些 PDE 类型的极小极大方法。例如,我们没有提到椭圆和抛物线 PDE 的单调性或最大值原理。

我们在这一章节中留下一个思考的问题:*PDE 是否会推动我们朝着更智能的代理前进?以及这篇 2021 年的文章,在这篇文章中,作者们提出了物理信息机器学习(2021 年)*的观点,我们将神经网络与物理定律相结合,以利用两者的优势,并在许多科学环境中弥补大数据集或嘈杂数据的缺失。以下是文章中的一句引用:这样的网络可以通过强制执行物理定律(例如,在连续时空域的随机点)获得额外信息进行训练。这种物理信息学习通过神经网络或其他基于核的回归网络集成(嘈杂)数据和数学模型,并通过它们实现。此外,可能可以设计专门的网络架构,以自动满足一些物理不变量,以获得更好的准确性、更快的训练和改进的泛化能力。