Neural ODEs: breakdown of another deep learning breakthrough
常微分方程,一个栗子
d x d t + x = 1 \frac{dx}{dt}+x=1 dtdx+x=1
通用形式
d y d t = f ( t , y ) \frac{dy}{dt}=f(t,y) dtdy=f(t,y); y ( t 0 ) = y 0 y(t_0)=y_0 y(t0)=y0
y n + 1 = y n + f ( t n , y n ) ⋅ ( t n + 1 − t n ) y_{n+1} = y_n + f(t_n, y_n)\cdot(t_{n+1}-t_n) yn+1=yn+f(tn,yn)⋅(tn+1−tn)
神经ODE的主要思想:神经网络中的残差块链基本上是用欧拉方法求解的ODE
y n + 1 = y n + f ( t n , y n ) y_{n+1} = y_n + f(t_n, y_n) yn+1=yn+f(tn,yn)是
Rsenet
的残差连接
在这种情况下,t=0
就代指神经网络的第一层,x(0)
归一化输入
ODESolveNet
ODESolve是一个函数,提供ODE的解。
nn = Network(
Dense(...), # making some primary embedding
ODESolve(...), # "infinite-layer neural network"
Dense(...) # output layer
)
神经网络是一个可微函数,所以我们可以用基于梯度的优化例程来训练它。
如何在ODEsolve()
里后向传播
这里可以使用一个数据的trick
:伴随灵敏度方法(adjoint sensitivity method)
关于这个还不是很理解,欢迎评论区讨论
但是我们需要注意的是,这个方法目前还不能很好用于土壤水,
因为我们一般关注非稳态流
土壤水方程
∂ θ ∂ t = ∂ ∂ z [ K ( h ) ( 1 + ∂ h ∂ z ) ] \frac{\partial \theta}{\partial t}=\frac{\partial}{\partial z}[K(h)(1+\frac{\partial h}{\partial z})] ∂t∂θ=∂z∂[K(h)(1+∂z∂h)]
偏微分方程用以对非稳态流的数学描述,如是稳态流,上式变为常微分方程