007_SSSSS_ Neural Ordinary Differential( 二 )


(这个部分原文里边用z ( t ) z(t) z(t) 来表示连续情况下中间的结果, 用h ( t ) h(t) h(t) 表示离散情况下的中间结果, 意义是一样的, 为方便理解可以将两个符号互换来看.)
直接用链式法则不可行, 但是链式法则的这种思路是可以借鉴的. 也就是求出损失关于中间结果的梯度, 作者用式子来表示a ( t ) = d L / d z ( t ) a(t) = dL / dz(t) a(t)=dL/dz(t) 称其为. 那么这个也满足一个ODE:
推导过程如下(也可以直接参考原文附录), 也是利用了链式法则:
再利用一次链式法则, 就可以得到:
推导过程如下(也可以直接参考原文附录)
如果对推导过程不感兴趣, 可以直接记住结论, 也就是反向传播的过程也需要求解一个ODE. 而这个ODE需要和伴随状态一块求.
简单的小结一下, 的前向过程是用ODE从初始时刻输入求解终止时刻的输出, 反向过程求解一个反向的ODE, 从终止时刻开始到初始时刻.而且从以上内容可以看出, 的网络输入和输出的维度必须是固定的, 所以就不能像残差网络一样可以在残差块之间加入上下采样, 这也是的一个缺点.
3. 用代替残差网络
作者做了用代替残差网络的实验, 当然的维度必须是固定的, 所以用替换的是原来的残差网络中上下采样之后的块.
作者在MNIST数据集上进行了简单的实验:
4. 连续标准化流Flow
有一类称作flow的流模型, 其表示形如:
这种表示与之前看到的残差表示相似, 于是也可以转换成ODE的形式,
这里本人对流模型了解并不多, 详细内容请参考作者原文.
5. 时间序列模型time- model
作者还提出了一种时间序列模型, 基本的思想就是: 给定已经观测到的时间点t 0 , t 1 , . . . , t N t_0, t_1, ..., t_N t0?,t1?,...,tN?, 以及初始状态z t 0 z_{t_0} zt0?? , 那么可以用ODE来预测N N N 之后的时间的状态.
而初始的状态z t 0 z_{t_0} zt0?? 则需要利用一个RNN 来得到.
6. 小结
总结一下, 本文作者的三个贡献, 其中最重要也是本文核心的就是及其反向传播的过程, 不过一个弊端就是 ODE的输入和输出维度是固定的, 这在一些场合显得不太灵活. 之后作者又提出了连续流和基于ODE的时序模型, 都可以看做是在不同模型上的变种, 其本质还是相同的. 最大的优点是O ( 1 ) O(1) O(1) 的空间复杂度, 这样可以将这一个块设计的比传统残差块更复杂, 从而有更好的效果, 但是相应的可以看做是拿时间来换空间, 利用ODE 求解的时间代价比传统残差网络要高.