【论文夜读】陈天琦神作Neural Ordinary Differential Equations(NuerIPS2018最佳paper)
在最近结束的 NeruIPS 2018 中,来自多伦多大学的陈天琦等研究者成为最佳论文的获得者。在与机器之心的访谈中,陈天琦的导师 David Duvenaud 教授谈起这位学生也是赞不绝口。Duvenaud 教授认为陈天琦不仅是位理解能力超强的学生,钻研起问题来也相当认真透彻。他说:「天琦很喜欢提出新想法,他有时会在我提出建议一周后再反馈:『老师你之前建议的方法不太合理。但是我研究出另外一套合理的方法,结果我也做出来了。』」Ducenaud 教授评价道,现如今人工智能热度有增无减,教授能找到优秀博士生基本如同「鸡生蛋还是蛋生鸡」的问题,顶尖学校的教授通常能快速地招纳到博士生,「我很幸运地能在事业起步阶段就遇到陈天琦如此优秀的学生。」
本文的精粹
最近慢慢涌现了一些对该文的解读,而我主要从定理推导的角度谈谈这篇文章的一些精粹:比如文中关于一个导数计算的变量变元定理(它将一个不太容易计算的梯度 ∂ log p ( t ) ∂ t \frac{\partial \log p(t)}{\partial t} ∂t∂logp(t)转化为了好计算的梯度 − t r ( d f d z ( t ) ) -tr( \frac{d f}{d z}(t)) −tr(dzdf(t)));
本文的核心内容复习
在这里过一下这篇论文说了啥:大概就是根据常微分方程ODE的启发引入了一种新型的神经网络ODE Net,区别于过去的多个离散层的神经网(文中用ResNet作对比).总体来说是一篇比较偏理论,逻辑完善推导严密的论文;
常规的 ResNet 的层迭代相当于:
h
t
+
1
=
h
t
+
f
(
h
t
,
θ
t
)
h_{t+1} = h_t + f(h_t, \theta_t)
ht+1=ht+f(ht,θt);
这等价于一个微分方程的 Euler 迭代求解,如果用更多的层数和但更小的步长,可以优化为:
d
h
(
t
)
d
t
=
f
(
h
(
t
)
,
t
,
θ
)
\frac{dh(t)}{dt} = f(h(t), t, \theta)
dtdh(t)=f(h(t),t,θ)
这里就是论文的全部核心idea了,剩下的问题是如何用于网络训练.对于训练,作者展示了如何在不涉及任何特殊ODE求解器内部操作的情况下(意思是所有的微分方程采样一种通用的办法求解),可扩展地反向传播.这允许在更大的模型中对ODE进行端到端训练.
梯度变元定理
- 定理:Let x ( t ) x(t) x(t) be a finite continuous random variable with probability p ( x ( t ) ) p(x(t)) p(x(t)) dependent on time.Let d x d t = f ( x ( t ) , t ) \frac{dx}{dt} = f(x(t), t) dtdx=f(x(t),t) be a differential equation describing a continuous-in-time transformation of x ( t ) x(t) x(t).Assuming that f f f is uniformly Lipschitz continuous in x x x and continuous in t t t, then the change in log probability also follows a differential equation(这是一堆众所周知的前提条件,可以跳过):
∂ log p ( z ( t ) ) ∂ t = − t r ( d f d z ( t ) ) \frac{\partial \log p(z(t))}{\partial t} = -tr(\frac{d f}{d z}(t)) ∂t∂logp(z(t))=−tr(dzdf(t))
这里讲讲证明的核心思想,首先,将 ϵ \epsilon ϵ时长后的 z z z值表达为: z ( t + ϵ ) = T ϵ ( z ( t ) ) z(t+\epsilon) = T_\epsilon({z}(t)) z(t+ϵ)=Tϵ(z(t)),然后容易推导出:
∂ log p ( z ( t ) ) ∂ t = − t r ( lim ϵ → 0 + ∂ ∂ ϵ ∂ ∂ z T ϵ ( z ( t ) ) ) \frac{\partial\log p({z}(t))}{\partial t}=-tr( \lim_{\epsilon\rightarrow 0^+} \frac{\partial }{\partial \epsilon} \frac{\partial }{\partial {z}} T_\epsilon({z}(t))) ∂t∂logp(z(t))=−tr(ϵ→0+lim∂ϵ∂∂z∂Tϵ(z(t)))
然后对 T ϵ ( z ( t ) ) T_\epsilon({z}(t)) Tϵ(z(t))作泰勒展开即可:
∂
log
p
(
z
(
t
)
)
∂
t
=
−
t
r
(
lim
ϵ
→
0
+
∂
∂
ϵ
∂
∂
z
(
z
+
ϵ
f
(
z
(
t
)
,
t
)
+
O
(
ϵ
2
)
+
O
(
ϵ
3
)
+
…
 
)
)
\frac{\partial\log p({z}(t))}{\partial t}= -tr ( \lim_{\epsilon\rightarrow0^+} \frac{\partial }{\partial \epsilon} \frac{\partial }{\partial {z}} ( {z} + \epsilon f({z}(t), t) + \mathcal{O}(\epsilon^2) + \mathcal{O}(\epsilon^3) + \dots ) )
∂t∂logp(z(t))=−tr(ϵ→0+lim∂ϵ∂∂z∂(z+ϵf(z(t),t)+O(ϵ2)+O(ϵ3)+…))
=
−
t
r
(
lim
ϵ
→
0
+
∂
∂
ϵ
(
I
+
∂
∂
z
ϵ
f
(
z
(
t
)
,
t
)
+
O
(
ϵ
2
)
+
O
(
ϵ
3
)
+
…
 
)
)
= -tr ( \lim_{\epsilon\rightarrow0^+} \frac{\partial }{\partial \epsilon} ( I + \frac{\partial }{\partial {z}}\epsilon f({z}(t), t) + \mathcal{O}(\epsilon^2) + \mathcal{O}(\epsilon^3) + \dots ) )
=−tr(ϵ→0+lim∂ϵ∂(I+∂z∂ϵf(z(t),t)+O(ϵ2)+O(ϵ3)+…))
=
−
t
r
(
lim
ϵ
→
0
+
(
∂
∂
z
f
(
z
(
t
)
,
t
)
+
O
(
ϵ
)
+
O
(
ϵ
2
)
+
…
 
)
)
= -tr ( \lim_{\epsilon\rightarrow0^+} (\frac{\partial }{\partial {z}} f({z}(t), t) + \mathcal{O}(\epsilon) + \mathcal{O}(\epsilon^2) + \dots ) )
=−tr(ϵ→0+lim(∂z∂f(z(t),t)+O(ϵ)+O(ϵ2)+…))
=
−
t
r
(
∂
∂
z
f
(
z
(
t
)
,
t
)
)
= -tr ( \frac{\partial }{\partial {z}} f({z}(t), t))
=−tr(∂z∂f(z(t),t))
一点八卦
但是我们隐约感觉修过ODE的工科生貌似不难想到这个idea,果然,有人称,这个idea是之前有人想到的:
谁是谁非,大家自己判断吧;