快速熟悉torchdiffeq用法,从数理逻辑到完整案例【第一部分】

本系列文章板块规划

提示:以下内容仅为个人学习感悟,无法保证完全的正确和权威,大家酌情食用谢谢。
第一部分 torchdiffeq背后的数理逻辑
第二部分 torchdiffeq的基本用法
第三部分 trochdiffeq的升级用法
第四部分 torchdifffeq的案例和代码解析
第五部分 总结

第一部分的参考资料:
【1】关于数值方法如何求解(当解析方法不能被使用时):
https://tutorial.math.lamar.edu/Classes/DE/EulersMethod.aspx 欧拉方法
【2】关于NeuralODE和Resnet之间的联系:
https://zhuanlan.zhihu.com/p/77587163
https://www.jiqizhixin.com/articles/122302



torchdiffeq背后的数理逻辑

torchdiffeq 是一个针对PyTorch的库,它提供了用于解决常微分方程(ODEs)的求解器。这个库主要用于实现神经常微分方程(Neural Ordinary Differential Equations,或简称 Neural ODEs),这是一种深度学习模型,它在传统的残差网络(ResNet)基础上,将层间的映射视作连续的动态系统。

首先,我们来解释一下什么是ODEs。
ODE方程描述的是一个或多个函数及其导数之间的关系,依赖于单一的独立变量,而时间是最常见的独立变量。可以用以下公式来表述:
F ( t , y , d y d t , d 2 y d t 2 , … , d n y d t n ) = 0 F\left(t, y, \frac{dy}{dt}, \frac{d^2y}{dt^2}, \ldots, \frac{d^ny}{dt^n}\right) = 0 F(t,y,dtdy,dt2d2y,,dtndny)=0
在这个表达式中, y ( t ) y(t) y(t)即为我们想求解的函数, y ′ , y ′ ′ , … , y ( n ) y', y'', \ldots, y^{(n)} y,y′′,,y(n)为这个函数的一阶,二阶,直至n阶导数。可以这样理解,常微分方程即只包含单个自变量 t t t,未知函数 y y y 和未知函数的导数 y ( n ) y^{(n)} y(n) 的等式。
更常见的表示式为df(x)/dx = g(f(x), x)
d f ( t ) d x = g ( f ( x ) ) \frac{d\mathbf{f}(t)}{dx} = g(\mathbf{f}(x)) dxdf(t)=g(f(x))
这个表达式就是扩展成为NeuralODE的关键。

然后,我们来解释一下Neural ODEs的基本思想。实际上,对于让人头疼的微分方程,解析求解是一个很难的事情,因为我们需要数学表达式刚好就是能够套用解析求解的形式。更多的我们会采用数值求解的逼近法,知道初始值,给定一个步长,毕竟这个初始值附近的下一个值处的导数值,然后逐步逼近我们感兴趣的表达式。
其实神经网络本身就是一个大的函数逼近器。他是一个多层嵌套的函数,因为有多层嵌套的性质,所以可以使用链式法则传递梯度,传递的同时更新网络的参数。最终得到我们要求解的
最后我们介绍一下ResNET。
ResNet的特点在于引入了残差学习,当我们考虑ResNet的深度趋向无限大时,可以把ResNet的每一层看作时间上的一个无限小的步长,此时网络就变成了NeuralODE。
d h ( t ) d t = f ( h ( t ) , t , θ ) \frac{d\mathbf{h}(t)}{dt} = f(\mathbf{h}(t), t, \theta) dtdh(t)=f(h(t),t,θ)
相比起其他神经网络而言,Neural ODE保存的不是所有层的激活值,而是保存每一层的导数值,降低了内存成本。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值