1、What is ODE
ODE是一种数学工具,常用来对一些动力系统建模。比如牛顿第二运动定理
物体在力的作用下的位移s 和 时间 t 的关系,可以表示为
For example Data Modelling:
假设我们想预测一个城市未来的人口变化,可以采用以下两种建模方法:机器学习建模和ODE建模。
Machine Learning Modelling
在机器学习框架下,这个问题可以被视为一个回归任务。目标是找到一个函数 f,使得:,
损失函数(Loss Function)为:
使用梯度下降来优化,分别求出对 ,:
更新规则为( 是学习率):
ODE Modelling
在ODE中是寻找的是一个 描述系统状态随时间变化的函数。于是将 f:x→y 的问题,转换为一个微分方程问题,
其中, 是人口随时间的变化率。
例如,根据已知的洛吉斯蒂模型,人口随时间的变化率 g 可以表示为
其中, 是时间 时的总人口; 是增长率(与出生率、死亡率和迁移率相关); 是人口的承载容量。
该方程有解析解
到这个时候就转换成了一个求初值问题(initial value),带入 ,假设 , 是固定常数有。
直接得到想要的
通过以上例子可以发现,ODE Modelling 相比于模式匹配来说,实际上是一种更为精准的建模方式
但是在上述例子中,在大多数情况下,几乎没有太多的先验能让你精准建模,这直接导致了ODE Modelling 几乎不能产生作用。总结如下:
- 不能精准的建模
- 很难算出解析解
在这个情况下,论文的作者提出了以下方法来解决:
- 使用 Neural Network 来对 ODE Modelling 进行建模。
- 同时使用数值求解方法来计算 每个时间点的 具体数值
2、数值求解器
由于数值求解有很多种方法,在这里只介绍最经典的欧拉方法(Euler Method)
比如,既然知道了 在 时刻的变化率 ,我们就可以根据这个斜率,推进一个小时间步长 ,计算下一个时刻的值。欧拉方法的公式为:
3、Neural Ordinary Differential Equation
Neural ODE 通过引入神经网络来模拟原FFN网络中隐藏层状态,对传统 ODE 求解过程进行了扩展。
ㅤ | ㅤ |
上图左侧是前馈神经网络 (FFN) ,右侧是N-ODE
前向传播过程:
前馈神经网络的前向传播基于离散层,而 Neural ODE 通过时间步的连续变化进行计算。
- 在初始时刻,输入被映射到初始隐藏状态 。
- 通过数值方法(如欧拉法)计算得到在不同时间步下的隐藏状态
反向传播过程:
在 Neural ODE 中,反向传播通过伴随方法(Adjoint Sensitivity Method)计算梯度。
- 首先定义 时刻的 损失对系统状态的梯度 为伴随变量
- 然后通过推导得到伴随方程
通过数值逆向求解该方程,可以计算出模型参数的梯度:
最终通过梯度下降更新参数:
Liquid time-constant Network
1、与N-ODE 网络的差别
其Loss Function:
看成是回归任务,可以使用线性模型来进行数据建模。即找到一个函数 ,有目标函数:
Machine Learning Modelling
1. 定义增广伴随变量:
其中:
2. 推导增广伴随方程:
对于增广系统,伴随方程为:
其中,
这导致分量化的伴随方程为:
3. 积分得到参数梯度:
关注 ,即 :
设定边界条件:
- 在终点时刻 ,由于损失函数 通常仅依赖于最终状态 ,我们设定 。
因此:
但由于伴随方程是从 向 反向积分的,这里的负号实际上被积分方向所吸收,因此我们最终得到: