今天看了 NeurIPS 2018 上的两篇文章,一篇是获得 best paper 的 Neural Ordinary Differential Equations (陈天奇的文章),一篇是获经典论文奖的 The Tradeoffs of Large Scale Learning。

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.

Abstract

本文研究不同的近似优化算法对学习算法的影响。Small-scale learning problems 受到 approximation–estimation 的影响,Large-scale learning problems 受到优化算法计算复杂度的影响。

Motivation

计算复杂度在学习算法中的有重要的意义,但很少被提及。Valiant 强调一个问题是可学习的,如果一个算法能在多项式复杂度内解决它。但是这只是在统计意义上的解决。
本文发现近似优化算法完全可以满足学习要求,而且降低计算复杂度。

Approximate Optimization

Setup

优化算法优化的对象是
E(f)=∫l(f(x),y)dP(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∗=argminfE[l(y^,y)∣x]f^*=argmin_fE[l(\hat{y},y)|x]f∗=argminf​E[l(y^​,y)∣x]

尽管P(x,y)P(x,y)P(x,y)未知,我们可以随机独立采样得到nnn个数据来做训练数据,定义经验误差
En(f)=1n∑i=1nl(f(xi),yi)=En[l(f(xi),yi)]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)=n1​i=1∑n​l(f(xi​),yi​)=En​[l(f(xi​),yi​)]

我们的学习过程实际上是根据训练数据从一组函数FFF内选择出函数fn=argminfEn[f]f_n=argmin_fE_n[f]fn​=argminf​En​[f],定义f∗f^*f∗为所有可能的最优的函数(可能不在FFF中),在定义fF∗=argminfE[f]f^*_F=argmin_fE[f]fF∗​=argminf​E[f]为FFF中最优的函数,那么我们有:
E[E(fn)−E(f∗]]=E[E(fF∗)−E(f∗)]+E[E(fn)−E(fF∗)]=eapp+eestE[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​

eappe_{app}eapp​表示 approximation error(FFF与最优解的差距),eeste_{est}eest​表示 estimation error(由于训练数据和优化算法得到的函数与FFF内最优函数的差距)。复杂的模型导致大的FFF,大的FFF导致小的 approximation error 而导致大的 estimation error。

Optimization Error

找到最优的fnf_nfn​需要很复杂的计算,而我们不需要找到最优的fnf_nfn​,因为En(f)E_n(f)En​(f)本身就是近似的,所以我们可以在优化算法收敛前提前终止迭代。
假设我们得到的近似解为f^n\hat{f}_nf^​n​满足
En(f^n)&lt;En(fn)+ρE_n(\hat{f}_n)&lt;E_n(f_n)+\rhoEn​(f^​n​)<En​(fn​)+ρ

ρ\rhoρ是预先定义的 tolerance,那么
E[E(f^n)−E(f∗]]=E[E(fF∗)−E(f∗)]+E[E(fn)−E(fF∗)]+E[E(f^n)−E(fn)]=eapp+eest+eoptE[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 eopte_{opt}eopt​。

The Approximation–Estimation–Optimization Tradeoff

对于整个问题而言,我们需要优化的是
minF,ρ,ne=eapp+eest+eopt,s.t.n≤nmax,T(F,ρ,n)≤Tmaxmin_{F,\rho,n}e=e_{app}+e_{est}+e_{opt},s.t.n\leq n_{max},T(F,\rho,n)\leq T_{max}minF,ρ,n​e=eapp​+eest​+eopt​,s.t.n≤nmax​,T(F,ρ,n)≤Tmax​

nmaxn_{max}nmax​表示最大的可用数据量,TmaxT_{max}Tmax​表示能够训练的最长时间。
所谓 Small-scale learning problems 是指主要收到nmaxn_{max}nmax​的限制,计算复杂度不成问题,eopte_{opt}eopt​可以减少为0;而 Large-scale learning problem 主要受到TmaxT_{max}Tmax​的限制,我们需要选择合适ρ\rhoρ来简化计算。


GD:梯度下降法
2GD:二阶梯度下降法(牛顿法)
SGD:随机梯度下降法
2SGD:二阶随机梯度下降法

The Asymptotics of Large-scale Learning

涉及到优化算法的收敛速度的相关理论知识

Conclusion

本文主要思想是考虑数据量较大时对于时间的权衡,我的理解是从理论上给予了随机梯度下降和梯度下降选择的依据。

Neural Ordinary Differential Equations

Chen, Tian Qi, et al. “Neural Ordinary Differential Equations.” arXiv preprint arXiv:1806.07366 (2018).

引入了一种新型的神经网络,区别于过去的多个离散层的神经网络,我们的神经网络时各黑箱的微分方程的求解器。这种连续深度的神经网络优势是只需要花费恒定的内存,并且可以显式地以数值精度换取速度。构建 continuous normalizing flows 从而可以通过最大似然进行训练、无需对数据维度进行分区或排序。对于训练,我们展示了如何在不访问任何ODE求解器内部操作的情况下,可扩展地反向传播。这允许在更大的模型中对ODE进行端到端训练。

思路是常规的 ResNet 相当于
ht+1=ht+f(ht,θt)h_{t+1}=h{t}+f(h_t,\theta_t)ht+1​=ht+f(ht​,θt​)

可以看作是一个微分方程的 Euler 迭代求解。如果用更多的层数和更小的步长,可以化为
dhdt=f(h(t),t,θ)\frac{dh}{dt}=f(h(t),t,\theta)dtdh​=f(h(t),t,θ)

根据流体力学的一些结论,推导出了微分方程的解法,细节没有仔细看,逛了逛知乎,发现 https://zhuanlan.zhihu.com/p/51514687 上有人也有类似的想法,并且也有一些列的工作,感觉挺有趣的。主要思想是把常规的离散形式的神经网络转化为 ODE 进行训练和分析:

  • ResNet- ODE的前向欧拉格式
  • PolyNet- ODE的反向欧拉格式的逼近
  • FractalNet-ODE的Runge-Kutta 格式

感觉跟跟我的老本行有点像,有空好好研究一下。

【读书笔记】NeurIPS2018的两篇文章:The Tradeoffs of Large Scale Learning和Neural Ordinary Differential Equations相关推荐

  1. 论文笔记Neural Ordinary Differential Equations

    论文笔记Neural Ordinary Differential Equations 概述 参数的优化 连续标准化流(Continuous Normalizing Flows) 生成式的隐轨迹时序模型 ...

  2. 黎曼流形学习的学习笔记(2):Neural Ordinary Differential Equations(来源:NIPS 2018 oral) (未完待续)

    作者想解决的问题:这是一篇提出新模型的论文,把输入和输出当作微分方程在不同时刻的解,这样做可以节省很多空间,因为不需要计算每一步的具体结果,只需要保存得到的函数. 思路:由于残差网络 (空间上) 和R ...

  3. 【NLP学习笔记】文本相似度计算——判断两篇文章是否相似

    一.算法流程 (1)使用TF-IDF算法,提取出两篇文章的关键词: (2)每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使 ...

  4. 啊哈c语言读后感500字,《麦田里的守望者》读后感读书笔记500字五篇

    <<麦田里的守望者>读后感读书笔记500字五篇>由会员分享,可在线阅读,更多相关<<麦田里的守望者>读后感读书笔记500字五篇(5页珍藏版)>请在人人文 ...

  5. 关于微服务的两篇文章以及Eventuate

    微服务相关的两篇文章,很多之前一知半解的概念与关系,看过之后,茅塞顿开! 微服务架构之事件驱动架构 http://m.blog.csdn.net/article/details?id=52537886 ...

  6. C++/JAVA 计算两篇文章的相似度

    C++/JAVA 计算两篇文章的相似度 这位少侠,要不要进店瞧瞧? 实验介绍及思路 问题描述: 编写程序,计算任意两篇文章的相似度. 基本思路: 利用余弦相似度来计算其相似度. 完整代码 C++ 代码 ...

  7. python余弦定理_使用余弦定理计算两篇文章的相似性

    使用余弦定理计算两篇文章的相似性:(方法论,细致易懂版) http://blog.csdn.net/dearwind153/article/details/52316151 python 实现(代码) ...

  8. 【python 走进NLP】simhash 算法计算两篇文章相似度

    互联网网页存在大量的重复内容网页,无论对于搜索引擎的网页去重和过滤.新闻小说等内容网站的内容反盗版和追踪,还是社交媒体等文本去重和聚类,都需要对网页或者文本进行去重和过滤.最简单的文本相似性计算方法可 ...

  9. [将小白进行到底] 如何比较两篇文章的相似度

    其实这个题目已经有很多人写过了,数学之美里就有,最近阮一峰的博客里也写了,本文基本上遵循的就是他的思路,只是让其看起来再小白一点点.其实说白了就是用自己的话,再把同样一件事描述一下,顺便扩扩句,把其中 ...

最新文章

  1. 跨年之际,中文版畅销书《TensorFlow深度学习实战大全》分享,直接送!
  2. 计算机组成 面试 ---杂货铺
  3. 安卓入门系列-04常见布局之LinearLayout(线性布局)
  4. NSTimer不准确与GCDTimer详解
  5. 在计算机中描述景物结构形状与外貌,在计算机中通过描述景物的结构、形状与外貌,然后将它绘制成图在屏幕上显示出来,此类图像称为_____。...
  6. 数据挖掘—K-Means算法(Java实现)
  7. leetcode442. 数组中重复的数据
  8. 用PyTorch创建一个图像分类器?So easy!(Part 2)
  9. 物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
  10. 【树状数组】HDU 1166 敌兵布阵
  11. 说说博客园的“关注”与“网摘”
  12. 一维稳态导热的数值计算c语言,传热传质上机实习题(参考资料C语言)
  13. Javascript 事件入门
  14. C++ cout的使用,看这一篇就够了
  15. LIF-Seg 激光雷达与相机图像融合的三维激光雷达语义分割
  16. 比对软件Blast,Blast+,Diamond如何选
  17. node-sass弃用背景
  18. 深入理解JVM的对象创建过程
  19. 牛校网php,升学指导网
  20. 微软ERP Dynamics AX 20年简史

热门文章

  1. 努力并非是人生的难题,如何做选择才是人类社会永远的课题!
  2. 数据类型 - Array
  3. 8255单片机开关控制发光二极管亮灭实验
  4. C/C++黑魔法-不会出错的http
  5. 项目实战:基于 TCP 的局域网内高性能文件传输系统设计与实现
  6. AD16及AD18鼠标移动到网络后自动高亮设置
  7. 团体程序设计天梯赛-练习集——7-10 彩虹瓶 (25分)
  8. cpda和cda区别与联系
  9. UCK区块链微课堂—数字货币钱包那么多,总有一款适合您!
  10. Java学习之旅-04