Neural Ordinary Differential Equations

Abstract

我们引入了一种新的深度神经网络模型家族。我们没有指定一个离散的隐藏层序列,而是使用神经网络参数化隐藏状态的导数。该网络的输出是用一个黑盒微分方程求解器来计算的。这些连续深度模型具有恒定的内存成本,可以根据每个输入调整其评估策略,并可以明确地用数值精度换取速度。我们在连续深度剩余网络和连续时间潜变量模型中证明了这些特性。我们还构造了连续的归一化流,一个生成模型,可以通过最大似然进行训练,而不需要对数据维进行划分或排序。对于训练,我们展示了如何通过任何ODE求解器可伸缩地反向传播,而不访问其内部操作。这允许在更大的模型中对ode进行端到端训练。

1 Introduction

残差网络、循环神经网络解码器和正则化流等模型通过组合一系列到隐藏状态的转换来构建复杂的转换:
h t + 1 = h t + f ( θ t , h t ) (1) h_{t+1}=h_t+f(\theta_t,h_t)\tag{1} ht+1=ht+f(θt,ht)(1)其中 t ∈ { 1 , . . . , T } , h t ∈ R d t\in\{1,...,T\},h_t\in\mathbb R^d t{1,...,T},htRd,这些迭代更新可以看作是一个连续变换的欧拉离散化。
当我们添加更多的图层和采取更小的步骤时,会发生什么?在极限情况下,我们使用一个由神经网络指定的常微分方程(ODE)来参数化隐藏单元的连续动态:
d h ( t ) d t = f ( h ( t ) , t , θ ) (2) \frac{dh(t)}{dt}=f(h(t),t,\theta)\tag{2} dtdh(t)=f(h(t),t,θ)(2)从输入层 h ( 0 ) h(0) h(0),我们可以定义输出层 h ( T ) h(T) h(T)在T时刻上ODE初值问题的解,这个值可以通过黑盒微分方程求解器计算,它评估隐藏神经元动力学f 在任何需要的地方求解符合精度要求的解。图1对比了这两种方法。
图1
使用ODE求解器来定义和评估模型有几个好处:
Memory efficiency: 在第2节中,我们展示了如何计算关于任何ODE求解器的所有输入的标量值损失的梯度,而不通过求解器的操作反向传播。如果不存储任何中间数量的正向传递,我们就可以用恒定的内存成本作为深度的函数来训练我们的模型,这是训练深度模型的一个主要瓶颈。

Adaptive computation: 欧拉的方法可能是求解ode的最简单的方法。从那以后,高效和精确的ODE求解器已经发展了120多年。现代ODE求解器为近似误差的增长提供了保证,监测误差水平,并动态调整其评估策略,以达到所要求的精度水平。这使得评估模型的成本与问题的复杂性而变化。经过训练后,实时或低功耗应用程序的精度可以降低。

Scalable and invertible normalizing flows: 连续变换的一个意想不到的副作用是,变量公式的变化变得更容易计算。在第4节中,我们推导了这个结果,并利用它来构造一类新的可逆密度模型,它避免了规范化流的单个单元瓶颈,并且可以直接通过最大似然进行训练。

Continuous time-series models: 与需要离散观测和发射间隔的循环神经网络不同,连续定义的动态可以自然地合并在任意时间到达的数据。在第5节中,我们构建并演示了这样一个模型。

2 Reverse-mode automatic differentiation of ODE solutions(反向模式的自动微分ODE的解决方案)

训练连续深度网络的主要技术困难是通过ODE求解器执行反向模式微分(也称为反向传播)。通过前向传递的操作进行区分是很简单的,但会导致很高的内存成本,并引入额外的数值误差。

我们将ODE求解器视为一个黑盒子,并使用伴随灵敏度方法计算梯度(Pontryaginetal.,1962)。该方法通过求解第二个、增强了的时间向后(时间轴反向)的 ODE 来计算梯度,适用于所有的ODE求解器。这种方法与问题的大小成线性关系,内存成本低,并显式地控制数值误差。
考虑优化一个标量值损失函数 L ( ) L() L(),它的前向传播过程可以如下表示:
公式1

z ( t 1 ) z(t_1) z(t1)代表 t 1 t_1 t1时刻的隐藏状态,而当隐藏状态被连续化后, t 0 t_0 t0 t 1 t_1 t1时刻的中间隐藏状态的和就是等式中间部分的积分项。而整个前向过程可以用 ODE 求解器进行求解。

为了优化L,我们需要对θ求梯度。第一步就是要求L在每一个时刻对隐状态z(t)的梯度,这个量被称为伴随矩阵 a ( t ) = ∂ L / ∂ z ( t ) a(t)=∂L/∂z(t) a(t)=L/z(t)。它的动态过程被另一个 ODE 来求解,可以把这种瞬时性被看作链式法则:
d a ( t ) d t = − a ( t ) T ∂ f ( z ( t ) , θ , t ) ∂ z (4) \frac{da(t)}{dt}=-a(t)^T\frac{\partial f(z(t),\theta,t)}{\partial z}\tag{4} dtda(t)=a(t)Tzf(z(t),θ,t)(4)这样, 再调一次求解器就可以解出 ∂ L / ∂ z ( t 0 ) ∂L/∂z(t_0) L/z(t0)

这个求解器从初始值 ∂ L / ∂ z ( t 1 ) ∂L/∂z(t_1) L/z(t1)开始反向运行。一个复杂的问题是,解决这个ODE需要知道 z ( t ) z(t) z(t)沿其整个轨迹的值。然而,我们可以简单地从最终值 z ( t 1 ) z(t_1) z(t1)开始,将它的伴随 z ( t ) z(t) z(t)一起反向重新计算。
计算关于参数θ的梯度需要计算第三个积分,它同时取决于z(t)和a(t):
公式2
(4)和(5)中的 a ( t ) T ∂ f ∂ z a(t)^T\frac{\partial f}{\partial z} a(t)Tzf a ( t ) T ∂ f ∂ θ a(t)^T\frac{\partial f}{\partial \theta} a(t)Tθf的vector-Jacobian products 都可以通过 ODE solver 快速求解, 所有的积分解z,a和 ∂ L / ∂ θ ∂L/∂θ L/θ都可以通过一个 ODE solver 来求解,可以将它们组合成一个向量解 (增强的状态,augmented state)。算法1展示了如何构造必要的动态,并调用一个ODE求解器来一次计算所有的梯度。
图2
大多数ODE求解器都可以选择多次输出状态z(t)。当损失依赖于这些中间状态时,反向偏导数必须被分解成一个单独的解序列,在每对连续的输出时间之间有一个解(图2)。在每次观测时,按相应的偏导数 ∂ L / ∂ z ( t i ) ∂L/∂z(t_i) L/z(ti)方向调整。
Reverse-mode differentiation of an ODE
solution

由损失敏感度 ∂ L ∂ z ( t N ) \frac{\partial L}{\partial {z(t_N)}} z(tN)L调节伴随状态a(t), 然后再有伴随状态 a(t) 得到损失敏感度 ∂ L ∂ z ( t N ) \frac{\partial L}{\partial {z(t_N)}} z(tN)L。这是 ODE 反向的链式过程。至此,模拟了整个反向传播的过程

3 Replacing residual networks with ODEs for supervised learning

在本节中,我们将实验研究监督学习的神经ode的训练。

Software 为了从数值上解决ODE初值问题,我们使用了在LSODE和VODE中实现的隐式Adams方法,并通过scipy。集成包进行接口。作为一种隐式方法,它比龙格-库塔等显式方法有更好的保证,但需要在每一步都要求解一个非线性优化问题。这种设置使得通过集成器的直接反向传播变得困难。我们在Python的自动网格框架中实现了伴随灵敏度方法(Maclaurinetal.,2015)。在本节的实验中,我们使用张量流评估了GPU上的隐藏状态动力学及其导数,然后从FortranODE求解器中调用,从Python自动grad代码中调用。

Model Architectures 我们实验了一个小残差网络,该网络对输入进行两次降采样,然后应用6个标准残差块He等人(2016b),它们被ODE-Net变体中的ODESolve模块所取代。我们还测试了一个具有相同架构的网络,但梯度直接通过龙格-库塔积分器反向传播,称为RK-Net。表1显示了测试误差、参数数量和内存成本。L表示ResNet中的层数, L ~ \widetilde L L 是ODE求解器在单个向前传递中请求的函数计算数,可以解释为隐式的层数。我们发现ODE-Nets和RK-nets可以实现与ResNet几乎相同的性能。
在这里插入图片描述
Error Control in ODE-Nets ODE求解器可以近似地确保输出在真实解的给定容忍度范围内。更改此公差会改变网络的行为。我们首先验证了在图3a中确实可以控制错误。前向调用所花费的时间与函数评估的数量成正比(图3b),因此调整公差给了我们一个在精度和计算成本之间的权衡。人们可以进行高精度的训练,但在测试时会切换到较低的精度。
在这里插入图片描述
Network Depth目前尚不清楚如何定义ODE解决方案的“深度”。一个相关的数量是所需的隐藏状态动态计算的数量,这个细节委托给ODE求解器,并依赖于初始状态或输入。图3d显示,在整个训练过程中,功能评估的数量在训练过程中不断增加,这可能是为了适应模型不断增加的复杂性。

4 Continuous Normalizing Flows

离散化的方程(1)也出现在规范化流(Rezende和Mohamed,2015)和NICE框架(Dinh等人,2014)中。这些方法利用变量变化定理来计算样本通过双射函数 f f f 进行变换时概率的精确变化: z 1 = f ( z 0 ) ⟹ log ⁡ p ( z 1 ) = log ⁡ p ( z 0 ) − log ⁡ ∣ det ⁡ ∂ f ∂ z 0 ∣ \mathbf{z}_{1}=f\left(\mathbf{z}_{0}\right) \Longrightarrow \log p\left(\mathbf{z}_{1}\right)=\log p\left(\mathbf{z}_{0}\right)-\log \left|\operatorname{det} \frac{\partial f}{\partial \mathbf{z}_{0}}\right| z1=f(z0)logp(z1)=logp(z0)log detz0f
经典的正则化流模型, planar normalization flows的公式如下:
z ( t + 1 ) = z ( t ) + u h ( w ⊤ z ( t ) + b ) , log ⁡ p ( z ( t + 1 ) ) = log ⁡ p ( z ( t ) ) − log ⁡ ∣ 1 + u ⊤ ∂ h ∂ z ∣ \mathbf{z}(t+1)=\mathbf{z}(t)+u h\left(w^{\top} \mathbf{z}(t)+b\right), \quad \log p(\mathbf{z}(t+1))=\log p(\mathbf{z}(t))-\log \left|1+u^{\top} \frac{\partial h}{\partial \mathbf{z}}\right| z(t+1)=z(t)+uh(wz(t)+b),logp(z(t+1))=logp(z(t))log 1+uzh
使用变量代换公式的瓶颈是计算雅克比矩阵。它的计算复杂度要么是z维度的立方, 要么是隐藏单元数量的立方,最近的研究都是在NF模型的表达能力和计算复杂度做取舍。
令人惊讶的是,从一组离散的层移动到一个连续的变换,简化了规范化常数变化的计算。

定理1 变量瞬时变化定理
z ( t ) z(t) z(t) 是一个有限连续随机变量,概率 p ( z ( t ) ) p(z(t)) p(z(t)) 依赖于时间. 则 d z d t = f ( z ( t ) , t ) \frac{dz}{dt}=f(z(t),t) dtdz=f(z(t),t) z ( t ) z(t) z(t) 随时间连续变化的微分方程,假设 f f f 关于z一致 L i p s c h i t z Lipschitz Lipschitz 连续,关于 t t t 连续,那么对数概率密度的变化也遵循微分方程 ∂ log ⁡ p ( z ( t ) ) ∂ t = − tr ⁡ ( d f d z ( t ) ) (8) \frac{\partial \log p(\mathbf{z}(t))}{\partial t}=-\operatorname{tr}\left(\frac{d f}{d \mathbf{z}(t)}\right)\tag{8} tlogp(z(t))=tr(dz(t)df)(8)
p r o o f proof proof
为了证明这个定理,我们取了 l o g p ( z ( t ) ) logp(z(t)) logp(z(t)) 随时间的有限变化的无穷小极限。首先,我们表示 z z z ε ε ε 的时间变化的变换为 z ( t + ϵ ) = T ϵ ( z ( t ) ) (14) \mathbf z(t+\epsilon)=T_\epsilon(\mathbf z(t))\tag{14} z(t+ϵ)=Tϵ(z(t))(14)
我们假设 f f f z ( t ) z(t) z(t) 上是Lipschitz连续的,在t上是连续的,因此每个初值问题通过皮卡德存在性定理都有一个唯一解。我们还假设 z ( t ) z(t) z(t) 是有界的。这些条件表明 f , T ε f,T_ε f,Tε ∂ ∂ z T ε \frac{∂}{∂z}T_ε zTε 都是有界的。在下面,我们使用这些条件来交换极限和乘积。

我们利用用变量的离散变化公式表示微分方程 ∂ l o g p ( z ( t ) ) ∂ t \frac{∂logp(z(t))}{∂t} tlogp(z(t)),以及导数的定义:
tu
行列式的导数可以用雅可比公式表示,则有

行列式求导公式 d ∣ A ∣ d t = t r ( A ∗ d A d t ) \frac{d|A|}{dt}=tr(A^*\frac{dA}{dt}) dtdA=tr(AdtdA)

在这里插入图片描述 T ε T_ε Tε的泰勒级数展开式代替 T ε T_ε Tε并取极限,完成了证明。
在这里插入图片描述
与(6)的 l o g log log 计算不同, 本式只需要计算迹(trace)的操作。另外, 不像标准的NF模型, 本式不要求f是可逆的, 因为如果满足唯一性,那么整个转换自然就是可逆的。

应用变量瞬时变化定理,我们可以看一下planar normalization flows的连续模拟版本:
d z ( t ) d t = u h ( w ⊤ z ( t ) + b ) , ∂ log ⁡ p ( z ( t ) ) ∂ t = − u ⊤ ∂ h ∂ z ( t ) (9) \frac{d \mathbf{z}(t)}{d t}=u h\left(w^{\top} \mathbf{z}(t)+b\right), \quad \frac{\partial \log p(\mathbf{z}(t))}{\partial t}=-u^{\top} \frac{\partial h}{\partial \mathbf{z}(t)}\tag{9} dtdz(t)=uh(wz(t)+b),tlogp(z(t))=uz(t)h(9)
给定一个初始分布p(z(0)),我们可以从p(z(T))中采样,并通过求解这组ODE来评估其概率密度。

使用多个线性成本的隐藏单元

当det不是线性方程时, 迹的方程还是线性的, 并且满足 t r ( ∑ n J n = ∑ n t r ( J n ) ) tr(\sum_{n}J_n=\sum_ntr(J_n)) tr(nJn=ntr(Jn)) ,这样我们的方程就可以由一系列的求和得到, 概率密度的微分方程也是一个求和:
d z ( t ) d t = ∑ n = 1 M f n ( z ( t ) ) , d log ⁡ p ( z ( t ) ) d t = ∑ n = 1 M tr ⁡ ( ∂ f n ∂ z ) (10) \frac{d \mathbf{z}(t)}{d t}=\sum_{n=1}^{M} f_{n}(\mathbf{z}(t)), \quad \frac{d \log p(\mathbf{z}(t))}{d t}=\sum_{n=1}^{M} \operatorname{tr}\left(\frac{\partial f_{n}}{\partial \mathbf{z}}\right)\tag{10} dtdz(t)=n=1Mfn(z(t)),dtdlogp(z(t))=n=1Mtr(zfn)(10)这意味着我们可以很简便的评估多隐藏单元的流模型,其成本仅与隐藏单元M的数量呈线性关系。使用标准的NF模型评估这种“宽”层的成本是 O ( M 3 ) O(M^3) O(M3),这意味着标准NF体系结构的多个层只使用单个隐藏单元.

依赖于时间的动态方程

我们可以将流的参数指定为t的函数,使微分方程 f ( z ( t ) , t ) f(z(t),t) f(z(t),t) t t t 而变化。这种参数化的方法是一种超网络. 我们还为每个隐藏层引入了门机制, d z d t = ∑ n σ n ( t ) f n ( Z ) \frac{d \mathbf{z}}{d t}=\sum_{n} \sigma_{n}(t) f_{n}(\mathbf{Z}) dtdz=nσn(t)fn(Z) , σ n ( t ) ∈ ( 0 , 1 ) \sigma_n(t)\in (0,1) σn(t)(0,1)是一个神经网络, 可以学习到何时使用fn. 我们把该模型称之为连续正则化流(CNF, continuous normalizing flows)

4.1 CNF试验

我们首先比较连续的和离散的planar规范化流在学习一个已知的分布样本。我们证明了一个具有M个隐藏单元的连续 planar CNF至少可以与一个具有K层(M = K)的离散 planar NF具有同样的拟合能力,某些情况下CNF的拟合能力甚至更强。

拟合概率密度
设置一个前述的CNF, 用adam优化器训练10000个step. 对应的NF使用RMSprop训练500000个step. 此任务中损失函数为 K L ( q ( x ) ∣ ∣ p ( x ) ) KL (q(x)||p(x)) KL(q(x)∣∣p(x)) , 最小化这个损失函数, 来用 q ( x ) q(x) q(x) 拟合目标概率分布 p ( x ) p(x) p(x) . 图4表明, CNF可以得到更低的损失.
在这里插入图片描述
极大似然训练

CNF一个有用的特性是: 计算反向转换和正向的成本差不多, 这一点是NF模型做不到的. 这样在用CNF模型做概率密度估计任务时, 我们可以通过极大似然估计来进行训练 也就是最大化 E p ( x ) [ l o g ( q ( x ) ) ] \mathbb E_{p(x)}[log(q(x))] Ep(x)[log(q(x))] ,其中 q q q 是变量代换之后的函数,然后反向转换CNF来从 q ( x ) q(x) q(x) 中进行采样

对于这个实验, 我们使用64个隐藏单元的CNF和64层的NF来进行对比,图5展示了最终的训练结果. 从最初的高斯分布, 到最终学到的分布, 每一个图代表时间t的某一步. 有趣的是: 为了拟合两个圆圈, CNF把planar 流 进行了旋转, 这样粒子会均分到两个圆中. 跟 CNF的平滑可解释相对的是, NF模型比较反直觉, 并且很难拟合双月牙的概率分布(见图5.b)
tu

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 神经常微分方程(Neural Ordinary Differential Equations)是一种新兴的深度学习模型,它将神经网络与常微分方程相结合,可以用来建模时间序列数据和动态系统。相比于传统的神经网络,神经常微分方程可以更好地处理长期依赖和非线性动态系统,并且具有更好的可解释性。该模型已经在图像处理、自然语言处理和物理学等领域取得了很好的效果。 ### 回答2: 神经普通微分方程(neural ordinary differential equations,N-ODEs)是近年来机器学习领域中受到广泛关注的一种新兴模型。N-ODEs 将神经网络扩展为连续时间模型,通过时间连续的方式对神经网络进行了建模,从而在某些应用领域中表现出了很强的优势。 相对于离散时间模型,连续时间模型更符合许多现实世界问题的本质特征,尤其是一些物理系统模型和理论计算模型中。 然而,一般的微分方程模型很难适应复杂的高维数据和非线性问题的建模,在这种情况下,神经网络作为一种现代的高效模型可以解决这种问题。于是N-ODEs的提出,使得神经网络可以被用来解决更多不同类型的问题。 N-ODEs 的核心思想在于将神经网络转换为一个具有时间特性的连续时间模型,即在神经网络连接权重的基础上引入时间变量t。这使得神经网络每个神经元的输入输出和权重的调整都与时间有关。在连续时间模型中,每个神经元都被表示为一个微分方程,而整个神经网络则被表示为多个微分方程联立。这样就将神经网络的拓扑结构和连续时间特性融合在一起。这使得N-ODEs在建模一些非线性、高维的问题时具有比传统神经网络更好的表现力和泛化能力。 N-ODEs 的引入为解决复杂问题提供了一个新的思路,也为神经网络和微分方程研究提供了一个新的方向。它在一些应用领域的表现,如物理模型场景下的建模,证明了它的潜力和可行性。但它也存在一些缺点,如计算效率较低、训练模型的复杂度较高等。因此,继续在N-ODEs理论和应用的相关研究中深入探讨N-ODEs的优化和推广,展望N-ODEs成为更加强大的建模工具。 ### 回答3: 神经常微分方程(Neural Ordinary Differential Equations,简称 NODEs)是一种用于建模复杂神经网络的方法。与传统的深度神经网络不同,NODEs使用常微分方程(Ordinary Differential Equations,简称ODEs)来描述神经网络内部的动力学过程和状态变化。 NODEs的基本思想是将一个复杂的神经网络模型转化为一个连续的、非线性的微分方程,通过求解微分方程得到神经网络的输出。这种方法的优点是能够减少网络的参数数量,提高模型的稳定性和泛化性能。NODEs还能够对数据进行连续时间处理,可以通过微分方程来模拟神经网络的动态过程,更好地理解神经网络的内在变化。 NODEs的理论基础是 ODE神经网络,ODE神经网络是一个使用ODE来表达层之间非线性映射的深度神经网络。将每个神经网络层的输入输出视为ODE函数的参数和值,在通过求解ODE函数的过程中获得输出值。相比于传统的神经网络结构,ODE神经网络能够更好的处理时间序列数据,同时具有更好的可解释性。 NODEs与ODE神经网络的不同在于,NODEs的输出不仅仅是一个函数值,而是整个ODE函数本身。这样,NODEs能够将每个神经网络层的输入输出对应为ODE函数的初始条件和解。通过不断求解ODE模型,得到的连续函数可以方便地应用于各种实际问题,从而极大地扩展了神经网络在科学研究和工程应用方面的应用范围。 总的来说,NODEs代表了对神经网络模型的一种新的理解和描述方法,它不断拓展着神经网络在理论研究和应用领域的应用空间。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值