传统的参数化微分方程是特例,残差网络和循环网络等很多流行的神经网络架构呈现离散化。神经微分方程能够提供高容量的函数近似,在模型空间上表现出强先验,有能力处理不规则数据,还具有很高的内存效率。
神经微分方程尤其适用于解决物理、金融等领域的生成问题、动力学系统和时间序列问题,因此现代机器学习和传统数学建模中都乐于使用它。
近日,一篇专门探讨神经微分方程的博士论文《 On Neural Differential Equations》吸引了领域内研究者的注意,谷歌 AI 负责人、知名学者 Jeff Dean 也点赞推荐。这篇论文的 examiner 甚至褒赞它为「神经微分方程的教科书」。
论文作者为牛津大学数学研究所的博士生 Patrick Kidger,他的主要研究兴趣在于神经微分方程以及更广泛的深度学习和时间序列。他希望这篇论文可以吸引到任何对深度学习与动力学系统结合感兴趣的读者,并希望为当前的 SOTA 研究提供有益的参考。
论文地址:https://arxiv.org/pdf/2202.02435.pdf
这篇博士论文的主要内容包括如下:
神经常微分方程(neural ordinary diffeqs):用于学习物理系统,作为离散架构的连续时间限制,包括对可表达性的理论结果;
神经受控微分方程(neural controlled diffeqs):用于建模时间序列函数、处理不规则数据;
神经随机微分方程(neural stochastic diffeqs):用于从复杂的高维随机动态中采样;
数值法(numerical methods):一类新的可逆微分方程求解器或布朗重建(Brownian reconstruction)问题。
此外,这篇论文还涉及了其他一些主题,比如用于动力学系统的符号回归(如通过正则化演化)、深度隐式模型(如深度均衡模型、可微优化)。
在回答网友的提问「为什么神经微分方程如此重要」时,作者表示,「神经微分方程将当前使用的两种主流建模方法——神经网络和微分方程结合在一起,为我们提供了很多在神经网络和微分方程中使用得很好的理论,并在物理、金融、时间序列和生成建模等领域获得了直接的实际应用。」
机器之心对该论文的核心内容进行了简要介绍。
论文概览
阅读这篇论文需要掌握的预备知识包括常微分方程(ODE)和深度学习的基础知识。论文中归纳神经微分方程的 4 个主要应用为:
物理建模;
时间序列;
生成式建模;
一种开发深度学习模型的策略:取适当的微分方程并将其离散化。
神经微分方程提供了一种两全其美的方法。类似于神经网络的结构提供了高容量的函数近似和易于训练的性能。类似于微分方程的结构则通过易于理解和久经考验的理论文献为模型空间、内存效率和理论理解提供了强有力的先验知识。相对于经典微分方程理论,神经微分方程本质上具有前所未有的建模能力。相对于现代深度学习,神经微分方程提供了一个关于「什么是好的模型」的连贯理论。
此外,该论文从历史演变的角度阐述了神经微分方程诞生的思路演变过程。
神经常微分方程
目前最常见的神经微分方程是一种神经常微分方程(neural ODE):
通常这个方程需要考虑两方面的问题:(1) 方程解是否存在且唯一;(2) 评估与训练。
与非微分方程的模型相比,这里存在两个额外的问题:
需要获得该微分方程的数值解;
ODEnet 的反向传播,即通过解常微分方程直接把梯度θ求出来。
现在已经有标准方法和工具可以解决这两个问题,使得研究者能专注于构建模型架构本身的任务。
神经常微分方程的应用主要包括以下几方面:
图像分类;
带有归纳偏置的物理建模;
连续归一化流;
潜在 ODE;
残差网络。
论文中详细讲解了几种参数化选择,包括神经架构、非自主性和增强,并对比阐述了非增强型神经常微分方程和增强型神经常微分方程的近似属性。
神经受控微分方程
第三章论文从循环神经网络的连续时间限制的角度介绍了神经受控微分方程。这对于研究 RNN 或时间序列的人来说非常有用;也适合路径理论、控制理论或强化学习的研究者阅读。
这一章论文首先介绍了受控微分方程(CDE)、神经矢量场、求解 CDE、正则时间序列的应用,然后讨论并总结了神经 CDE 的几个优点。
论文中归纳神经 CDE 的几种应用包括:不规则时间序列、RNN 和离散神经 CDE、长时间序列和粗糙微分方程(rough differential equations)、训练神经 SDE。
在理论属性方面,该论文讲解了通用近似、与 ODE 模型的比较、不变性几方面的理论。在参数化选择部分,论文介绍了神经架构与门控程序、状态 - 控制 - 矢量场相互作用两个方面。最后该论文从理论条件、插值点的选择、实际应用案例几方面讲解了插值方案的内容。
神经随机微分方程
本章共分为 6 个小节,主要包括随机微分方程的介绍、结构、训练标准、参数选择、示例展示以及评论。
随机微分方程(SDE)已广泛应用于模拟现实世界的随机现象,例如粒子系统 、金融市场、人口动态和遗传学 。它们是常微分方程 (ODE) 的自然扩展,用于对在连续时间中受不确定性影响的系统进行建模。
SDE 的动力学由一个确定性项和一个随机项组成,其形式如下:
SDE 的理论构建:SDE 是在理论基础上构建的,而且通常相对简单。一种通用且直接的方法是固定一个常数矩阵 σ,并将σ ◦ d_w(t) 添加到 ODE 模型中。
校准 SDE:一旦选择 SDE 模型后,必须根据实际数据校准模型参数,可以通过以下方式来优化:
示例展示
布朗运动作为最简单的示例,考虑(单变量)布朗运动样本的数据集,初始条件为 Uniform[-1, 1]。数据集的每个元素都是沿单个布朗样本路径的时间序列观察到的。研究者训练了一个小的 SDE-GAN 来匹配初始条件的分布和时间演化样本的分布。
如图 4.3 所示,布朗运动可能看起来非常简单,但它突出了一类时间序列,这几乎是不可能用潜在 ODE 进行学习的(第 2.2.4 节)。布朗运动代表纯扩散,而潜在 ODE 代表纯漂移。
神经微分方程的数值解
本章共分为 7 个小节,主要内容包括通过 ODES 进行反向传播、通过 CDE 和 SDE 进行反向传播、数值求解器、实用技巧、布朗运动的数值模拟、应用软件以及评论。
训练神经微分方程意味着通过微分方程的解进行反向传播,通过 ODE 进行微分的方法有三种:离散后优化 – 此类方法内存效率低,但准确且快速;先优化再离散 – 此类方法内存效率高,但速度有点慢;可逆 ODE 求解器 – 此类方法内存高效且准确,但速度稍慢。一般来说,先离散再优化是首选方法。但是从内存限制来讲,可逆 ODE 求解器是最佳选择,如果前两者都不合适,那么就采用先优化后离散的方法,但这类方法通常是最不受欢迎的。
接下来文章介绍了更普遍的通过 CDE 和 SDE 进行反向传播。
先离散后优化:这与 ODE 示例完全相同——只需通过受控 / 随机微分方程求解器的内部操作进行微分,通常使用在自微分框架中编写的求解器。
CDE 的先优化后离散:这类方法有两种,可以为 CDE 构建连续伴随(continuous adjoint)方法。一种是将 CDE 简化为第 3 章中的 ODE,然后对 ODE 应用连续伴随方法。还有一种是构建一个时间倒退(backwards-in-time)的 CDE,然后通过简化为 ODE 或其他方式,以任何需要的方式进行数值求解。
可逆微分方程求解器:如第 3 章所述,CDE 可以简化为 ODE,并且相应地可以应用于任何可逆 ODE 求解器。同时 SDE 有一个已知的可逆求解器,即可逆 Heun 方法。
数值求解器
神经网络表示非结构化向量场,这意味着许多更专业的微分方程求解器(为任何特定方程开发)都不适用,我们必须依赖通用求解器。
在通用求解器中,论文主要介绍了显式 Runge-Kutta 求解器,特别是 ODE 和 CDE,它们是一个流行的数值求解器家族,每种求解器都需要遵循通用原则。
除了通用求解器,在可逆求解器中,可逆求解器的反向传播如下表 1 所示。在可逆求解器中,需要局部前向来构建计算图,之后通过该计算图计算向量 - 雅可比积。
软件
用于神经微分方程的数值求解和训练的软件包目前已经进行了标准化,文中提供了几种选择供读者使用:
在 JAX 生态系统 [Bra+18] 的 Diffrax(第一个链接);在 PyTorch 生态系统 [Pas+19] 中的 torchdiffeq、torchcde 和 torchsde 系列库(2-5 链接);在 Julia [Bez+17] 生态系统中的 DifferentialEquations.jl(最后一个链接):
https://github.com/patrick-kidger/diffrax
https://github.com/rtqichen/torchdiffeq
https://github.com/patrick-kidger/torchcde
https://github.com/google-research/torchsde
https://github.com/DiffEqML/torchdyn
https://github.com/SciML/DifferentialEquations.jl
未来工作
在神经 ODE 方面,每年都会有数千篇论文,还有研究将非神经 ODE 应用于科学、金融、经济学等领域。相应地,目前比较重要的工作是将神经 ODE 应用于迄今为止仅应用非神经 ODE 的许多任务。
在神经 CDE 和 SDE 方面,神经 CDE 和神经 SDE 更新得比较快,但技术细节还需要完善:研究者需要找到向量场的表达选择,并确定如何有效地训练这些模型。与神经 ODE 一样,未来的另一个研究方向是它们在实际中的应用,或者如何将它们与非神经 CDE、SDE 相结合。
在神经 PDE 方面,例如,一个卷积网络大致相当于一个抛物型 PDE 离散化。[Li+20b; Li+20c; Li+21] 研究从傅里叶神经算子考虑,这可能是目前最成熟的接近神经 PDE 的理论研究。[SLG21] 中给出了神经随机偏微分方程的一些初步思考。在实践中,关于神经 PDE 的许多想法还尚未进行融合。但这代表了神经微分方程领域的一个主要研究方向。
更多细节内容请参考论文原文。
参考链接:
https://www.maths.ox.ac.uk/people/patrick.kidger
https://www.reddit.com/r/MachineLearning/comments/snmtzn/r_phd_thesis_on_neural_differential_equations/