Neural ODE introduction

Neural ODE和Resnet有很多类似之处,两者的表达式非常相似,首先看一下resnet的表达式:
h t + 1 = h t + f ( h t , θ t ) h_{t+1} = h_{t}+f(h_{t},\theta_{t}) ht+1=ht+f(ht,θt)
当我们增加层数,并且逐渐缩短步长,网络层将趋于连续。我们使用由神经网络指定的常微分方程 (ODE) 参数化隐藏单元的连续过程:
d h ( t ) d t = f ( h ( t ) , t , θ ) \frac{dh(t)}{dt}=f(h(t),t,\theta) dtdh(t)=f(h(t),t,θ)
因此当我们给定一个初值 h ( 0 ) h(0) h(0),就会得到一个微分方程的解 h ( T ) h(T) h(T)。它代表了隐藏状态随时间变化的序列,若能得出该常微分方程在时刻 T T T的数值解,那么就相当于完成了前向传播。这样,神经网络就变成了一个常微分动力系统,它的训练和预测都可以归结为ODE的求解问题。这种连续化表示在时间序列分析,交通预测会有更精准的表征,因此在适当的场景我们可以利用ode神经网络去替换resnet。
他有以下优势:
1.内存优化
对于Neural ODE来说,若直接通过积分器来做反向传播,则需要对一个积分求微分,内存开销会很大,且计算的误差会逐渐累加,因此,作者采用伴随灵敏度方法(adjoint sensitivity method) 来计算ODE的梯度,该方法将梯度的计算归结为解一个ODE,该ODE能够简单地调用ODE Solver求解。值得注意的是,如果让参数依赖于时间,那参数就不是一系列离散的值了,而是一个连续的高维函数。
2.自适应计算
在评估或训练过程中,通过显式地改变数值积分的精度,我们可以自由地权衡模型的速度和精度,比如,我们可以花更多的时间去训练一个高精度的模型,而在评估预测时降低精度以提高系统的响应速度。

你可能感兴趣的:(机器学习,深度学习,人工智能)