首发于 聊聊-深度学习

机器学习平台的优化器 (平台篇)

机器学习的开源平台越来越多了, 绝大部分平台都是牛人读博期间的产物 (所以大家一定要珍惜读博能做开发的日子)。 先说一下, 主流平台也分工业和研究, 大体这两个服务方向, 今天主要偏向工业方向。 因为, 今天的主题是优化器, 一般来说工业方向对速度要求更高, 因此对优化器的速度要求更高。 譬如, Theano 在研究领域颇受欢迎, 但是Caffe和TensorFlow在工业领域比较受欢迎。




哪个行业的人搞了这些平台呢?


分布式系统牛人搞得平台:

Spark: 主创Matei Zaharia是搞云平台(MapReduce, BSP)的。

MXNet: 主创李沐是搞分布式平台(Parameter Server)的。 主创陈天奇也是搞可扩展学习的。

TensorFlow:主创Martín Abadi是搞分布式并行系统的专家。 当然它背后的Google Brain的项目最早是视频图像为主。

Deeplearning4j: 主创Adam Gibson是学计算机的89年出生的小伙, 天然就是基于Spark的, 最早是用在自然语言方向为主。

PaddlePaddle: 主创徐伟是推荐系统架构的专家, 虽然没有读博士, 但是一直坚持开发和论文结合(也说明NEC环境不错),走到百度杰出科学家也相当赞。另外, 对Kubernetes分布容器的支持也说明Paddle重视分布式这点。


搞语音识别牛人搞得平台:

Scikit-Learn: 原创David Cournapeau是搞语音识别的。

CNKT:原创俞栋小组是做语音识别的。


搞视频图像牛人搞得平台:

Caffe: 主创贾扬清主要是做图像视频分析为主的。 他所在的Berkeley实验室也目前基于图像视频,进入了自动驾驶领域。

Keras:虽然是Meta框架平台, 但是主创Google大帅哥François Chollet也是以做图像为主的。


搞自然语言处理牛人搞得平台:

Theano: Montentreal教授Bengio本人是做自然语言处理为主的。

Torch:主创Ronan Collobert是搞自然语言处理的, 是Bengio的学生。




如果按编程语言来划分?


Scala的Spark MLlib (Berkeley)


Java的DeepLearning4J (Skymind)


Python的Scikit-learn

Python的TensorFlow (Google)

Python的Theano(Univ. Montreal)

Python的Keras

Python的VELES (Samsung)


Lua的Torch (Facebook)


C的MXNet (DMLC)

C的Cognitive Toolkit (CNTK, Microsoft)

C的Caffe (Berkeley)

C的Caffe2 (Facebook)

C的PaddlePaddle (Baidu)

C的DSSTNE (Amazon)



平台分成3大类(要讲的, 不讲的, 不要讲的)?


要讲的平台们:


Scala的Spark MLlib (Berkeley)

罗马尼亚帅哥Matei Zaharia在Berkeley的AMPlab读博期间实践他提出基于MapReduce的扩展Resilient Distributed Datasets思想而开发的系统。







Python的Scikit-learn

来自法国的小伙David Cournapeau跑到京都大学读博士, 无聊期间没有像大多数去日本读书的欧洲小伙一样把妹子, 而是开发了一个机器学习框架,方便他搞语言识别实验。 后来获得开源社区支持发展成今天的Python机器学习的主流之一。



Python的TensorFlow (Google)

Google Brain项目的智能专家 Martin Abadi 和工程师 Ashish Agarwal等在 里面开发的学习平台。

Lua的Torch (Facebook)

Ronan Collobert原来工作在NEC实验室, 工作后在Bengio的指导下拿了博士学位, 所以在深度学习的自然语言处理方法很给力, 他有一篇引用超高的论文 『 Natural Language Processing (Almost) from Scratch 』值得拜读。 他在业务时间, 搞了个类似matlab那样简单,又能在深度学习方向发挥的平台。



Java的DeepLearning4J (Skymind):

89年的小哥Adam Gibson, 21岁从大学辍学, 2年后, 开始做DL4J, 之后1年, 创立公司Skymind。




C的MXNet (DMLC)

DMLC小组, 成立于2014年NIPS之后, 以上海交大校友的陈天奇与李沐牵头的华人学者发现大家都在做类似的事情, 就准备合作开发MXNet:李沐负责分布式,陈天奇进行接口设计,张铮老师指导的 Minerva 团队主要负责后端。



C的Cognitive Toolkit (CNTK, Microsoft)

2012年由俞栋(现在去了腾讯AI)领导的微软语音组开启的Computational Network Toolkit CNTK开发。2016年支持了Python接口后,改名叫Cognitive Toolkit CNTK, 目前承载了微软80%的深度学习需求。 目前发展到CNTK2.0, 号称速度第一(参考港浸会大学汇报)。 尤其对多GPU支持有特殊见解。


C的Caffe2 (Facebook):清华自动化系帅哥贾扬清在Berkeley读博期间发力了Caffe,毕业后去了Google Brain。但是,Google Brain主推的TensorFlow,有阿根廷人工智能专家Martín Abadi 和 印度架构师Ashish Agarwal的旋律下,还有Jeff Dean超级咨询, Caffe主创贾扬清发挥余地有限, 2016年离开Google,去了Facebook领导开发了Caffe2, 沿用了他在Berkeley读博期间开发的Caffe 。 而没有沿用Caffe的原因,据说是要方便扩展到手机平台而重新轻量级架构。



不讲的平台们:

Python的Theano(Univ. Montreal)

Theano的名字来源于一个女数学家,据说是毕达哥拉斯的老婆。 Theano的著作并没有留存下来,除了她在培育下一代方面的杰出思想。 她和毕达哥拉斯的确4个子女都非常成功。 最早是深度学习大神Yoshua Bengio的Montreal Insititute of Learning Algorithm MILA组对Python平台上使用矩阵数学表达式和GPU加速的一个封装。 现在发展成了学术界最流行的实验平台之一。 但是这个平台并没有太好的对模型的封装。 于是另外一个Python项目千层面 Lasagne, 收集优化了这个平台上的各种模型。 所以一般来说, Theano-Lasagne两者绑定起来更好,你可以想想一下毕达哥拉斯的老婆在做千层面,为了教育好他们4个优秀的子女,哈哈哈。 当然基于Theano的平台还有Blocks, Keras, PyMC 3, sklearn-theano, Platoon, Theano-MPI。


目前Theano的主创, Frédéric Bastien本硕从Montreal毕业后(2007),就被Bengio留在实验室开发Theano,快10年了。




而Lasagne是2014年起步的,一帮搞音乐搜索研究的年轻人开发的, 其中一个主创 Eric Battenberg被百度硅谷招聘了, 还有好几个被Google招走了。


Python的Keras

它是Google员工大帅哥François Chollet创建的一个Meta Framework, 主要的后台是Theano和CNTK,Tensoflow。Tensorflow对Keras也是尽力的支持。


C的PaddlePaddle (Baidu)

Parallel Distributed Deep Learning,并行分布式深度学习, 主创徐伟在CMU读硕士期间就喜欢搞架构, 硕士毕业去了NEC呆了8年做到高级研究员, 之后在Facebook搞推荐系统架构呆了5年。 来自天津大学的于洋是他的主力开发和维护之一。 PaddlePaddle 对多GPU和Remote direct memory access, RDMA的支持也是被经常提起的。


题外话, 虽然百度希望云计算和人工智能能够开天辟地, 但是直觉上总是不太看好。



C的Caffe (Berkeley)

Caffe2的出现,于是Caffe本身类似被淘汰了, 已经2个多月没有更新了。



不要讲的平台们!


还有部分Github的Fork关注度不到1000的平台,他们基本没有成年就死掉了:


C的DSSTNE (Amazon):6个月没有更新了,DSSTNE不仅仅名字难记, 而且对开发者不算友好的架构,社区吸引力太弱。 为了对抗Google的TensorFlow极具上升的趋势, 我们知道Amazon在2016年11月决定选择了同样是C的MXNet平台了,并且部署到AWS所谓的MXNaas。


Python的VELES (Samsung): 2年多没有更新了, 基本死掉了, 知名度也很小。




什么是优化器?


理论上的优化器


简单来说, 机器学习按照结构风险SRM最小的框架下, 给定了优化目标。



有了优化目标就要进行优化求解(更多参考 " 机器学习背后的男人们")。



优化有各种优化算法, 但是还背后有一个优化定理就是天下没有免费的午餐NFL定理 (参考 " 今我来思,堆栈泛化(Stacked Generalization)" )。


有了目标, 有了定理, 就差算法了, 有很多算法,一次的SGD家族等, 二次的Newton家族等等(参考" 迭代优化算法之直观概述 (SVRG)")。 算法有一个重要的评价指标就是收敛快慢(参考 " 收敛率概述 (Overview of Rates of Convergence)")。

另外提下下, SGD家族的算法, 可以参考爱尔兰国立大学毕业的博士sebastian ruder的综述文章"An overview of gradient descent optimization algorithms":


根据NFL定理, 要想在一个应用方向最优, 那么就要为这个这个应用方向定制修改优化算法, 找到有没有阻碍obstacles。 最好的办法就是将最优化线路可视化。 因此, 真正懂优化器优化路线可视化的,也是一门高深学问。

当然, 大部分不会根据数据去可视化优化路径, 然后去调优的。 寄希望优化器能够自适应数据, 不需要手动调参数。 这就是adaptive算法的基本思想。 再加上momentum的加速设计就是一代神奇adam算法。 自2014年出现之后, 就立马风靡。 之后虽然也有Adamax和Nadam,但是影响不大。


上个月, 又出现了一篇号称超越Adam的文章YellowFin, 上演了黄鳍金枪鱼跳大坝的故事( cs.stanford.edu/~zjian/), 这是来自斯坦福的InfoLab( infolab.stanford.edu/)。 从理论上讲述,condition number 到 generalized condition number 带来的效果的变化。 至于什么是generalized condition number,就不展开了, 有兴趣大家去细细读下下。

除了Momentum系列的SGD,譬如Adagrad, Adam, 还有分布式系列的SGD,譬如Downpour, 还有Variance Reduction系列的SGD, 譬如SAGA, SVRG等等。 其中SVRG系列, 据说实现起来的内存消耗太大, 所以实现并不广泛。 但是我想效果这么明显,未来会找到大应用的。



实践上的优化器


在实践中, 一般把学习模型和优化算法分开来,那么这个分开的优化算法, 就是优化器了。



当然模型也开始划分成物理架构和损失函数的大类。 譬如在神经网络中, 一般又分成采用什么网络结构, 这个网络结构上采用什么损失函数去计算。 这样可以可以定义好目标了。 有了目标之后,就要配置上优化器了。

要注意的事, 这里的学习模型,学习目标函数, 和优化器这三部分在不同的平台上的可见度和可配置度都不太一致的。


譬如就学习模型而言, 在scikit-learn里面整个模型需要整个人工指定, 然后绑定一起使用。 可以有部分参数。 好用但是不灵活。 在Torch里面, 可以分层次进行指定。 而在TensorFlow里面可以使用声明描述语言(Declarative)然后进行自动模型组织。


那么优化器呢? 这就是我们要考察的部分。 这些知名的平台的优化器有哪些种类, 是怎么实现的, 和基本模型有什么样的搭配?


Scikit-Learn的例子


举个Scikit-Learn的例子, 在Scikit-Learn里面, 对于SRM损失类算法的优化器叫Solver, 解算器。

常用的有:

1)牛顿法的LBFGS,

2)共轭梯度Congugate Gradient, cg,

3)和SVM优化的liblinear,

4)然后居然也加入了最新的SAG 和SAGA算法。


在最新版的, Scikit-Learn里面, 对于




但是对于神经网络,BP算法类, 除了可以使用LBGFS外, 还可以使用手动配置的SGD优化器和Adam优化器。





这样,我们大概知道Scikit-Learn这个平台里面优化器,有哪些,是怎么用的了。 也可以看出还是蛮时髦的, 但是却没有分布式算法。


小结:


我们罗列目前比较风流的平台们, 大概引述了下我们要比较的优化器们。 下期我们开始讲述其他平台的优化器是什么样的。


参考:

en.wikipedia.org/wiki/C

scholar.google.com/cita

docs.microsoft.com/en-u

lasagne.readthedocs.io/

ofai.at/~jan.schlueter/

sohu.com/a/119789749_46

linkedin.com/in/emailwe

PHP网站源码武威建网站多少钱汉中关键词排名哪家好海西设计网站公司吉安关键词按天扣费石岩设计网站开封SEO按天扣费报价宝安百度关键词包年推广广东网站优化软件大理阿里店铺托管多少钱银川seo优化公司白山网站推广工具价格三明百度爱采购哪家好长治关键词按天扣费报价红河模板网站建设公司和田推广网站价格平凉网站推广方案报价德阳网站搭建多少钱扬州seo网站推广池州网站seo优化木棉湾SEO按天扣费营口模板网站建设哪家好长葛网站改版多少钱阿坝百度竞价包年推广报价连云港网站优化多少钱吉祥百姓网标王推广哪家好南充阿里店铺托管价格保山外贸网站建设报价绥化网站优化推广报价梅州高端网站设计价格晋城如何制作网站哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化