从微分方程到神经网络:模型凭什么可靠

从自由落体和阻力模型出发,梳理微分方程、PINN、Neural ODE 与 UDE 的联系,讨论模型误差、先验与金融尾部风险的可靠性边界。

文章目录[10]

从微分方程到神经网络:模型凭什么可靠

我高中数学学得还不错,本科数学学得一般。这次想聊微分方程,我希望先从熟悉的速度、加速度和自由落体出发,把它到底在描述什么弄明白,再去看它怎样和现实发生联系。

聊着聊着,问题就变了:现实里的方程究竟怎么建出来?如果建模依赖人的假设,为什么不用表达能力更强的神经网络?模型漏掉一个因素时,我们还能相信它估计出来的误差吗?再往后,我开始对一种组合方式感兴趣:保留已经知道的机制,把不好建模的部分交给神经网络。

这篇记录沿着这些问题展开。第一人称保留原对话中的提问与感受,知识说明经过核验和必要补全;对话里的实质错误在文末列出。

Ⅰ. 从速度开始:方程给出变化规则

假设一个物体沿直线运动,位置记为 s(t)s(t),时间是 tt。速度和加速度分别是:

v(t)=dsdt,a(t)=dvdt=d2sdt2.v(t)=\frac{ds}{dt}, \qquad a(t)=\frac{dv}{dt}=\frac{d^2s}{dt^2}.

速度描述位置变化得多快,加速度描述速度变化得多快。这里的导数都相对于时间;以后遇到空间上的变化,也可以对空间坐标求导。

从自由落体开始,先把前提放清楚:取竖直向下为正方向,质量 mm 不变,近地面重力加速度 gg 视为常数,暂时忽略空气阻力。牛顿第二定律给出:

F=ma⟹mg=md2sdt2⟹d2sdt2=g.F=ma \quad\Longrightarrow\quad mg=m\frac{d^2s}{dt^2} \quad\Longrightarrow\quad \frac{d^2s}{dt^2}=g.

这就是一条二阶常微分方程。“二阶”指最高出现二阶导数;“常微分”指未知函数这里只有时间这一个自变量。它规定了位置函数应当满足什么变化规律,位置与时间的完整关系还需要求出来。1

积分一次得到速度,再积分一次得到位置:

v(t)=gt+C1,v(t)=gt+C_1, s(t)=12gt2+C1t+C2.s(t)=\frac12gt^2+C_1t+C_2.

如果初始速度是 v(0)=v0v(0)=v_0,初始位置是 s(0)=s0s(0)=s_0,两个常数便确定下来:

v(t)=v0+gt,s(t)=s0+v0t+12gt2.v(t)=v_0+gt, \qquad s(t)=s_0+v_0t+\frac12gt^2.

高中熟悉的 v=gtv=gt 和 s=12gt2s=\frac12gt^2,对应的是从静止开始、把出发点选为位置零点的情况。一般写“速度等于加速度乘时间”,还需要补上恒定加速度与零初速度这些条件。

看到这里,我大概明白微分方程在表达什么了:它把一个量的变化与其他量联系起来。已知变化规则,再加上起始状态,才能进一步求出整个过程。

这个例子可以直接积分得到解析式。更复杂的微分方程未必能写出漂亮的闭式解,常常需要数值求解。还要区分两件事:方程可以表达因果机制,但仅仅写出一个带导数的关系,并不能自动证明现实中的因果。

Ⅱ. 一条现实的方程,是怎么写出来的

理解公式之后,我卡住的地方转到了建模:现实那么复杂,怎么就知道该写成这条方程?感觉它线性,就设一个线性项;觉得有资源限制,就乘上一个修正项——这听起来也太依赖 intuition 了。

建模里确实包含判断与假设,不同部分的依据也并不相同。

仍然看下落。牛顿第二定律约束合力与加速度的关系;忽略阻力是一次简化;如果加上阻力,还需要选择阻力怎样随速度变化,并估计其中的参数。写成线性阻力模型时:

mdvdt=mg−kv,k>0.m\frac{dv}{dt}=mg-kv, \qquad k>0.

这里,−kv-kv 表示阻力与速度方向相反、大小和速度成正比。这是指定条件下的模型,并非一切物体在空气中下落都遵循它。1

另一种模型采用平方阻力。下落速度 v≥0v\ge 0 时,可以写成:

mdvdt=mg−cv2,c>0.m\frac{dv}{dt}=mg-cv^2, \qquad c>0.

在常见空气动力学表达里,阻力大小为 12CDρAv2\frac12 C_D\rho A v^2:ρ\rho 是流体密度,AA 是参考面积,CDC_D 是阻力系数。只有在这些量可近似视为常量时,才能把它们并为上式的 cc;阻力系数本身往往还要通过实验确定。2

两种假设导出不同的终端速度。让加速度为零,即阻力与重力平衡,可直接得到:

v∞={mg/k,线性阻力,mg/c,平方阻力.v_\infty= \begin{cases} mg/k, & \text{线性阻力},\\[4pt] \sqrt{mg/c}, & \text{平方阻力}. \end{cases}

kk 和 cc 的单位也不相同,不能把两种模型的公式混用。一个看起来只是符号的小差别,背后可能已经换了一套物理假设。

种群增长也一样。设数量为 N(t)N(t),若每个个体对应的平均净增长率为常数 rr,就有 dN/dt=rNdN/dt=rN。如果进一步假设这个“人均增长率”随数量增加而线性下降,到 KK 时降为零,便得到:

dNdt=rN(1−NK).\frac{dN}{dt}=rN\left(1-\frac{N}{K}\right).

这里的 KK 表示模型中的环境容纳量。把括号展开就能看到 N2N^2 项,因此这已经是非线性方程;乘上 1−N/K1-N/K 的理由来自所选假设,也需要观察检验。现实中的资源限制完全可能采取别的形式。

建模包含三件不同的工作:提出有依据的关系,在这些关系下推导结果,再检验它是否适合现实。 能够把方程解出来,只完成了其中一部分。

Ⅲ. 既然要建模,为什么不用神经网络

我是学计算机的,也在做人工智能。我的第一反应很直接:如果数据足够多,计算量也足够,神经网络的非线性表达能力这么强,为什么还要自己猜这些项?

这里要先分清两个概念。微分方程是一种描述变化关系的数学形式,既可以线性,也可以高度非线性;神经网络是一种表示和学习函数的工具。两者可以组合,因此单纯把它们排列成“粗糙模型”和“精细模型”,会遮住真正的区别。3

更值得比较的是:这个预测任务里,我们掌握了什么信息?有多少可信的机制知识,又有多少能覆盖实际使用场景的数据?

如果输入高维、规律难以手工写清,数据学习的灵活性就很有吸引力。若一个系统已有可信的守恒关系、动力学结构或实验规律,这些信息也有价值,不必要求模型全部从样本里重新发现。但机制知识只有在使用条件下仍成立,才可能帮助预测;参数有物理含义,也不代表换一个环境就能直接套用。

对我来说,“外推”是原先没有充分考虑的问题。数据很多,并不等于未来要遇到的情况都已经被覆盖。

可以用一个简单的数学例子看清这件事。下面两个函数在 0≤x≤10\le x\le1 上完全一样:

f1(x)=x2,f2(x)=x2+c[max⁡(0,x−1)]2,c>0.f_1(x)=x^2, \qquad f_2(x)=x^2+c\bigl[\max(0,x-1)\bigr]^2, \quad c>0.

即使在这个区间里采集再密集、再准确的数据,也无法仅凭这些观测区分它们;一旦走到 x>1x>1,二者就开始分开。这是一个说明问题的构造:观测范围内的拟合,不能独自决定观测范围外的规律。

因此,“数据足够多,神经网络就一定最优”还缺少任务、覆盖范围、噪声、训练方式和评价标准等条件。机制模型也没有天然的外推保证;如果原先的假设在新场景里失效,它同样会错。

Ⅳ. 简化会带来多大误差

接着我想知道:即使承认模型需要简化,误差究竟会落在什么量级?能不能在建模时就大概知道它偏得有多远?

首先得明确比较对象。位置误差、速度误差、到达时间误差是不同的量;相对误差要说明分母,预测还要指定时间范围。只说“从一百米落下,忽略阻力会差百分之十”,缺少物体质量、形状和阻力条件,无法成立为一般结论。

线性阻力模型提供了一个可以算清楚的例子。仍然从静止开始,令:

τ=mk.\tau=\frac{m}{k}.

τ\tau 的单位是时间。原方程变为:

dvdt+vτ=g.\frac{dv}{dt}+\frac{v}{\tau}=g.

两边乘上 et/τe^{t/\tau},左边可以合成一个乘积的导数:

ddt(et/τv)=get/τ.\frac{d}{dt}\left(e^{t/\tau}v\right)=ge^{t/\tau}.

从 00 积分到 tt,利用 v(0)=0v(0)=0,得到:

v(t)=gτ(1−e−t/τ).v(t)=g\tau\left(1-e^{-t/\tau}\right).

速度会随着时间渐近趋于 gτ=mg/kg\tau=mg/k。再对速度积分,并取 s(0)=0s(0)=0,可得:

s(t)=gτt−gτ2(1−e−t/τ).s(t)=g\tau t-g\tau^2\left(1-e^{-t/\tau}\right).

这些式子可以直接代回原方程与初始条件检查。在短时间 t/τ≪1t/\tau\ll1 下,把指数函数展开:

s(t)=12gt2−gt36τ+gt424τ2+⋯ .s(t)=\frac12gt^2-\frac{gt^3}{6\tau} +\frac{gt^4}{24\tau^2}+\cdots.

第一项正是无阻力公式,后面是由阻力带来的修正。以无阻力位移 sfree(t)=12gt2s_{\mathrm{free}}(t)=\frac12gt^2 为比较基准,首阶相对差为:

sfree(t)−s(t)sfree(t)≈t3τ=kt3m.\frac{s_{\mathrm{free}}(t)-s(t)}{s_{\mathrm{free}}(t)} \approx\frac{t}{3\tau} =\frac{kt}{3m}.

例如,在这个指定模型里,若 t/τ=0.03t/\tau=0.03,首阶估计约为 1%1\%;代入精确解得到约 0.993%0.993\%。这个数字来自上面的方程计算,不是某类真实物体的实测结论。

这也说明了无量纲化的作用:需要比较的是 kt/mkt/m 这样的无单位比例,单独说一个带单位的阻力系数“很小”,还不够。选定观察时长 TT 后,kT/mkT/m 才能帮助判断这一段过程里阻力是否适合被忽略。

当 t/τt/\tau 不再很小时,只保留前几项的近似就需要重新检验,不能把首阶结果直接外推。长时间下,线性阻力模型的位置近似按时间线性增长,无阻力模型的位置却按时间平方增长。同一次简化,在不同时间范围里的可靠性可能完全不同。

Ⅴ. 如果有因素根本没被考虑进去呢

我随后想到一个问题:这些误差分析,不也依赖我们对系统的理解吗?如果漏掉了一项重要因素,连算出来的误差范围,可能都只是在一个不完整的模型里成立。

这个担心触到了建模的边界。上面的计算回答的是“线性阻力模型与无阻力模型相差多少”,尚未证明线性阻力模型完整描述了现实。

至少需要区分几类误差。模型结构误差来自遗漏或误写机制;参数与初始条件误差来自已选模型里的量估得不准;数值误差来自计算机近似求解方程。把积分步长调得很小,可以减少一部分数值误差,却不会自动补回模型中没有写出的机制。

无量纲分析比较的是已经列出来的量;摄动分析研究的是明确指定的微小变化。它们有用,但结论总有前提。一个没有进入模型、也没有大小约束的未知作用,无法仅凭现有方程被自动换算成可靠的总误差界。

不过,建模也不需要先穷尽现实的一切因素才能开始。可以先明确目标与使用范围,再用观测、残差、不同条件下的比较去检查简化是否合理。对于无法完全确定、但能假设变化范围的因素,还可以研究输出对这些变化有多敏感。

我当时把这种能力和工程鲁棒性联系起来。这里需要补充一个限定:敏感性分析揭示脆弱点,鲁棒性则要进一步说明系统在哪一类扰动、什么幅度、什么时间范围内仍能维持目标。能够分析扰动,与已经证明对任意未知情况都安全,是不同的结论。

Ⅵ. 把机制放进神经网络,到底放在哪里

聊到这里,我开始对机制和学习的结合感兴趣。我熟悉的训练方式,是给模型 input 和 output,让它根据损失去更新参数。那么,一条微分方程怎么进入这个过程?

最容易理解的入口是训练损失。假设某个浓度场 C(x,t)C(x,t) 满足一个简化的一维扩散与衰减模型:

∂C∂t=D∂2C∂x2−κC.\frac{\partial C}{\partial t} =D\frac{\partial^2C}{\partial x^2}-\kappa C.

这里,xx 是空间位置,D>0D>0 是扩散系数,κ≥0\kappa\ge0 是衰减系数,本例把二者视为已知常数。浓度同时依赖位置和时间,所以这里出现了偏导数;确定具体问题还需要初始条件与边界条件。

扩散可以理解为由浓度不均引起的摊平过程。例如在一个平滑的局部峰顶,若空间二阶导数为负,扩散项就会使该处浓度下降;−κC-\kappa C 则表示浓度越高,单位时间衰减的量越大。

让网络输出 C^θ(x,t)\widehat C_\theta(x,t),再利用自动微分计算它相对于输入的导数。这个构造需要可用的二阶空间导数,可以采用 tanh 等光滑激活函数。把网络输出代回方程,定义残差:

Rθ(x,t)=∂C^θ∂t−D∂2C^θ∂x2+κC^θ.R_\theta(x,t)= \frac{\partial\widehat C_\theta}{\partial t} -D\frac{\partial^2\widehat C_\theta}{\partial x^2} +\kappa\widehat C_\theta.

训练时,除了要求预测贴近观测,还可以要求在选定采样点上,这个残差尽量小:

L=λdataLdata+λeqLeq+λicLic+λbcLbc.\mathcal L= \lambda_{\mathrm{data}}\mathcal L_{\mathrm{data}} +\lambda_{\mathrm{eq}}\mathcal L_{\mathrm{eq}} +\lambda_{\mathrm{ic}}\mathcal L_{\mathrm{ic}} +\lambda_{\mathrm{bc}}\mathcal L_{\mathrm{bc}}.

其中,Leq\mathcal L_{\mathrm{eq}} 可以取方程残差的均方值;其余各项分别衡量观测、初始条件和边界条件的误差。各个 λ\lambda 控制权重,并需要结合变量尺度处理。这是典型连续时间 PINN,也就是物理信息神经网络的一种构造。4

它让“符合给定变化规律”成为训练目标的一部分。采用有限权重的残差惩罚时,得到的是软约束;残差小到什么程度、是否足以保证目标量准确,还需要检查。

再往下一步,网络可以直接表示变化率:

dzdt=fθ(z,t).\frac{d\mathbf z}{dt}=f_\theta(\mathbf z,t).

z\mathbf z 是状态,fθf_\theta 是神经网络。给定初始状态后,微分方程求解器通过这条变化规律推进状态,这就是 Neural ODE 的基本思路。代表性论文发表于 2018 年。仅采用这种形式,并不自动意味着已经加入某条已知物理定律;其中的连续变量也可以表示网络深度。5

让我更感兴趣的是另一种具体用法:保留已经知道的部分,只把不好写的部分交给网络。当时我的反应很直接:这东西听起来很牛逼。把这个想法写成一个例子,就是:

dxdt=fknown(x,t;p)+rθ(x,t).\frac{d\mathbf x}{dt} =f_{\mathrm{known}}(\mathbf x,t;\mathbf p) +r_\theta(\mathbf x,t).

x\mathbf x 是系统状态,p\mathbf p 是已知模型中的参数,rθr_\theta 表示待学习的未知作用。这里学到的可以是一个复杂函数,并不只是把某个固定常数估得更准确。把机制模型与通用函数逼近器组合进微分方程,是 Universal Differential Equations(UDE)框架的一类典型用法。3

这个最简训练例子先假设 p\mathbf p 和初始状态已知,观测值可以直接与状态各分量对应。给定网络参数后,求解方程得到整条预测轨迹 xθ(t)\mathbf x_\theta(t),再把轨迹与观测 xiobs\mathbf x_i^{\mathrm{obs}} 比较:

L(θ)=∑i∥xθ(ti)−xiobs∥2.\mathcal L(\theta) =\sum_i \left\| \mathbf x_\theta(t_i)-\mathbf x_i^{\mathrm{obs}} \right\|^2.

随后,通过求解过程计算损失对参数的梯度,再更新网络。这样,在合适的训练设定下,可以直接利用状态观测学习未知动力学,不必把每个时刻的真实导数都作为标签提供。

这几种方法的区别,可以压缩到一张表里:

方法网络主要表示什么方程怎样参与
典型 PINN解函数,如浓度或温度场通过残差、初边值条件等约束训练
Neural ODE状态的变化率求解器沿着网络给出的变化规律推进
UDE 的混合形式已知方程里的未知函数已知结构与可学习项共同构成方程

这些概念存在交叉,UDE 的范围也比表里这一种混合形式更广。用它们时,先说明“网络究竟在学什么”,往往比先记名字更有效。

我喜欢这种思路,是因为它保留了已经建立起来的大框架,又给复杂的未知部分留下学习空间。公开研究已探索生物动力学识别、流体模型中的闭合关系等任务,但具体效果仍取决于模型和数据条件。3 网络学出的未知项,也可能同时吸收测量噪声、参数偏差和结构遗漏;拟合得好,还不足以把它直接认定为唯一真实机制。

Ⅶ. 如果先验错了,会不会把模型带偏

紧接着,我就开始担心:如果过早把微分方程加进去,或者大量使用它生成的数据,会不会把模型推到一个不好的地方?

这个担心有明确的技术含义。假设方程漏掉了真实的重要作用,而训练又强烈要求网络服从它,那么网络会受到错误先验的限制。这里可能出现模型失配和系统性偏差,不能全部笼统称为过拟合。

仍以损失里的 λeq\lambda_{\mathrm{eq}} 为例。它越大,训练通常越重视满足给定方程;但“更符合方程”与“更符合现实”能否同时成立,要看方程本身。在数据与机制明显冲突时,继续增大权重,并不能证明数据错了。

训练困难也不只来自权重大小。不同损失项的尺度、梯度之间的相互影响、采样位置和求解器精度,都可能影响结果。已有研究展示,PINN 即使面对一些不算复杂的方程,也可能因优化问题而失败;网络的函数表达能力足够,并不等于训练一定能找到好解。6

因此,逐步调整权重、改变采样、重新缩放变量、放宽不可靠的机制项,都是需要结合问题验证的办法。不能把“先把机制权重设为零,再慢慢调高”写成普遍适用的训练定律。

用模拟数据也有同样的限制。模拟器可以在其假设下生成更多情景,但这些样本会继承它的偏差。再多的模拟轨迹,也不能自动提供模型假设之外的真实证据。

已知机制的价值,在于提供有依据的限制;这个限制本身仍然需要接受检验。 把规则与学习组合起来,增加的是建模手段,也增加了需要判断哪些信息可信的工作。

Ⅷ. 到了金融尾部,模型能兜住什么

最后,我把问题转到了量化交易:这类方法是否能用于金融?特别是极端行情出现时,机制框架加上神经网络,能不能比原来的模型更好地防范风险?

公开研究确实使用神经网络处理金融任务。例如,Deep Hedging 研究在交易成本等市场摩擦下学习衍生品对冲策略;Neural SDE 相关研究则用网络表示随机动力学,并探索期权市场建模。7、8 这些资料能确认具体研究方向的存在。行业普及程度、不同交易频率下的优劣与实际收益幅度,则需要各自的证据。

先看随机微分方程的一种一般形式:

dXt=μ(t,Xt) dt+σ(t,Xt) dWt.dX_t=\mu(t,X_t)\,dt+\sigma(t,X_t)\,dW_t.

XtX_t 是状态,μ\mu 描述漂移,σ\sigma 描述随机扰动的强度,WtW_t 是布朗运动。这里的漂移和扰动强度本来就可以依赖时间与状态。经典 Heston 模型也已经把波动率作为随机过程处理,因此不能把“传统 SDE”整体描述成只会使用固定波动率。9

为了理解两个增量的区别,可以把一个很短时间步内的变化近似写成:

ΔX≈μ(t,Xt)Δt+σ(t,Xt)Δt ε,ε∼N(0,1).\Delta X\approx \mu(t,X_t)\Delta t +\sigma(t,X_t)\sqrt{\Delta t}\,\varepsilon, \qquad \varepsilon\sim\mathcal N(0,1).

这里的 ε\varepsilon 是标准正态随机数。第一项给出这一小步的平均趋势,第二项给出随机波动;波动的典型幅度随 Δt\sqrt{\Delta t} 缩放。这是说明含义的局部近似,两项的系数仍可随时间与状态变化。

Neural SDE 可以把其中的函数换成神经网络:

dXt=μθ(t,Xt) dt+σθ(t,Xt) dWt.dX_t=\mu_\theta(t,X_t)\,dt +\sigma_\theta(t,X_t)\,dW_t.

它增加了函数表示的灵活性,仍然属于随机动力学建模。学习效果依赖数据、目标与训练条件;相关理论中的无限数据结论,不能直接换成有限金融样本下的极端风险保证。10

尾部风险关注的是低概率、严重损失的那部分结果。如果把某个明确持有期内的损失记为 LL,数值越大表示亏损越严重,那么损失分布的右尾就是这里关心的区域。

两个常见指标分别回答不同的问题。99%99\% VaR 给出损失分布的 99%99\% 分位门槛;Expected Shortfall(采用一致定义时也称 CVaR)则看最坏 1%1\% 概率质量上的平均损失。前者不告诉我们跨过门槛后会有多严重,后者也不是最大损失的封顶值。11

因此,“99%99\% CVaR 降到 9.8%9.8\%”至少还要说明持有期、损失单位、百分比的分母、基准模型和评价数据。没有这些信息,这个数字无法用来判断某种方法是否可靠。

更关键的是无套利。已有工作专门构造状态空间与网络约束,让相应的 Neural SDE 模型满足指定的无套利条件。这里的约束需要推导和实现,静态与动态无套利也各有条件,并非网络一放进 SDE,就自动获得了保证。8

即使满足无套利,资产仍然可以大跌,持有的组合仍然可能遭受严重损失。价格之间的关系是否一致,与未知极端情景下的实际损失是否被封顶,是两个问题。

因为模型既有机制又能学习,就进一步认为它能够“兜住”没见过的极端情况,这个结论仍然缺少依据。更灵活的函数可以帮助表示复杂波动,却无法凭空提供未被观测、未被假设的风险机制。

从信息上看,只要额外允许一种概率很小、损失很大的情景,有限历史样本就可能完全没有出现过它。模型如果没有相应信息或限制,就不能从这些样本里推出一个可信的确定损失上限。生成更多路径,依然是在现有假设内部做计算。

我在对话里最后追问的是:为什么这种组合能够比原来的模型更好地防范风险?要回答这个问题,仍然需要回到具体任务——它增加了什么有效信息,修正了什么已知缺陷,在哪些场景下经过了验证,又留下了哪些无法覆盖的变化。

整理说明

本文保留原对话的主要提问顺序、作者明确表达的直觉与兴趣,并补齐必要定义和推导。线性阻力与平方阻力的终端速度混用、将微分方程等同于线性或粗糙模型、将 Neural ODE 与机制混合模型完全等同,以及“Neural SDE 天然无套利并保证极端损失上限”等说法,已在知识说明中纠正。这些纠正不代表作者在原对话中已经完成相应认知转变。

原AI回复中的天气预测提升、疫情误差下降、电池寿命改善、固定训练成本倍数和量化 CVaR 数字,没有提供可核对的实验上下文,本文不予采用。保留经核验的方法含义与适用边界。

参考资料

  1. MIT:Modeling Vertical Motion。
  2. NASA Glenn:Drag Equation。
  3. Rackauckas 等:Universal Differential Equations for Scientific Machine Learning,首次提交于 2020 年。
  4. Raissi、Perdikaris、Karniadakis:Physics Informed Deep Learning,作者项目页。
  5. Chen 等:Neural Ordinary Differential Equations,2018。
  6. Krishnapriyan 等:Characterizing Possible Failure Modes in Physics-Informed Neural Networks,2021。
  7. Bühler 等:Deep Hedging,2018。
  8. Cohen、Reisinger、Wang:Arbitrage-free Neural-SDE Market Models,2021 年预印本。
  9. Heston:A Closed-Form Solution for Options with Stochastic Volatility with Applications to Bond and Currency Options,1993。
  10. Kidger 等:Neural SDEs as Infinite-Dimensional GANs,ICML 2021。
  11. Rockafellar、Uryasev:Conditional Value-at-Risk for General Loss Distributions,作者托管稿为 2001 年版本,期刊发表于 2002 年。