今天看了 NeurIPS 2018 上的两篇文章,一篇是获得 best paper 的 Neural Ordinary Differential Equations (陈天奇的文章),一篇是获经典论文奖的 The Tradeoffs of Large Scale Learning。
Bottou, Léon, and Olivier Bousquet. “The tradeoffs of large scale learning.” Advances in neural information processing systems. 2008.
本文研究不同的近似优化算法对学习算法的影响。Small-scale learning problems 受到 approximation–estimation 的影响,Large-scale learning problems 受到优化算法计算复杂度的影响。
计算复杂度在学习算法中的有重要的意义,但很少被提及。Valiant 强调一个问题是可学习的,如果一个算法能在多项式复杂度内解决它。但是这只是在统计意义上的解决。
本文发现近似优化算法完全可以满足学习要求,而且降低计算复杂度。
优化算法优化的对象是
E ( f ) = ∫ l ( f ( x ) , y ) d P ( x , y ) = E [ l ( f ( x ) , y ) ] E(f)=\int l(f(x),y)dP(x,y)=E[l(f(x),y)] E(f)=∫l(f(x),y)dP(x,y)=E[l(f(x),y)]
也就是要求解
f ∗ = a r g m i n f E [ l ( y ^ , y ) ∣ x ] f^*=argmin_fE[l(\hat{y},y)|x] f∗=argminfE[l(y^,y)∣x]
尽管 P ( x , y ) P(x,y) P(x,y)未知,我们可以随机独立采样得到 n n n个数据来做训练数据,定义经验误差
E n ( f ) = 1 n ∑ i = 1 n l ( f ( x i ) , y i ) = E n [ l ( f ( x i ) , y i ) ] E_n(f)=\frac{1}{n}\sum_{i=1}^nl(f(x_i),y_i)=E_n[l(f(x_i),y_i)] En(f)=n1i=1∑nl(f(xi),yi)=En[l(f(xi),yi)]
我们的学习过程实际上是根据训练数据从一组函数 F F F内选择出函数 f n = a r g m i n f E n [ f ] f_n=argmin_fE_n[f] fn=argminfEn[f],定义 f ∗ f^* f∗为所有可能的最优的函数(可能不在 F F F中),在定义 f F ∗ = a r g m i n f E [ f ] f^*_F=argmin_fE[f] fF∗=argminfE[f]为 F F F中最优的函数,那么我们有:
E [ E ( f n ) − E ( f ∗ ] ] = E [ E ( f F ∗ ) − E ( f ∗ ) ] + E [ E ( f n ) − E ( f F ∗ ) ] = e a p p + e e s t E[E(f_n)-E(f^*]]=E[E(f^*_F)-E(f^*)]+E[E(f_n)-E(f^*_F)]=e_{app}+e_{est} E[E(fn)−E(f∗]]=E[E(fF∗)−E(f∗)]+E[E(fn)−E(fF∗)]=eapp+eest
e a p p e_{app} eapp表示 approximation error( F F F与最优解的差距), e e s t e_{est} eest表示 estimation error(由于训练数据和优化算法得到的函数与 F F F内最优函数的差距)。复杂的模型导致大的 F F F,大的 F F F导致小的 approximation error 而导致大的 estimation error。
找到最优的 f n f_n fn需要很复杂的计算,而我们不需要找到最优的 f n f_n fn,因为 E n ( f ) E_n(f) En(f)本身就是近似的,所以我们可以在优化算法收敛前提前终止迭代。
假设我们得到的近似解为 f ^ n \hat{f}_n f^n满足
E n ( f ^ n ) < E n ( f n ) + ρ E_n(\hat{f}_n)<E_n(f_n)+\rho En(f^n)<En(fn)+ρ
ρ \rho ρ是预先定义的 tolerance,那么
E [ E ( f ^ n ) − E ( f ∗ ] ] = E [ E ( f F ∗ ) − E ( f ∗ ) ] + E [ E ( f n ) − E ( f F ∗ ) ] + E [ E ( f ^ n ) − E ( f n ) ] = e a p p + e e s t + e o p t E[E(\hat{f}_n)-E(f^*]]=E[E(f^*_F)-E(f^*)]+E[E(f_n)-E(f^*_F)]+E[E(\hat{f}_n)-E(f_n)]=e_{app}+e_{est}+e_{opt} E[E(f^n)−E(f∗]]=E[E(fF∗)−E(f∗)]+E[E(fn)−E(fF∗)]+E[E(f^n)−E(fn)]=eapp+eest+eopt
就多出一个 optimization error e o p t e_{opt} eopt。
对于整个问题而言,我们需要优化的是
m i n F , ρ , n e = e a p p + e e s t + e o p t , s . t . n ≤ n m a x , T ( F , ρ , n ) ≤ T m a x min_{F,\rho,n}e=e_{app}+e_{est}+e_{opt},s.t.n\leq n_{max},T(F,\rho,n)\leq T_{max} minF,ρ,ne=eapp+eest+eopt,s.t.n≤nmax,T(F,ρ,n)≤Tmax
n m a x n_{max} nmax表示最大的可用数据量, T m a x T_{max} Tmax表示能够训练的最长时间。
所谓 Small-scale learning problems 是指主要收到 n m a x n_{max} nmax的限制,计算复杂度不成问题, e o p t e_{opt} eopt可以减少为0;而 Large-scale learning problem 主要受到 T m a x T_{max} Tmax的限制,我们需要选择合适 ρ \rho ρ来简化计算。
GD:梯度下降法
2GD:二阶梯度下降法(牛顿法)
SGD:随机梯度下降法
2SGD:二阶随机梯度下降法
涉及到优化算法的收敛速度的相关理论知识
本文主要思想是考虑数据量较大时对于时间的权衡,我的理解是从理论上给予了随机梯度下降和梯度下降选择的依据。
Chen, Tian Qi, et al. “Neural Ordinary Differential Equations.” arXiv preprint arXiv:1806.07366 (2018).
引入了一种新型的神经网络,区别于过去的多个离散层的神经网络,我们的神经网络时各黑箱的微分方程的求解器。这种连续深度的神经网络优势是只需要花费恒定的内存,并且可以显式地以数值精度换取速度。构建 continuous normalizing flows 从而可以通过最大似然进行训练、无需对数据维度进行分区或排序。对于训练,我们展示了如何在不访问任何ODE求解器内部操作的情况下,可扩展地反向传播。这允许在更大的模型中对ODE进行端到端训练。
思路是常规的 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 d t = f ( h ( t ) , t , θ ) \frac{dh}{dt}=f(h(t),t,\theta) dtdh=f(h(t),t,θ)
根据流体力学的一些结论,推导出了微分方程的解法,细节没有仔细看,逛了逛知乎,发现 https://zhuanlan.zhihu.com/p/51514687 上有人也有类似的想法,并且也有一些列的工作,感觉挺有趣的。主要思想是把常规的离散形式的神经网络转化为 ODE 进行训练和分析:
感觉跟跟我的老本行有点像,有空好好研究一下。