【论文夜读】陈天琦神作Neural Ordinary Differential Equations(NuerIPS2018最佳paper)
在最近结束的 NeruIPS 2018 中,来自多伦多大学的陈天琦等研究者成为最佳论文的获得者。在与机器之心的访谈中,陈天琦的导师 David Duvenaud 教授谈起这位学生也是赞不绝口。Duvenaud 教授认为陈天琦不仅是位理解能力超强的学生,钻研起问题来也相当认真透彻。他说:「天琦很喜欢提出新想法,他有时会在我提出建议一周后再反馈:『老师你之前建议的方法不太合理。但是我研究出另外一套合理的方法,结果我也做出来了。』」Ducenaud 教授评价道,现如今人工智能热度有增无减,教授能找到优秀博士生基本如同「鸡生蛋还是蛋生鸡」的问题,顶尖学校的教授通常能快速地招纳到博士生,「我很幸运地能在事业起步阶段就遇到陈天琦如此优秀的学生。」
本文的精粹
最近慢慢涌现了一些对该文的解读,而我主要从定理推导的角度谈谈这篇文章的一些精粹:比如文中关于一个导数计算的变量变元定理(它将一个不太容易计算的梯度
∂
log
p
(
t
)
∂
t
\frac{\partial \log p(t)}{\partial t}
∂ t ∂ log p ( t ) 转化为了好计算的梯度
−
t
r
(
d
f
d
z
(
t
)
)
-tr( \frac{d f}{d z}(t))
− t r ( d z d f ( 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)
h t + 1 = h t + f ( h t , θ t ) ; 这等价于一个微分方程的 Euler 迭代求解,如果用更多的层数和但更小的步长,可以优化为:
d
h
(
t
)
d
t
=
f
(
h
(
t
)
,
t
,
θ
)
\frac{dh(t)}{dt} = f(h(t), t, \theta)
d t d h ( 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)
d t d x = 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 ∂ log p ( z ( t ) ) = − t r ( d z d f ( 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 ∂ log p ( z ( t ) ) = − t r ( ϵ → 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 ∂ log p ( z ( t ) ) = − t r ( ϵ → 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 ) )
= − t r ( ϵ → 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 ) )
= − t r ( ϵ → 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))
= − t r ( ∂ z ∂ f ( z ( t ) , t ) )
一点八卦
但是我们隐约感觉修过ODE的工科生貌似不难想到这个idea,果然,有人称,这个idea是之前有人想到的:
知乎上一个人之前的idea
知乎上一个人的看法
谁是谁非,大家自己判断吧;