读了好久,不少地方困住了
Dissecting Neural ODEs
这篇文章大概20年上半年就在arXiv上挂出来了,后来才知道中了NeurIPS2020,作者日韩,文献地址:Dissecting Neural ODEs
如题,本文试图解剖NODE,确实从很多角度给出了一个general的增广NODE框架,总结了一系列的相关模型!
内容大纲
这篇文章的主要目的是分(解)析(剖)一下NODE,给出了一个general的NODE框架,叫general system-theoretic Neural ODE formulation
文献的背景/idea:
- 最近两年来比较有意思的连续深度学习模型NODE解剖分析的需求,需要简明解释NODE结构
整体的框架是$(1)$式
进一步分析这个框架是如何general的。具体分了三大块:
- Depth-Variance
- 基本的idea是NODE不能作为无限近似的连续模型,为什么?当结论看着吧,不过确实参数化更rich
- 增广策略
- 基于ANODE的增广策略,可以退化为ANODE
- 在框架下,分为:
- 对输入层增广
- 高阶信息增广
- 增广之外
- 动机是对$\varphi(x)=-x$或者同心环问题,不一定需要增广,由此提出了2种模型:
- data control
- adaptive depth
- 动机是对$\varphi(x)=-x$或者同心环问题,不一定需要增广,由此提出了2种模型:
基于NODE的连续系统
标题即文中Continuous–Depth Models部分,这算是框架的一个背景模型,其实就是回顾NODE。只不过这里的说法指的是general形式的NODE,即添加了输入层$h_x$和输出层$h_y$
主要回顾了general的连续ODE系统、适定性即解的存在唯一性、训练方法Adjoint
Depth-Variance
Depth-Variance指的是啥没读懂,depth和variance应该分别指每个深度(层)和其参数不同,后者应该不是方差的意思
它的动机是最原始的NODE,虽然说是连续系统模拟,但是即使网络足够深也不能说是ResNet的极限,注意这个说法。一个简单的理解是ResNet的每一层的残差模块都应该有自己的参数,记为$\theta_s$,$s$在这里特指为层数,或者说depth。这样的话,general的深度ResNet应该至少是$\dot{z}=f_{\theta_s}(s,z(s))$的形式,包括了所有层的变化规律
注:文中表示试图达到ResNet的deep极限的最初尝试就是hypernetwork,日后请浏览!
本文表示直接参数化的做法,在理论上存在弱点。本文藉此考虑泛函空间中的梯度下降,直接视$\theta_s$函数存在于一(较)般(大)的函数空间中,这样的空间又往往是无穷维的,所以函数空间中的梯度下降就要算G导数,然后拓展使用Adjoint方法的过程中发现无穷维的时候不会算这个导数。
因此需要进行有限维空间中的近似,具体的做法给了两种,一种是采用有限多个正交基展开$\theta_s$;另一种是暴力地让$\theta_s$分多段常值。这两种方法分别叫Spectral discretization: Galërkin Neural ODEs和Depth discretization: Stacked Neural ODEs。它们从不同的角度参数化了网络模型的参数,增强了表达的能力,对,应该是这样
增广策略
本文对NODE相关的增广研究都基于ANODE,要强调的一点是ANODE只是单纯增广了维度,这种增广称为0-增广。如果细化一点增广的是什么,可能能得到general的增广策略
输入层增广
注意general框架中的$z(0)=h_x(x)$,这就是输入层增广,称为IL-NODE,IL表示输入层
0-增广看成把输入$x$增广为$[x,0]$,然后转化为隐变量(顺序可看成反过来),其中$x$和$0$都是向量;那么输入层增广就是把输入$x$增广为$h_x(x)$,$h_x$取普通网络即可,再在框架中和$s,x$合并为正式输入
这样的话0-增广就是IL-NODE的一个特例,即$h_x(x)\overset{def}{=}[I,0]x$,维度省略,意思是明显的
进一步,我在增广策略开头提到细化一点增广的是什么
,举个例子,如果让$x$的前多少维度反映重要信息,比如$x$本身信息,后面的维度增广为高阶信息,那增广就能引入微分方程中的高阶导数信息
高阶信息增广
高阶信息增广指的是Higher–order Neural ODEs,这样增广的动机是提高参数效率
本来只有隐变量$z_1=z_q$,用网络从$z_1$生成$z_2=z_p$,作为$\dot{z}_1$,然后加一个二阶信息(方程)$\dot{z}_2=\ddot{z}_1$,即文章中的$(6)$式,$(7)$式是高阶信息增广合并到一起的写法:
为什么这样合并的形式提高了参数效率呢?此时注意$(7)$式中关键的函数$f_{\theta (s)}$的输出只需要是原来的$\frac{1}{n}$即可,这就是原因了
进一步推广不太好弄,一直加高阶信息的话需要增加的维度也很多,而且意义也不大了。一个做法是选择出重要的维度来存储信息
实验验证
文中给出了一些实验,表明了这些增广模型都是有效的,一定程度上提高了计算效率
用了两个评价指标,分别是NFE(number of function evaluations),越小越好;和参数量
增广之外
这一部分看似有点奇怪,但动机良好,对$\varphi(x)=-x$(称为reflection)或者同心环问题,不一定需要增广策略,由此提出了2种模型,data control NODE和adaptive depth NODE
对于data control,文章先举了一个例子,对于reflection,控制$z(0)=x$,然后去学习$z(1)$,让$z(1)$随初值的变化而变化,这样学出了$-x$这个函数。这个例子是在框架下的
然后举了一个data control的归一化流的例子,没看懂。。。但是我觉得这个data control的思路是让初值变化,其实就是一种输入层增广,这样对多个初值能学习到很多条流,这些流被data control,学习到目标函数。这个时候不需要在意轨线可能相交的原因应该是哪里避免了流在同一时刻达到交点,这个精妙的地方没有读懂。。
第2种模型是adaptive depth,字面意思是控制网络深度。差不多,它控制的是积分的上下限,如文中$(5.2)$节的积分上限$g(w)$,把要积到什么时候用网络来参数化,同样避免了流在同一时刻达到交点,它能做到的原因应该是学习了一系列的流,但是各自的积分时长其实都是自适应学习的,时刻也有所变化🤔
最后,文章提了一个东西,叫Mind your input networks,意思是说对输入层增广之后可能已经得到了一些重要信息,导致后面再积分的过程冗余,所以输入的处理要小心
审稿意见
https://proceedings.neurips.cc/paper/2020/file/293835c2cc75b585649498ee74b395f5-Review.html
看得真累,叭看了
参考文献
[1] Massaroli, S., Poli, M., Park, J., Yamashita, A., & Asma, H. (2020). Dissecting Neural ODEs. 34th Conference on Neural Information Processing Systems, NeurIPS 2020.