这个年代,不怕你是大牛,就怕大牛还会写文章。
做为AI100智库专家,智亮老是能在滔滔不绝中,让人深刻浅出地学到一堆堆干货,掏心窝子的干货。php
多年的实战经验,让智亮不管是在知乎解答,仍是各路博客上,都是大神同样的存在。html
就在前几日,跟智亮聊起来AI入门这个话题,他的滔滔江水延绵不绝实在是震惊了我,太实用了。再三要求下,智亮答应将其多年心得写出来,这一写就洋洋洒洒近万字,不管是他对将来豪情万丈般的预判,仍是对于实战细致入微的解析,仍是一番苦口婆心的劝导,全在里面不吐不快了。python
这篇文章主要解决三个问题:git
1.开发人员是否应该转向机器学习?程序员
2.须要什么条件才能转向机器学习?github
3.应该怎么开始机器学习?算法
末了,智亮说,写完有一种身体被掏空的感受。数据库
看来是真下了功夫啊!ubuntu
如下,enjoy。windows
做者 | 智亮
编辑 | 鸽子(rgznai100)
曾几什么时候,咱们读着比尔盖茨的传记,感叹他大学时就能徒手写OS的天才同时,也不由唏嘘:如今写一个OS又哪是几我的几台电脑能搞的定的。
乔布斯的车库创业,虽然听着比鸡汤还暖心,但是那个时代毕竟已通过去了。留下的,只有无数挣扎着从C++/Delphi转型的资深程序员。
互联网崛起的时代,马化腾带着几我的就开发出了OICQ,造就了现在偌大的腾讯帝国。
智能手机爆发的时代,随便山寨一个游戏就能赚得盆满钵满;而如今,即便用心作了一个APP,推广费用至少也是百万级吧。
互联网(以及移动互联网)时代,已经接近尾声,草根创业变得无比艰难。
表明着互联网时代的JAVA程序员们,开始日落西山;而表明着移动互联网时代的Android/iOS程序员们,应该也感觉到就业形势的日趋严峻吧。
每一波浪潮的到来,都意味一片无人占领的蓝海,也意味着众多新成长起来的巨头,还意味着什么?意味着大量的人员需求,供不该求的开发市场,以及从业者的高薪与众多的机会。
咱们最常作的事情是目送着上一次浪潮的余波远去,感叹本身生不逢时,却没有意识到,下一波浪潮已经到了咱们脚下。
百度前首席科学家吴恩达曾经说过,在他看来,机器学习对于世界的改变,能够与电能对于世界的改变相媲美。而更多的人,已经开始用“第四次工业革命”来预言人工智能带来的产业革新:
前三次工业革命,让人类摆脱了重体力劳动、精细体力劳动、简单计算劳动。而这一次,伴随着人工智能而来的机器学习,极可能让人类没必要在简单思考判断类劳动上消耗大量人力资源。
好比,目前仅在中国就有出租车130万辆,载货车辆超过千万,也就是说,天天以“驾驶”做为主要职业的人群就达到千万量级。若是自动驾驶得以普及,至少在中国就有千万人被“释放”,也就是说,老司机们得从新学一门吃饭的手艺了。
再好比安防领域,全国天天坐在各类监控屏幕前的人(没错,就是每部谍战/犯罪类电影里都会被抹脖子的那个职业)也接近百万。但是,当智能摄像头出现时,监控人员将败给在0.1秒内就会判断反常局面、识别数万人脸的AI;
还有视频网站鉴黄师,将输给没有荷尔蒙却能每秒检出数百段色情视频的AI;
同声传译员会败给没有延迟、而且能够同时用几十种不一样语言跟人聊天的AI;
还有网文筛选编辑、快递地址分拣员等等,这些咱们据说过或者没有据说过的职业,这些消耗着无数人的时间和精力的职业,都将一一被AI战胜。
这不是简单的失业和再就业的问题,而是一次全新的社会结构大调整,一次对咱们习觉得常的生活伤筋动骨的革新。
就在机器学习砸掉这些人饭碗、逼迫他们投入到其余的工做时,咱们的社会,已经开启了新一轮的历史性革新。
让咱们细细来个例子。
自动驾驶,这是巨头公司投入了大量精力的领域。不少人直观的感觉是,之后买辆车,开起来可就不用那么累了。
的确如此,但并不是这么简单。
让咱们深刻这个问题。
若是全部车辆都变成了自动驾驶,你真的还须要买一辆车吗?
咱们购买车辆的时候,买的不是四个轮子加一个发动机,而是购买“随时随心快速出行的能力”,使咱们没必要忍受公交太挤、有急事打不到车、偏远地区去了回不来等等困扰。
而在自动驾驶的状况下,司机交班、扎堆、偏远地方打不到车,网上叫车没人接单等状况,还会存在吗?如此,咱们又何须每一个人买一辆车,忍受路上堵、停车难这些困扰呢?
到时候,大量的无人车在各类巨型停车场静静地趴着,只要有人下单,几分钟后,就会有一辆无人车来到你面前,任你驱使。
让咱们再沿着这个思路想深一些。
当无人车充斥咱们周围时,这些车辆是否必定有必要设计成五座?也许根据实际运营数据的分析,单人车辆、二人车辆会成为无人车辆的主流,不只出行更加便捷,减小浪费,还能大大减轻交通流量压力,缓解拥堵。
将来,颇有可能连交通拥堵也没有了。设想,当全部车辆的实时情况,都经过网络汇总到管控机构,管控机构便能根据实时路况,与车辆遥相呼应,车辆自动规划更为合适的路径,自动缓解交通压力。
不妨再想一想,当智能驾驶足够可靠的时候,如今的交通路口红绿灯机制是否还有必要?甚至说,如今的一切交通规则是否会有一个巨大的改变?
这还仅仅是针对一项技术开出的脑洞,就已经足够改变现有的整个出行结构和出行规则。将来人工智能的每一项技术,都是对所在行业的完全改写。至于能改写成什么,恐怕没有人能说得清楚。
惟一能够想象的是,咱们在不须要学习外语,不须要考驾照的同时,会须要更多的机器学习专家和相关开发人员。
其实,上面这些事情,身在IT圈中的人,应该都有着直观的认识。最近这两年,谈论机器学习,神经网络的人愈来愈多,而各类“人工智能”相关的消息也是铺天盖地,大有“不入圈就淘汰”的汹汹势头。
但与此同时,各类不明觉厉的言词也吓退了不少非科班出身的开发者。
什么叫卷积神经网络?什么叫凸优化?是否是还要回去重读高数,线代,几率?那么一大堆公式,感受彻底看不懂啊?据说没个名校博士出身都搞不了这个?
不光是普通程序猿这么说,文艺的程序猿和……额,高大上的程序猿也都这么说。
我说,呵呵。
在好久之前的一篇知乎回答中提过,做为开发人员,机器学习界在我看来会分红这么几个层次:
➤ 1. 学术研究者
他们的工做是从理论上诠释机器学习的各个方面,试图找出“这样设计模型/参数为何效果更好”,而且为其余从业者提供更优秀的模型,甚至将理论研究向前推动一步。
可以作到这一步的人,能够说百里挑一,天赋是绕不过去的大山,机遇和努力也缺一不可。
➤ 2. 算法改进者
他们也许没法回答出“个人方法为何work”,也许没有Hinton,LeCun那样足以载入史册的重大成果,可是却能根据经验和一些奇思妙想,将现有的模型玩出更好的效果,或者提出一些改进的模型。
这些人一般都是各个机器学习巨头公司的中坚力量或者成长中的独角兽,使用什么模型对他们来说也不是问题,根据所处的环境,一般都有固定的几个选择。
在这个层面,insight和idea才是重要的东西,各类工具的区别,影响真的没那么大。可能会让一个结果早获得或者晚获得几天或者几周,却不可能影响“有没有成果”。
➤ 3. 工业实现者
这些人基本上不会在算法领域涉入太深,也就是了解一下各个算法的实现,各个模型的结构。他们更多地是根据论文去复现优秀的成果,或者使用其余人复现出来的成果,而且试图去在工业上应用它。
分好了类,来讲正事。
想要成为一个机器学习开发人员,究竟须要作些什么准备?到底如何才能从一个C++/JAVA/Android/iOS程序猿成为一个机器学习开发人员呢?
答案只有一个:
做为程序员,读十遍书不如跑一遍程序,与其花费大量的时间去啃书本,不如亲手完成本身的程序并运行它。咱们在写出代码的同时,就会了解到本身还有哪些地方不够清楚,从而有针对性地学习机器学习。
基础知识
固然,勿在浮沙筑高台(对这句话眼熟的请举手),有一些基础的知识仍是须要掌握的。例如在计算机视觉领域,根据咱们团队内部培训的经验,为了可以独立进行机器学习的开发工做,最好首先完成这么几项课程:
➤ 入门,了解概念,算法基础:
Coursera 机器学习课程 - by 吴恩达
Machine Learning Coursera
https://www.coursera.org/learn/machine-learning
➤ 进阶,多层神经网络,卷积和softmax回归:
斯坦福机器学习课程 UFLDL
UFLDL Tutorial
http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial
重点关注其中的softmax回归,卷积和池化这几个章节
➤ 进阶,计算机视觉,卷积神经网络的新进展,实现和应用:
斯坦福计算机视觉课程 CS231n
斯坦福CS231n -深度学习与计算机视觉 - 网易云课堂http://study.163.com/course/introduction/1003223001.htm
上面的课程大概会消耗你1到2个月的全部业余时间。可是相信我,这是值得的。网络上的课程很是多,也有不少优秀的免费课程,可是做为入门,我没有找到过比这三个更适合的。
若是实在连一两个月的业余时间都拿不出来,好吧,我来偷偷告诉你最最最基本的一个要求,知足了这个要求,你就可以算是机器学习入门了:
别笑,说正经的,在这个框架高度封装的年代,梯度不须要本身算,损失不须要本身求,反向传导更是被处理得妥妥的,在不求甚解的状况下,你甚至只须要知道这么几个概念就能够开始着手写第一个程序了:
它就是经过一系列矩阵运算(或者相似的一些其余运算)将输入空间映射到输出空间而已。参与运算的矩阵的值称为权重,是须要经过不断迭代来寻找到最优值。
当前的权重值离最优值还差多远,用一个数值来表示,这个值就叫损失,计算这个值的函数叫损失函数。
当前的权重值应该调大仍是调小,这个值经过对损失函数求导来判断,这个求导获得的函数叫作梯度。
经过损失和梯度来更新权重的方法叫作反向传导。
迭代的方法称为梯度降低。
虽然这么写出来的程序必定是不知其因此然,可是其实20年前我第一次用C++写Hello world的时候也是一脸懵逼的,我相信,每一个可以投身机器学习开发工做的程序猿,都是有大毅力大勇气的,天然不会欠缺继续学习的动力和决心。
好吧,接下来你须要找一个框架来做为第一个程序的开发环境。(AI100小编注:下面真的全是干货,真如假包换货真价值的实战经验,瞪好眼睛开始了)
目前机器学习的框架很是的多,从面向的使用者这个维度去划分,大致上分红这么两个阵营:
➤ 学术友好型:Theano,Torch,Caffe
学术研究时,弄出来一个新模型,新算法,新函数是常有的事,作出新的突破也是学术研究的最基本要求。因此,这些框架一般均可以方便地定制模型,也能够深刻修改内部实现。不少新成果都会在发表论文的同时,提供这些框架上的实现代码供参考。性能方面也是比较出色。
而代价就是,要么使用了困难(Caffe:C++)或者小众(Torch:Lua)的开发语言界面,要么具备一些古怪的缺点(Theano:编译超级慢)。
并且,这些框架彷佛都没怎么考虑过“怎么提供服务”的问题。想要部署到服务器上?Caffe已是最简单的了,然而仍然要经历漫长而痛苦的摸索历程。
➤ 工业友好型:Tensorflow,MXnet,Caffe
工业上每每更注重“把一个东西作出来,而且让它运行得良好”。因此这些框架首先就须要支持并行训练。其中Tensorflow和MXnet支持多机多卡、单机多卡,多机单卡并行,Caffe支持单机多卡。虽然这些性能都不是特别理想。
在咱们的测试中,Tensorflow的双卡并行只能达到单卡的1.5倍左右性能,卡越多,这个比例越低。
Caffe要好一些,可是参数同步和梯度计算不管如何也都须要时间,因此没有哪一个框架能没有性能损失地实现扩展。
而多机的状况下,性能损失更大,不少时候都让人感到没法接受(这方面的优化只能之后有机会再提,若是有这方面的同好,欢迎讨论)。
相对来讲,Tensorflow提供了比较好的部署机制(Serving),而且有直接部署到移动端的方案。而MXnet和Caffe则是直接编译的方式,虽然也能够实现,可是说实话,仍是很麻烦。
至于缺点,就是除了Caffe以外,其余两种框架对于学术界的动态跟踪的都不太紧,Tensorflow到如今都没有pRelu的官方实现,在前阵子也才刚刚推出了一系列检测(Detection)的模型。
MXnet这一点要积极些,但是受限于较小的开发者社区,不少成果都只能等待大神们的contribution或者自行实现。
这样看来,难道最好的框架是Caffe?兼顾学术和实现,灵活性和性能兼备……
我得说,个人确是这么认为的。固然有一个前提,得懂C++……
若是不是C++开发人员出身,这门语言也不比机器学习容易多少了。
对于大多数有志于投身于机器学习开发(而不是研究)的同窗们来讲,我推荐首选Tensorflow做为你的第一个开发框架。
除了上述的优势以外,最主要的因素是,它人气高。在遇到任何问题的时候,你都会找到一群志同道合的伙伴们去咨询或者一块儿研究。这对于初学者而言,重要程度不言而喻。
好吧,选择就是这么的简单粗暴。
此外,还有一个良心建议,不论你选择哪一个框架,千万不要试图在windows上运行它。哪怕是号称支持windows的MXnet或者新版Tensorflow,不要问我怎么知道……仍是去装个Linux系统吧。建议使用ubuntu14.04或16.04。
学习用机配置
OK,接下来咱们就须要一台机器去把框架搭建起来,而且去写咱们的helloAI。然而我在不少地方都看到小伙伴们在问:
我须要什么样的配置能学机器学习?
我须要买块GTX1080/Titan/Tesla吗?
我应该装几块显卡?一块?两块?仍是四块?
答案也倾向于:“必须得有GPU啊,至少1080,没有四路titan你都很差意思和人打招呼”
其实,并不彻底是这样。
若是仅是入门和学习的话,CPU或者GPU彻底不影响对代码和框架的学习。运行起相似Mnist或者Cifar之类的玩具数据集,其实差距也并不大。好比在个人机器上,运行自带的Cifar demo,i7 CPU和GTX 1080 Ti的速度大概 770 pics/s VS. 2200 pics/s。GPU大概是不到三倍的性能优点。
瞧,差距也没那么大。
不过这里有一个小窍门,若是想用CPU版本的Tensorflow,最好不要使用pip下载的方式,而是用自行编译的方法。由于在开发机上编译时它会自动打开全部支持的加速指令集(SSE4.1/SSE4.2/AVX/AVX2/FMA),从而使CPU的运算大大加快。
根据咱们的测试,在打开所有加速指令集的状况下,训练速度大概会有30%的提高,而预测的速度大概会提高一倍。
固然,若是真的想要使用一个复杂模型去处理实际的生产问题,模型的复杂度和数据量都不是Cifar这样的玩具数据集能够相比的。若是用咱们的一个模型一样去运行Cifar数据集,其余参数和条件彻底相同,它在i5/i7/960/GTX1080/GTX1080Ti的速度分别是(单位仍是pics/s,越大越好):
19/25/140/460/620
这个时候大概就能看出差距了,1080Ti大概是i7 CPU的25倍。而在模型上线使用(inference)时,GPU也会有10-20倍的性能优点。模型越复杂,GPU的优点越明显。
综合这些来看,若是仅仅是入门时期的学习,我建议先不用专门购买带GPU的机器,先用你现有的机器,使用CPU版本,去学习框架和一些基础。等到你对基础已经掌握得比较扎实,那么天然就会有跑一些更复杂的模型和更“真实”的数据的想法,这个时候,能够考虑买一块GPU,来缩短训练的时间。
在选择GPU时,我听过一些朋友们推荐GTX1070 x 2这种选择。从理论上讲,1070的性能大概能达到1080的75%,而价格只是1080的一半,从各个方面来看,彷佛都是双1070更有优点。
然而不要忘记,双卡的性能是不可能达到单卡的2倍的,在目前的Tensorflow上,大概只能达到1.5倍上下,算下来其实和1080单卡差很少。而双显卡的主板和电源以及机箱散热都须要更多的考虑,从性价比上来看未必真的划算。
不过,若是显卡预算恰好卡在5000-6000这个档位,双1070也有它的优点。好比能够学习使用多显卡并行计算的用法,在不着急的时候能够同时用两块显卡跑两个不一样的任务,合并起来就至关于有了16G的显存等等。考虑到这些因素,双1070的确是最适合入门学习的选择——若是买不起双1080/双TITAN的话(哈哈哈)。
若是你打算用笔记原本做为主力学习用机的话,个人建议是:最好不要,除非你使用Linux经验很丰富或者不打算用GPU加速。不少笔记本在安装Liunx以后出现驱动方面的问题,并且使用GPU加速时的高热量也会很是影响系统的稳定性。若是没有很丰富的经验,常常会在一个问题上卡掉几个小时宝贵的学习时间。
➤ 安装Tensorflow时的那些坑
通常来讲,严格按照官网说明,在干净的系统上经过PIP安装CPU版,都不会遇到什么问题。
新手常犯的错误是忘记了执行:
sudo pip install --upgrade pip
致使在安装tensorflow时找不到。
而GPU版本最多见的坑是:
忘记关闭lightdm就去装驱动
这个没关系,执行
sudo stop lightdm
就行了。ubuntu 16.04用
sudo systemctl stop lightdm
安装CUDA时的第二个询问
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 xxx.xx?
这里输入yes是错的!
记住输入no!必定不要安装CUDA自带驱动。这一点格外重要,装上去之后每每就卡在GUI输入密码界面死循环了。
mnist?cifar?ImageNet?COCO?这些都是啥?
➤ MNIST
不论选择哪本教材,哪一个框架,在刚刚接触机器学习的时候,必定会接触到Mnist(读做M- nist)这个名字。
这是个由Yann LeCun(读成杨乐坤,不是严乐村)创建的手写数字库,每条数据是固定的784个字节,由28x28个灰度像素组成,大概长这样:
目标是对输入进行10-分类,从而输出每一个手写数字所表达的真实数字。由于它体积小(10M左右),数据多(6万张训练图片),适用范围广(NN/CNN/SVM/KNN均可以拿来跑跑)而天下闻名,其地位至关于机器学习界的Hello World。在LeCun的Mnist官方网站上,贴有各类模型跑这个数据集的最好成绩,当前的最好得分是CNN的大概99.7%。
MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burgeshttp://yann.lecun.com/exdb/mnist/
由于这个数据集实在很是的小,因此即便在CPU上,也能够用几秒钟时间跑完NN的训练,或者几分钟跑完一个简单的CNN的模型。
➤ CIFAR
而对于打算从图像方面入手的同窗,Cifar(读作see far)数据库则是更好的入门选项。
官网:CIFAR-10 and CIFAR-100 datasets
http://www.cs.toronto.edu/~kriz/cifar.html
这个数据库分为2个版本,CIFAR-10和CIFAR-100,顾名思义,CIFAR-10有10个分类,每一个分类有5000张训练图片和1000张测试图片,每张图片是32x32像素的3通道位图。大概长这样:
而CIFAR-100有100个分类,每一个分类变成了500张训练图片+100张测试图片,而图片的大小并没什么变化。
之因此说它比Mnist更适合做为图片处理的入门,是由于它虽然分辨率低了些,可是倒是三通道,真实拍摄的照片。其中有些图片的背景还略微复杂,更贴近咱们真实的图片处理场景。相对而言,Mnist的灰度输入和干净背景就显得有些过于简单,并且99.7%的准确率也确实很难有提高的空间。
Tensorflow给出了Cifar的例程:
https://www.tensorflow.org/tutorials/deep_cnn
并附有代码 :tensorflow/models
https://github.com/tensorflow/models/tree/fb96b71aec356e054678978875d6007ccc068e7a/tutorials/image/cifar10
➤ ImageNet 和 MS COCO
至于ImageNet(ImageNet)和COCO(http://mscoco.org/),则是两个工业级别的图像数据集。一般咱们提到他们时,ImageNet指的是ILSVRC2012的训练集,而COCO则是COCO-2014训练集。
ImageNet具备大量的图片(一百多万张,分红1000个分类)和标注,大部分都是这样的:
COCO虽然图片数量少一些(8万多张,80个分类),可是每张图片都有轮廓标记,而且附带分类标注和5句描述话语(英文的)。大概是这样的:
因此当咱们进入实际的工做时,能够根据具体的须要从中选择适合本身的数据集做为benchmark或者pretrain数据集。
在Tenforflow 安装完成后,咱们能够用这种方式最快地跑起来第一个Cifar demo:
git clone https://github.com/tensorflow/models.git my_models
cd my_models/tutorials/image/cifar10/
python cifar10_train.py
OK,只需几分钟下载数据,咱们就能够看到咱们的第一个“图像识别模型”正在训练了。
训练过程当中咱们能够看到log中在不断地输出loss信息,可是咱们除了想要跟踪loss以外,还但愿可以看到当前训练的模型到底识别的准确率如何,这个就不是cifar10_train.py这个脚本能提供的了。咱们还须要执行
python cifar10_eval.py
这个脚本会不断地验证最近的检查点的识别准确率。
若是使用GPU的话,会发如今运行起来训练脚本以后,全部的显存都已经被这个进程占满,再启动验证脚本的话会报错一大堆的内存不足(OOM),这是Tensorflow的机制决定的,它会默认占据全部显卡的全部显存,而无论本身是否真的用到那么多。
解决这个问题的办法也很简单。
首先,咱们能够指定Tensorflow使用哪几块显卡进行训练。要作到这一点,能够在执行较本前,用命令行指定环境变量:
export CUDA_VISIBLE_DEVICES="0,2"
其中的“0,2”就是但愿使用的GPU编号,从0开始,用逗号分隔开。
或者在代码中建立一个GPUOption,设置visible_device_list=‘0,2',也能起到一样的效果。
而后,咱们能够限制Tensorflow使用的显存,使其动态增加而不是启动就占满。方法和上面的相似,代码中建立一个GPUOption,并设置allow_growth=True便可。
官方的Cifar例程大概能达到86%的准确率,这个成绩在如今能够说算是比较差的了,最新的模型一般都有97%左右的准确率,即便是不仔细调参随便训训,也能轻松达到93%左右,你们能够尝试着修改cifar10.py中定义的模型,获得更好的效果。
我跑完了,而后呢?
那么,在运行完这个例子以后,其实你已经能够算是机器学习工程师中的一员了。
接下来就能够收集一些本身的数据,而且训练一些本身的识别引擎;或者尝试着优化这个模型,感觉一下所谓调参党的痛苦;又或者直接尝试实现ResNet、Inception这些更为先进的网络来刷刷Cifar;再否则能够尝试着向NLP或者强化学习方向去学习一下。
总之,这些事情远没有看起来那么难。
固然,不论那条路,学习,进步和自我鞭策都是逃避不掉的必修课。
一个新生的领域,勃勃的生机必然也意味着新成果的层出不穷。完成我上面提到的三门课程只能让一我的从门外汉变成圈里人,有了进入这个领域,遇上这波浪潮的基本资格,至于究竟是成为弄潮儿仍是直接被大浪吞没,仍是那句话,不劳苦必然无所得。努力学习不必定能修成正果,而不去努力学习,则注定是一无所得。
对于坚强地完成了全部课程的同窗们,我得说声恭喜,从咱们掌握的数据来看,只有10%左右的现役程序员决定向AI转身,并付诸了行动;而可以完成基础课程的人,只占了其中的30%不到。也就是说,当你完成CS231n的最后一个做业开始,你就已经站在了开发者的Top 5%之列。
在这个层面上,一般就会面临两件更加困难的任务:追论文和补数学。
如今的机器学习界,“ArXiv醒”已经成了症候群,几乎每周都会有更先进的内容冒出来,隔一两个月就会发现不少公认的知识被刷新了,隔一两年?简直没法想象。因此跟踪学术界的动态就成了从业者的必修课。哪怕做为工业实现者,若是不能第一时间掌握学术界的动态,就必定会面临对手忽然实力碾压本身的窘境。
好在机器学习界的风气和传统领域的学术界有一个很大的区别,得益于钢铁侠Elon Musk的OpenAI组织,学术界造成了ArXiv上预印论文和开源的风气。只是要想看懂这些论文和代码,前面提到的那些知识,却远远不够。看到这种论文([1706.02515] Self-Normalizing Neural Networks)的时候,你才会真正理解什么叫“没个博士学位都搞不了这东西”:
[1706.02515] Self-Normalizing Neural Networks
https://arxiv.org/abs/1706.02515
不管如何,感谢这开源的学术环境,让全部从业者都站在了同一块儿跑线上:最新的成果再也不是大公司垄断,小公司也同样能够弯道超车,用最早进的产品占领某个细分领域市场。
同时,这也让全部人都变得压力倍增:也许辛辛苦苦积累的经验技巧模型和数据,在一个颠覆性的成果面前忽然变得一文不值,随时随地都要面对后来者的降维打击。
这是个让人辛劳痛苦的领域。
这是个让人振奋鼓舞的领域。
这是个让人欲罢不能的领域。
这是个让人充满期待的领域。
这是天堂。
这是地狱。
咱们已经在这里等你,来吗,少年?
本文做者智亮:鲁朗软件联合创始人,tensorflow contributor,花伴侣团队机器学习负责人。
拥有十余年开发和管理经验。2010年起在移动互联网行业创业,团队曾开发多个千万用户级别的移动端产品。近期带领团队开发的人工智能识花应用上线数月,在0推广的状况下迅速达到百万用户,得到2017阿里云栖API Solution大赛一等奖,并受邀成为微信公开课北京站九位演讲嘉宾之一。因为其团队内部机器学习开发者,大部分从移动互联网开发者经过内部培训转型而来,其对行业的判断,以及对程序员转型到机器学习领域的经验值得借鉴。