![7a72dbdcae241878c9e768b8390b6443.gif](https://i-blog.csdnimg.cn/blog_migrate/a7093c5d0fd4653070621bf4e25ee94c.gif)
图:可视化的神经网络常微分方程学习动力系统
在本文中,我将尝试简要介绍一下这篇论文的重要性,但我将强调实际应用,以及我们如何应用这种需要在应用程序中应用各种神经网络。
原标题 | Neural ODEs: breakdown of another deep learning breakthrough
作 者 | Alexandr Honchar
翻 译 | had_in(电子科技大学)、HERAT(中山大学)、王鑫雨(山东科技大学)
编 辑 | Pita
大家好!如果你正在读这篇文章,意味着你一直留意着AI前沿技术。今天所要谈及的话题来自于NIPS2018,而且这篇文章还是NIPS2018会议的最佳论文:神经常微分方程(Neural ODEs,论文地址:https://arxiv.org/abs/1806.07366)。在本文中,我将尝试简要介绍一下这篇论文的重要性,但我将强调实际应用,以及我们如何应用这种需要在应用程序中应用各种神经网络,如果可以的话。与往常一样,如果您想直接浏览代码,可以查看此GitHub储存库(https://github.com/Rachnog/Neural-ODE-Experiments),我建议您在Google Colab中启动它。
为什么我们关注常微分方程呢?
首先,让我们快速简要概括一下令人讨厌的常微分方程是什么。常微分方程描述了某些由一个变量决定的过程随时间的变化。这个时间的变化通过下面的微分方程来描述。
![f439a4f1c1b43b9ab5fa959f6826766b.png](https://i-blog.csdnimg.cn/blog_migrate/b2b0822158a1f6131160136d5e3a4859.jpeg)
简单的常微分方程的例子
通常情况下,如果我们知道了某些初始条件(过程开始的地方),并且我们想了解这个过程将如何变化成某些最终状态,我们才能讨论解这个微分方程。求解函数也被叫做积分曲线(因为我们可以通过对这个方程积分得到方程的解x(t)).让我们尝试用SymPy软件包来解一下上面图片上的方程:
from sympy import dsolve, Eq, symbols, Function
t = symbols('t')
x = symbols('x', cls=Function)
deqn1 = Eq(x(t).diff(t), 1 - x(t))
sol1 = dsolve(deqn1, x(t))
这将会得到下面的解:
Eq(x(t), C1*exp(-t) + 1)
其中C1为常数,可以在给定初始条件时进行确定。如果以恰当的形式给出微分方程,我们可以用解析法进行求解,但通常是采用数值方法求解。最古老和最简单的算法之一是欧拉法:其核心思想是用切线逐步逼近求解函数:
![6d8cccd4725f34028846bf2dfdb2ddea.png](https://i-blog.csdnimg.cn/blog_migrate/0c5fc501c74601b760fa592c1319aa30.jpeg)
http://tutorial.math.lamar.edu/Classes/DE/EulersMethod.aspx
请访问上图下方的链接可以获得更详细的解释,在最后,我们得到了一个非常简单的公式,如下
![480603722414161dd4d40c9d26cf501d.png](https://i-blog.csdnimg.cn/blog_migrate/cacbf44a8619a764b4c959a13b0f3fa6.jpeg)
http://tutorial.math.lamar.edu/Classes/DE/EulersMethod.aspx
其在n个时间步长的离散网格上的解是
![1065326b5665cb21525fa2eea410f873.png](https://i-blog.csdnimg.cn/blog_migrate/936a14c7a034ea8b5c894e397ea6bb5d.jpeg)