神经微分方程

Jake(讨论 | 贡献)2026年8月18日 (二) 15:24的版本

神经微分方程(Neural Differential Equations)是一类将神经网络与微分方程相结合的模型。其典型形式是用神经网络表示动态系统中的未知函数,例如状态变化率:

[math]\displaystyle{ \frac{dz(t)}{dt}=f_\theta(z(t),t) }[/math]

其中,[math]\displaystyle{ z(t) }[/math] 表示系统在时间 [math]\displaystyle{ t }[/math] 的状态,[math]\displaystyle{ f_\theta }[/math] 是由神经网络参数化的函数,[math]\displaystyle{ \theta }[/math] 为可学习参数。狭义上,神经微分方程常指 神经常微分方程(Neural Ordinary Differential Equations, Neural ODEs);广义上也可包括神经随机微分方程、神经控制微分方程和通用微分方程等模型。

研究背景

神经微分方程的发展与深度神经网络的加深过程密切相关。根据通用逼近定理,足够宽的单隐层神经网络理论上可以逼近连续函数,但在实际深度学习中,增加网络深度通常比单纯增加宽度更有效。更深的网络能够逐层提取抽象特征,在图像识别、自然语言处理等任务中表现出更强的表达能力。

深层网络的发展经历了从 AlexNet、VGG、GoogLeNet 到 ResNet 的演进。AlexNet 在 2012 年 ImageNet 竞赛中使用 8 层网络取得显著性能提升;随后,VGG 和 GoogLeNet 进一步加深网络结构;ResNet 则通过残差连接成功训练了百层以上网络,并在 2015 年 ImageNet 竞赛中取得领先结果。

然而,简单堆叠网络层并不总能提升性能。随着层数增加,网络可能出现梯度消失、梯度爆炸和退化问题。其中,退化问题指更深网络在训练集上的误差反而升高,说明问题并非单纯由过拟合造成,而是与优化难度有关。

 
神经网络随时间发展层数增加错误降低

(时间顺序为从右到左,柱状图为模型在ILSVRC测试上的误差,折线图为网络层数)

残差神经网络

残差神经网络(Residual Neural Network, ResNet)由何恺明、张祥雨、任少卿、孙剑等人提出,是深度网络结构发展中的重要模型。ResNet 的关键设计是残差块(Residual Block)和快捷连接(skip connection)。在残差块中,输入不仅经过若干网络层变换,也会通过快捷连接直接加到输出上:

[math]\displaystyle{ \hat y=F(x)+x }[/math]

若目标输出为 [math]\displaystyle{ y }[/math],则残差分支需要学习的是:

[math]\displaystyle{ F(x)=y-x }[/math]

这意味着新加入的网络层不必直接学习完整映射,而是学习输入与目标之间的差值,即"残差"。这种结构改善了信息和梯度在深层网络中的传播,使得训练超深神经网络成为可能。

 
残差网络模块示意图

(对比普通神经网络层与残差块结构,残差块结构输入 [math]\displaystyle{ x }[/math] 通过快捷连接直接加到输出端)

ResNet 的意义不仅在于提升了图像识别性能,更在于提供了一种新的网络设计范式。后续许多模型,如 DenseNet、Inception-ResNet 等,都继承或发展了跨层连接的思想。

从 ResNet 到 Neural ODE

Neural ODE 可以看作残差网络从离散层结构到连续时间结构的一种推广。对 ResNet 的第 [math]\displaystyle{ n }[/math] 层输出,可写为:

[math]\displaystyle{ x_n=x_{n-1}+F(x_{n-1}) }[/math]

移项得到:

[math]\displaystyle{ F(x_{n-1})=x_n-x_{n-1} }[/math]

这一形式类似于离散导数。若引入时间步长 [math]\displaystyle{ h }[/math],则有:

[math]\displaystyle{ f(x(t),t)=\frac{x(t+h)-x(t)}{h} }[/math]

当 [math]\displaystyle{ h\to0 }[/math] 时,上式趋近于连续时间导数:

[math]\displaystyle{ \frac{dx(t)}{dt}=f(x(t),t) }[/math]

因此,残差网络的层间更新可以被理解为常微分方程的离散近似。Neural ODE 则进一步将离散层数推广为连续时间变量,用微分方程的解轨迹表示隐藏状态从输入到输出的变化过程。

 
由残差网络到 Neural ODE 的连续化过程

数学形式

Neural ODE 的基本形式为:

[math]\displaystyle{ \frac{dz(t)}{dt}=f_\theta(z(t),t),\qquad z(t_0)=z_0 }[/math]

其中,[math]\displaystyle{ z_0 }[/math] 是初始状态,[math]\displaystyle{ f_\theta }[/math] 是神经网络表示的动力学函数。给定终止时间 [math]\displaystyle{ T }[/math] 后,模型输出可表示为:

[math]\displaystyle{ z(T)=z_0+\int_0^T f_\theta(z(t),t)\,dt }[/math]

在监督学习任务中,模型通过调整参数 [math]\displaystyle{ \theta }[/math],使终止状态 [math]\displaystyle{ z(T) }[/math] 或其进一步变换后的输出尽可能接近真实标签:

[math]\displaystyle{ \min_\theta \mathcal L(z(T),y) }[/math]

因此,Neural ODE 的训练可以理解为一个带动力学约束的优化问题。

求解方法

Neural ODE 的前向传播需要调用 ODE 求解器。常见数值方法包括欧拉法、中点法和 Runge-Kutta 法。欧拉法形式简单,但精度较低;中点法通过估计中间点斜率提高精度;四阶 Runge-Kutta 法通过多次估计斜率并加权平均,通常具有更好的精度和稳定性。

在训练阶段,还需要计算损失函数相对于模型参数的梯度。Neural ODE 常使用伴随方法(adjoint method)进行反向传播。该方法通过引入伴随变量,从终止时间反向求解梯度,避免保存所有中间状态,从而降低内存开销。其基本思想是:先正向求解状态轨迹,再反向计算终态损失对各时间点状态和参数的影响。

从优化角度看,Neural ODE 也可与最优控制问题联系起来。状态方程描述系统如何演化,损失函数对应优化目标,模型参数或控制变量则决定系统轨迹。通过拉格朗日乘子、Hamiltonian 或伴随方程,可以将动态约束下的优化问题转化为可求解的梯度问题。

监督学习中的应用

在监督学习中,Neural ODE 将输入样本视为初始状态 [math]\displaystyle{ z_0 }[/math],通过连续时间动力系统将其变换为终止状态 [math]\displaystyle{ z(T) }[/math],再用于分类或回归。与传统神经网络固定层数的前馈计算不同,Neural ODE 的变换过程由 ODE 求解器完成,计算步数可以根据求解精度自适应调整。

这种建模方式适合将神经网络解释为连续变换过程,也适合需要在精度和计算量之间动态折中的场景。

时间序列预测中的应用

Neural ODE 适合处理连续时间序列,尤其是不规则采样数据。与普通序列模型不同,Neural ODE 不要求数据严格按照固定时间间隔排列,而是可以在任意给定时间点上求解状态。

在时间序列预测中,常见做法是将观测序列编码为潜在初始状态,再通过 ODE 求解器在潜空间中生成未来轨迹。这类模型通常称为 Latent ODE。其基本结构包括:

  1. 使用 RNN 或 GRU 编码器读取已观测时间序列;
  2. 根据编码结果估计潜变量初始状态 [math]\displaystyle{ z_0 }[/math];
  3. 使用 ODE 求解器生成潜空间轨迹;
  4.  
    Neural ODE 拟合时间序列状态点
    通过解码器将潜状态映射回观测空间,得到未来预测。
 
Latent ODE 时间序列预测结构

(上图为解轨迹经过多个观测时间点的过程)

(上图为 RNN 编码器、潜变量初始状态、ODE 求解器和解码器组成的预测流程)

Latent ODE 的优势在于能够在连续时间上建模隐藏状态演化,并对未来时间点进行外推预测。但在长时间预测中,误差会随积分过程不断累积,尤其对于混沌系统或高维复杂系统,长期预测通常较为困难。[math]\displaystyle{ f_\theta }[/math]

优势

  • 连续时间表示:Neural ODE 以微分方程描述隐藏状态的变化,而不是以固定层数描述状态更新。该形式适用于状态随时间连续演化的问题。
  • 时间点选择灵活:模型解可以在任意时间点求值,不要求输入序列具有固定采样间隔。因此,它可用于不规则采样、缺失时间点或观测间隔不一致的时间序列。
  • 求解精度可调:ODE 求解器可通过步长、阶数和误差容忍度控制近似精度。较高精度通常对应更多函数评估,较低精度则可减少计算量。
  • 参数共享形式明确:在标准 Neural ODE 中,同一个动力学函数 [math]\displaystyle{ f_\theta }[/math] 在连续时间区间内反复使用。与每层参数独立的深层网络相比,这种结构具有连续时间上的参数共享特征。
  • 适合潜空间建模:Latent ODE 将观测序列编码为潜变量初始状态,再由 ODE 求解器生成潜空间轨迹。该形式常用于部分观测、带噪声观测和不规则时间序列。
  • 可结合已有方程:在机理已知但不完整的场景中,神经网络可用于表示微分方程中的未知项。由此形成的混合模型常见于科学机器学习和动力系统辨识。
  • 便于轨迹分析:Neural ODE 的输出是连续轨迹,可从向量场、相空间、稳定性和积分路径等角度进行分析。这一点与传统动力系统的分析语言较为接近。

局限性

  • 计算开销:一次前向传播通常需要多次计算 [math]\displaystyle{ f_\theta }[/math]。时间区间较长、状态维度较高或误差容忍度较严格时,函数评估次数会增加。
  • 求解器依赖:训练结果与 ODE 求解器、步长策略和误差容忍度有关。对于刚性方程或变化剧烈的向量场,求解过程可能变慢或不稳定。
  • 梯度计算误差:伴随方法可降低内存占用,但需要反向求解伴随方程。数值误差、反向积分误差和求解器设置都会影响梯度质量。
  • 长期预测限制:Neural ODE 学到的是近似动力学。对于混沌系统或分布外状态,初值误差和模型误差会随积分时间累积,长期轨迹可能偏离真实系统。
  • 表达形式受限:标准 Neural ODE 产生连续状态流。若任务包含明显的离散跳变、维度突变或拓扑变化,普通 Neural ODE 可能需要额外结构,例如增强状态空间或事件机制。
  • 调参复杂:模型结构、积分区间、求解器类型、误差容忍度、正则化项和训练损失都会影响结果。调试过程通常同时涉及神经网络训练和数值微分方程求解。
  • 适用范围有限:在规则采样、静态分类或短序列任务中,ResNet、RNN 或 Transformer 等模型常常更直接。Neural ODE 的使用价值主要体现在连续时间、不规则采样和动力系统相关问题中。

总结

神经微分方程为深度学习提供了一种连续时间建模框架。它从残差网络的离散层更新出发,将神经网络状态变化表示为微分方程的解轨迹。该方法在监督学习、时间序列预测和动力系统建模中具有重要价值,也为科学机器学习中"机理模型 + 数据驱动模型"的结合提供了有效途径。不过,Neural ODE 的实际应用仍受计算效率、数值稳定性和长期预测误差等因素限制。

参考文献

  1. Chen, R. T. Q., Rubanova, Y., Bettencourt, J., & Duvenaud, D. (2018). Neural Ordinary Differential Equations. NeurIPS.
  2. He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep Residual Learning for Image Recognition. CVPR.
  3. Rubanova, Y., Chen, R. T. Q., & Duvenaud, D. (2019). Latent ODEs for Irregularly-Sampled Time Series. NeurIPS.
  4. Rackauckas, C. et al. (2020). Universal Differential Equations for Scientific Machine Learning. arXiv.