try ai
科普
编辑
分享
反馈
  • 模型形式误差

模型形式误差

SciencePedia玻尔百科
核心要点
  • 模型形式误差是简化数学模型与其旨在表示的复杂现实之间固有的差异。
  • 残差分析和网格加密研究 (Richardson 外推法) 等技术对于区分模型形式误差、数值误差和代码错误至关重要。
  • 验证与确认 (V&V) 框架提供了一个结构化流程,通过系统地分离不同误差来源来评估模型的可信度。
  • 现代方法接受模型形式误差,并使用统计工具对其进行显式建模,以在预测中实现更可靠的不确定性量化。

引言

在科学和工程的每个领域,从天气预报到新药设计,我们都依赖模型——对复杂世界的简化数学表示。统计学家 George Box 的著名格言“所有模型都是错的,但有些是有用的”概括了科学探究的核心挑战。这种固有的“错误性”,即我们简化的地图与错综复杂的现实领域之间的差距,被称为​​模型形式误差​​。但是,如果每个模型都有缺陷,我们如何能对我们的预测建立信心?我们如何将模型物理原理的根本性不足与代码中的简单错误或计算中的误差区分开来?

本文将直面这一挑战。它为理解、识别和管理模型形式误差这一所有计算和理论工作中沉默的伙伴,提供了全面的指南。通过探讨这个主题,您将学会区分不同类型的误差,并欣赏为使不完美的模型变得极其有用而发展的各种复杂精妙的技术。

首先,在“原理与机制”部分,我们将使用清晰的类比和经典的科学实例来剖析模型形式误差的基本性质。我们将探讨用于分离这种误差的严格的验证与确认 (V&V) 框架,并考察如残差分析和外推法等实用方法来量化其影响。随后,“应用与跨学科联系”一章将展示这些原理如何应用于金融、化学、工程和机器学习等不同领域,揭示科学家们不仅如何管理模型形式误差,还如何利用其教训来加深对他们所研究系统的理解。

原理与机制

想象一下,你是一位古代的地图绘制师,任务是绘制一幅世界地图。你有一些测量数据,一些水手的故事,以及大片的空白区域。你的第一次尝试可能是一个平面的矩形。它简单,对局部导航有用,但它从根本上是错误的。我们知道,地球不是平的。当你试图在一张平纸上表示一个球体时所看到的失真——那种将南极洲拉伸成底部一个巨大大陆的现象——正是​​模型形式误差​​的一个完美类比。这种误差并非源于你颤抖的手或错误的测量,而是源于你的表现形式,即你的模型本身,它是一个对更复杂现实的不完美简化。

在科学和工程领域,我们都是地图绘制师。我们的“地图”是数学模型——旨在捕捉从单个气体分子到一颗狂暴恒星等万物行为的方程。就像那张平面地图一样,我们所有的模型在某种程度上都是错误的。但正如统计学家 George Box 的名言所说:“所有模型都是错的,但有些是有用的。”我们这门手艺的艺术和科学在于理解它们错在何处,为何出错,以及它们对于我们的预期目标是否仍然有用。本章将深入这一挑战的核心,探索我们如何检测、量化,甚至驯服这个无处不在的名为模型形式误差的猛兽。

作为地图绘制师的科学家:理想与现实

让我们从化学领域的一个经典例子开始。几个世纪以来,学生们一直在学习​​理想气体定律​​,一个极其优美的简单方程:PV=nRTP V = n R TPV=nRT。它告诉我们,一定体积 (VVV) 内气体的压力 (PPP) 与其温度 (TTT) 成正比。这个模型将气体粒子想象成不相互作用且不占空间的微小硬球。这是一幅非常简单的地图,在许多条件下——比如室温下气球里的空气——它都非常准确。

但是,当你压缩气体直到其分子拥挤在一起,或者冷却它直到它们运动缓慢时,会发生什么呢?分子开始注意到彼此。它们微小但有限的体积变得重要,它们之间微妙的引力开始起作用。我们简单的地图开始失效。这时需要一幅更好、更详细的地图,比如​​范德华方程​​:(P+a(nV)2)(V−nb)=nRT\left(P + a \left(\frac{n}{V}\right)^{2}\right)\left(V - n b\right) = n R T(P+a(Vn​)2)(V−nb)=nRT。这个方程增加了两个小的修正因子 aaa 和 bbb,以分别考虑分子间的引力和分子自身的体积。

如果我们用这两个方程来预测,比如说,中高压下二氧化碳的压力,我们会得到两个不同的答案。理想气体定律可能预测压力为 1.164×1061.164 \times 10^{6}1.164×106 帕斯卡,而范德华方程预测为 1.126×1061.126 \times 10^{6}1.126×106 帕斯卡。大约 3.8×1043.8 \times 10^{4}3.8×104 帕斯卡的差异并非计算错误。这是理想气体定律相对于更复杂的范德华模型的模型形式误差。更简单的模型由于忽略了某些物理现实,在这种情况下高估了压力。这个差异就是“地图本身”的误差。

怀疑的层级:是程序错误、数值误差,还是模型缺陷?

在我们能自信地指责模型并宣布其有缺陷之前,我们必须像纪律严明的侦探一样,排除其他嫌疑。在计算科学的世界里,误差主要有三种类型,区分它们至关重要。这个框架通常被称为​​验证与确认 (V&V)​​。

想象一下,我们编写了一个复杂的计算机程序来模拟天气。一场风暴即将来临,我们的模拟预测它将绕过我们的城市,但结果它却直接袭击了我们。哪里出错了?

  1. ​​代码验证 (Code Verification):​​ 我们必须问的第一个问题是,“我是否正确地求解了方程?” 这是对程序错误的检查。我在代码中打错字了吗?我的算法是否按设计实现?这纯粹是一个数学和软件工程的练习。我们通常使用​​人工解法 (Method of Manufactured Solutions)​​ 来测试这一点,即我们构造一个具有已知、优雅解的问题,然后检查我们的代码是否能完美地复现它。如果不能,我们就有一个程序错误。

  2. ​​解的验证 (Solution Verification):​​ 下一个问题是,“我求解方程的精度足够吗?” 大多数复杂方程无法由计算机完美求解;它们是在空间和时间的网格点上近似求解的。较粗的网格能更快地得到答案,但精度较低。解的验证是估计这种数值误差(例如,离散误差)的过程。我们可能会在 10 公里间距的网格上运行我们的天气模拟,然后在 5 公里,再在 2.5 公里的网格上运行。通过观察解如何变化,我们可以估计有多少误差是由于我们的网格是有限的。

  3. ​​确认 (Validation):​​ 只有在我们确信代码没有错误(代码验证),并且数值误差很小且可以理解(解的验证)之后,我们才能提出最终的科学问题:“我求解的方程是正确的吗?” 这就是确认。我们将模拟的最佳预测与真实世界的观测——风暴的实际路径——进行比较。如果仍然存在显著差异,我们就遇到了​​模型形式误差​​。也许我们关于云形成的方程过于简单,或者我们忽略了城市景观对风模式的影响。

模型形式误差是一个确认问题。即使在一个运行在无限数值精度下的完美、无错误的程序中,这种误差仍然存在,因为我们方程中底层的物理原理是对现实的不完整描述。

高精度的骗局

计算科学中最阴险的陷阱之一是混淆精度 (precision) 和准确度 (accuracy)。一个计算可以非常精确——意味着每次运行时都给出相同的小数点后多位的答案——但却非常不准确,意味着那个答案完全是错的。

让我们通过一个思想实验来具体说明这一点。假设我们想计算一条真实的、复杂的物理曲线下的面积,我们称之为 f(x)=1+xf(x) = \sqrt{1+x}f(x)=1+x​。然而,为了让我们的计算机工作更轻松,我们决定用一条简单的直线 g(x)=1+x/2g(x) = 1 + x/2g(x)=1+x/2 来近似这条曲线。然后我们使用一个非常强大的数值积分技术(如辛普森法则)来计算我们简化直线 g(x)g(x)g(x) 下的面积。因为我们的数值方法非常擅长对简单多项式进行积分,所以我们可以以惊人的精度计算出面积。用数百万个点或数十亿个点进行计算,我们得到的答案都是一样的:1.25000000...1.25000000...1.25000000... 数值不确定性几乎为零。我们得到了一个非常精确的结果。

但真实曲线 f(x)f(x)f(x) 下的真实面积大约是 1.218951.218951.21895。我们非常精确的答案错了大约 2.5%2.5\%2.5%。这个差异与我们的数值方法无关;它完全是由于我们最初用简化的模型 g(x)g(x)g(x) 替换了真实的物理现实 f(x)f(x)f(x) 这一“原罪”。模拟是精确但不准确的。这个差异,1.25−1.21895≈0.0311.25 - 1.21895 \approx 0.0311.25−1.21895≈0.031,就是模型形式误差。这给我们一个至关重要的教训:如果模型本身只精确到一位有效数字,那么报告一个有十位有效数字的结果是毫无意义的。

误差消失法:揪出模型的幽灵

在现实世界中,我们很少能事先知道“真实”答案。那么我们如何将数值误差与模型形式误差分离开来呢?关键在于我们之前提到的网格加密研究,这是解的验证的基石。

假设我们正在模拟流体流动以预测系统中的湍流能量 KKK。实验测量值为 Kexp=0.0500K_{\text{exp}} = 0.0500Kexp​=0.0500。我们在三个网格上运行我们的模拟:粗网格、中等网格和细网格。

  • 粗网格:K1=0.0710K_1 = 0.0710K1​=0.0710
  • 中等网格:K2=0.0590K_2 = 0.0590K2​=0.0590
  • 细网格:K3=0.0560K_3 = 0.0560K3​=0.0560

注意结果正在收敛——随着网格变细,跳跃变得越来越小。这些值之间的差异是由于数值离散误差造成的。我们可以利用这个趋势来施展一个巧妙的技巧,称为​​Richardson 外推法​​。通过分析收敛速度,我们可以估计在一个假设的、无限精细的网格上结果会是什么。这个外推值,我们称之为 K∞K_{\infty}K∞​,是我们对模型方程预测结果的最佳估计,完全剥离了任何数值误差。

对于这些数据,数学计算表明,每次加密,误差都缩小为原来的四分之一,外推值为 K∞≈0.0550K_{\infty} \approx 0.0550K∞​≈0.0550。

现在我们可以分解误差:

  • ​​数值误差​​(在细网格上)是细网格结果与外推的“完美”结果之间的差异:Enum=∣K3−K∞∣=∣0.0560−0.0550∣=0.0010E_{\text{num}} = |K_3 - K_{\infty}| = |0.0560 - 0.0550| = 0.0010Enum​=∣K3​−K∞​∣=∣0.0560−0.0550∣=0.0010。
  • ​​模型形式误差​​是模型的完美预测与现实之间的差异:Emodel=∣K∞−Kexp∣=∣0.0550−0.0500∣=0.0050E_{\text{model}} = |K_{\infty} - K_{\text{exp}}| = |0.0550 - 0.0500| = 0.0050Emodel​=∣K∞​−Kexp​∣=∣0.0550−0.0500∣=0.0050。

结果是惊人的。即使在我们最精细的网格上,隐藏的模型形式误差(0.00500.00500.0050)也比我们能看到的数值误差(0.00100.00100.0010)大五倍!如果没有这个谨慎的程序,我们可能会错误地认为我们细网格的答案 0.05600.05600.0560 仅仅是由于其数值误差而出错,而实际上,最大的误差来源一直潜伏在模型方程的不充分性中。

从残差中寻找蛛丝马迹

如果我们无法进行复杂的网格加密研究怎么办?还有其他迹象表明模型有缺陷吗?当然有。线索常常就藏在眼前,在​​残差​​中——即我们模型拟合后的“剩余物”。残差就是观测数据点与模型在该点预测值之间的差值:ri=yobserved,i−ypredicted,ir_i = y_{\text{observed}, i} - y_{\text{predicted}, i}ri​=yobserved,i​−ypredicted,i​。

如果我们的模型很好地代表了现实,并且我们的测量噪声是真正随机的,那么残差应该看起来像随机噪声。它们应该是一团无定形、无模式、散布在零周围的点云。但当模型错误时,残差中就包含了缺失物理的幽灵。它们会呈现出一种结构。

  • ​​昭然若揭的曲线:​​ 想象一位运动生理学家正在研究新陈代谢率与活动水平的关系。真实关系是二次的(一条曲线),但一位分析师错误地拟合了一条直线。残差将不是随机的。它们会形成一个“U”形:模型在低活动水平和高活动水平时高估(残差为负),在中间低估(残差为正)。残差中的这种系统性模式是一个明确的信号,表明线性模型形式是错误的。更糟糕的是,模型未能捕捉到的系统性误差被错误地归入随机噪声中,导致分析师高估了数据的真实变异性(或误差方差)。

  • ​​不断扩大的圆锥体:​​ 在另一个例子中,一位分析化学家创建了一个校准模型来测量药物浓度。残差与预测浓度的图表揭示了一个圆锥形状:在低浓度时,残差紧密地聚集在零附近,但在高浓度时则急剧散开。这种模式被称为​​异方差性 (heteroscedasticity)​​,它告诉我们模型关于误差方差恒定的假设是错误的。模型在高浓度时不太可靠,这是隐藏在残差结构中的一个关键信息。

  • ​​时间的回声:​​ 对于随时间收集的数据,如化学反应,一个正确的模型应该留下“白噪声”——在时间上不相关的残差。如果一个模型缺少一个动态过程,比如一个未建模的副反应,残差通常会自相关:一个时间点的正残差很可能跟着另一个正残差。我们可以使用统计检验来检测残差数据中这种缺失物理的“回声”,为模型设定错误提供了强有力的证据。

最终前沿:接纳并为我们的无知建模

很长一段时间以来,目标是找到一个没有明显模型形式误差的模型。但是,一种更现代、更谦逊的方法已经出现,它承认模型误差的不可避免性,并寻求对其进行管理。这引导我们走向一个强大的思想:我们是否可以尝试对模型误差本身进行建模?

这是 Kennedy 和 O'Hagan 等复杂统计框架的核心。其中心方程是一项深刻诚实的声明: Reality=Computer Model(θ)+Discrepancy(x)+Measurement Noise\text{Reality} = \text{Computer Model}(\theta) + \text{Discrepancy}(\mathbf{x}) + \text{Measurement Noise}Reality=Computer Model(θ)+Discrepancy(x)+Measurement Noise 在这里,Computer Model(θ)\text{Computer Model}(\theta)Computer Model(θ) 是我们基于物理的模型,其可调物理参数为 θ\thetaθ。Discrepancy 项,通常表示为 δ(x)\delta(\mathbf{x})δ(x),是一个新的、显式的函数,代表了系统的、与输入相关的模型形式误差。

我们不再期望 δ(x)\delta(\mathbf{x})δ(x) 为零,而是承认我们不知道它是什么,并使用灵活的、非参数的统计工具,如​​高斯过程 (Gaussian Processes)​​,来为我们的无知建模。高斯过程可以从数据本身中学习到差异的形状。它帮助系统识别出计算机模型在何处系统性地高于或低于现实。

这种方法有两个主要后果:

  1. ​​诚实的不确定性:​​ 通过明确考虑模型的不充分性,我们对参数 (θ\thetaθ) 和预测的不确定性得到了更现实且通常更大的估计。模型被防止变得“过度自信”。
  2. ​​混淆问题:​​ 它引入了一个深刻的挑战,称为​​可辨识性 (identifiability)​​。很难区分与数据的失配是因为我们模型中的物理参数错误,还是因为差异项在弥补不足。我们看到的是流体粘度的影响,还是我们模型固有缺陷的影响?解开这两者需要仔细的实验设计、深刻的物理洞察力和复杂的统计方法。

这段旅程,从在一个简单的气体定律中识别模型误差,到用先进的统计学正式地对其建模,反映了科学本身的成熟。它是一种转变,从追求绝对可靠、完美的模型,转向对我们简化的地图与复杂、美丽的现实领域之间关系的一种更细致、更有力的理解。理解模型形式误差不是承认失败;它是高深科学探究的标志。

应用与跨学科联系

“所有模型都是错的,但有些是有用的。”

这句由统计学家 George Box 提出的著名格言并非愤世嫉俗的抱怨;它是所有科学研究的根本挑战与核心探索。我们的方程、我们的计算机模拟、我们简洁的概念框架——它们是地图,而非疆域本身。它们是对无限复杂的现实的简化草图。草图与现实之间的鸿沟,便是​​模型形式误差​​的所在。它不是我们代数中的错误,也不是代码中的缺陷;它是世界本来的样子与我们的模型描述的样子之间固有的、不可避免的差异。

但是,如果所有模型都是错的,我们又如何能信任它们来建造桥梁、设计药物或预测气候呢?答案是,科学已经发展出一套极其精妙的工具——部分是侦探工作,部分是哲学协商,部分是计算蛮力——来管理这种“错误”。这不是一个关于失败的故事,而是一个关于我们如何从模型的缺陷中学习,使之变得极其有用的故事。

侦探工作:揭示隐藏的缺陷

模型形式误差的第一个迹象通常是微妙的,就像犯罪现场留下的线索。它出现在我们分析的“剩余物”中,即我们的模型无法解释的部分。

想象一下,你是一位金融分析师,试图使用著名的资本资产定价模型 (CAPM) 来解释一只股票的回报。该模型假设股票的超额回报与市场的超额回报之间存在简单的线性关系。在你拟合模型后,你检查了残差——即模型预测与实际股票表现之间的每日误差。一个核心假设是这些误差是随机的,就像不可预测的噪声或“新闻”。但如果它们不是呢?如果你发现今天的正误差使得明天出现正误差的可能性更大呢?这种被称为自相关的模式,就是一个确凿的证据。它告诉你,你的残差不是随机噪声;它们包含信息。你简单的静态 CAPM 模型遗漏了某些东西——某种动态效应,某种连接着前后两天的“机器中的幽灵”。模型的形式过于简单,无法捕捉完整的故事,而残差正在低声泄露它错过的秘密。

同样的侦探工作几乎出现在科学的每一个角落。在化学中,Arrhenius 方程预测,当一个反应的速率常数的对数 ln⁡k\ln klnk 对温度的倒数 1/T1/T1/T 作图时,应该是一条直线。只要反应机理不改变,这种优美的简单性就成立。如果你在加热物质时,一个新的反应途径被打开了,你的图就会开始弯曲。那个弯曲不仅仅是一个难看的偏差;它是大自然发出的一个信号,表明你的模型——一个具有单一活化能 EaE_{\mathrm{a}}Ea​ 的单一反应——不再是正确的故事。模型的形式不充分,而你图上的视觉证据是让你去寻找更复杂物理现象的明确线索。

有时冲突更为直接。一位工程师构建了一个复杂的有限元模拟来预测新飞机机翼的振动。模拟预测机翼将在某个频率上共振。但在实验室里,真实的机翼在略有不同的频率上共振。误差从何而来?是​​模型形式误差​​——物理学家们在他们的控制方程中忽略了某种微妙的阻尼效应或不寻常的材料属性吗?还是​​数值误差​​——计算机的网格太粗糙,无法正确捕捉几何形状?为了解开这个谜题,工程师必须首先进行解的验证。他们加密网格,使用更多的计算能力,看看预测是否改变。如果预测收敛到一个仍然与实验不同的值,那么数值误差就不是罪魁祸首。缺陷在于更深层次的物理本身。模型的形式是错误的。这个将数值假象与物理不充分性分离开来的关键过程,是现代工程的基石。

近似的艺术:与不完美共存

在许多情况下,模型形式误差不是我们偶然发现的,而是我们有意引入的。支配一个系统的完整方程通常极其复杂,无法求解。理论科学的艺术就是近似的艺术——知道你可以安全地忽略什么。

考虑一个化学反应,其中反应物 AAA 转化为中间体 III,然后 III 再转化为产物 PPP:A⇌I→PA \rightleftharpoons I \rightarrow PA⇌I→P。描述这个过程的完整微分方程是耦合的,可能很难处理。但如果中间体 III 非常不稳定,几乎一形成就消失了呢?化学家可以与自然达成一个“君子协定”,使用​​稳态近似​​。他们假设——他们假装——III 的浓度是恒定的,从而极大地简化了数学。这是一种故意引入模型形式误差的行为。它只有在时间尺度有明显分离时——即当 III 确实是一个稍纵即逝的瞬态物种时——才是“合法的”。如果不满足这个条件,近似就变成了一个谎言。使用简化模型将产生有偏的、不正确的反应速率估计,并导致错误的机理结论。这给我们一个深刻的教训:近似是一个工具,和任何工具一样,它的力量来自于理解其局限性。

在物理学中可以找到一种更复杂的方法。想象一位物理学家使用像 Peierls-Nabarro 框架这样优美简单的模型来模拟晶格中的一个微小缺陷——位错。这个模型通过假设原子必须穿过一个理想化的、正弦形的能量景观(γ\gammaγ-曲面)来工作。后来,一个更强大的原子模拟揭示,真实的能量景观略有不同。这位物理学家会扔掉那个简单、优雅的模型吗?不。相反,他们将理想化模型与“真实”能量之间的差异视为一个小扰动。利用强大的微扰理论数学,他们可以计算出由这种模型形式误差引起的位错能量和形状的一阶修正。这是物理学中一个反复出现的主题:从一个可解的理想化模型(一个“玩具模型”)开始,然后将现实世界的复杂性视为小的修正。在这里,模型形式误差不是一个需要消除的问题,而是一个新见解的来源。

现代熔炉:在人工智能时代铸就信任

在大数据和机器学习时代,模型形式误差的挑战呈现出新的维度和紧迫性。我们如何信任一个复杂的模拟或一个“黑箱”人工智能模型来做出关键预测?答案在于一个严谨的、近乎仪式化的可信度评估过程,即验证与确认 (V&V)。

对于任何复杂的计算模型,特别是用机器学习增强的模型,我们必须遵循一个严格的问题层级:

  1. ​​代码验证:​​ “我是否正确地构建了代码?” 这是一个纯粹的数学检查,旨在寻找错误,通常使用像人工解法这样的巧妙技术,即把一个已知答案代入方程,看代码是否能复现它。这一步与现实无关;它是为了确保软件按设计工作。
  2. ​​解的验证:​​ “我是否准确地求解了方程?” 这一步量化了由离散化(例如,有限元网格的粗糙度)引起的数值误差。必须证明这些误差足够小,不会影响最终的画面。
  3. ​​确认:​​ “我求解的方程是否正确?” 只有通过了前两个阶段,我们才能进行最终的、关键的测试。我们将模型的预测——在所有不确定性都被恰当考虑的情况下——与独立的实验数据进行比较。剩下的差异就是对模型形式误差的度量。

这个严格的框架是我们防止自欺欺人的最佳防线。它迫使我们区分程序错误与数值不准确性,以及数值不准确性与我们物理理解中的根本缺陷。

如果我们从一开始就不知道正确的物理模型怎么办?在环境科学等领域,我们可能对一个系统如何工作有几个相互竞争的假设。例如,一个流域如何输出养分?这个过程是线性的、幂律的,还是会饱和?在这里,我们可以让不同的模型在一个“模型角逐”中相互竞争。我们将每个模型拟合到可用数据,然后使用像赤池信息准则 (AIC) 或交叉验证这样的工具对它们进行评分。这些方法奖励拟合优度,但惩罚不必要的复杂性,帮助我们找到在最少复杂性的情况下提供最大解释力的模型。这是一种为特定目的选择“最不错误”形式的模型的实用方法。

机器学习的兴起提供了另一条引人入胜的前进道路,特别是在“模拟到现实 (sim-to-real)”的挑战中。想象一下,试图使用神经网络来预测一个组件的温度。我们可以通过运行一个简化的偏微分方程模拟来生成一个巨大、干净且廉价的数据集,但我们的网络随后会学到模拟固有的模型形式误差(例如,被忽略的物理现象,如辐射)。或者,我们可以使用少量真实的、昂贵的、有噪声的实验数据。现代的混合方法两者兼顾:我们利用庞大的合成数据集对网络进行​​预训练​​,以学习一般物理规律,然后我们利用真实的实验数据对其进行​​微调​​,以纠正其偏差并使其与现实接轨。这是一个强大的策略,利用了模拟的规模,同时减轻了其固有的模型形式误差。

也许对整个问题最诚实的做法不是隐藏模型形式误差,而是拥抱它。在一个复杂的贝叶斯框架中,我们可以在模型中明确包含一个“差异函数”。我们可以说,“我基于物理的裂纹扩展模型预测是这样的,但我知道我的模型不完美。我将添加一个统计项来表示我对模型形式的不确定性。” 当我们向这个完整的模型展示实验数据时,它会同时学习物理参数(如屈服应力)以及其自身不足的程度和性质。这是科学建模的前沿:构建不仅能做出预测,还能告诉我们该在多大程度上信任它们的模型。它最终体现了这样一条原则:创造一个有用模型的道路,始于谦逊地承认它将永远在某种程度上是错误的。