3月28日,地平线机器人技术公司创始人余凯博士、亚马逊AWS机器学习总监Alex Smola、亚马逊AWS解决方案架构师邓明轩以及地平线机器人技术公司算法副总裁黄畅,在地平线和雷锋网联合主办的“大牛讲堂”上做了精彩分享。其中Alex Smola做了“使用MXNet实现快速、可扩展、定制化深度学习”的主题演讲,雷锋网根据现场录音和PPT做了不改变原意编译。
Alex Smola于1996年毕业于慕尼黑工业大学,获物理学硕士学位,1998年在柏林工业大学取得计算机科学博士学位。之后,他在澳大利亚国立大学担任研究院和研究小组组长。2004-2008年,Alex Smola在NICTA研究中心统计机器学习项目担任项目负责人,2008-2012年在雅虎的从事研究工作,2012-2014加入谷歌从事研究工作,2013年加入卡内基·梅隆大学担任教授,2015年,他创立了Marianas实验室,2016年,Alex加入亚马逊,目前担任亚马逊AWS的机器学习总监。迄今为止,Alex共发表超过200篇论文并参与编写多本学术专著。
1. 深度学习让一切变得更容易
演讲一开始,Alex就提出了一个问题,“为什么我们现在要做深度学习?”在他看来,最主要的原因有两点:海量的数据以及计算能力的大幅提升。如今,数据已经可以很容易获取,而计算能力的提升则是由于GPU在深度学习领域的应用。
从游戏“FizzBuzz”说起
接着,Alex列举了一个例子——FizzBuzz,这是一种用来教导小学生除法的游戏:从1数到100,如果遇见了3的倍数要说Fizz,5的倍数到说Buzz,如果即是3的倍数又是5的倍数要说FizzBuzz。
如果要通过编程方法来实现,那么需要先生成训练数据,然后提取输入数据的特征,然后再训练一个分类器,让输入能够映射出相应的输出,这一切看起来似乎非常愚蠢。
但是Alex认为,如果你有了“真正的数据”,这其实是是非常有用的。比如训通过一台小型摄像机来识别猫和狗,这个过程非常复杂,而且无法像以前一样写出代码,但是却有很多样本数据可供使用,可以用来训练estimator(判定器),然后可以基于这些数据搭建一个模型。
而通过MXNet,你所需要做的仅仅只有定义输入数据,调用MXNet的“fully connected layer”,最后获得Softmax输出。而MXNet会替你做好数据迭代、加载脚本、以及训练循环。
不过,当只有一层感知器(perecptron)的时候,还比较容易训练,但是有多层感知器的的时候,训练会变得十分困难。这将涉及到对每一层的表达,以及过程中的对象变换,而且还会用到链式法则(chain rule,微积分中的求导法则,用于求一个复合函数的导数),然而MXNet可以自动完成这些过程。
从游戏“Where's Waldo?”说起
那么要怎样做具体的图像识别呢?这里Alex列举了另一个很有名的游戏——“Where's Waldo?”其实, 《Where's Waldo?》是一套由英国插画家Martin Handford创作的儿童书籍,这个书的目标就是让在读者在一张人山人海的图片中找出一个特定的人物——“Waldo”。那么要如何让计算机来从图像中识别出“Waldo”呢?这里就需要用到卷积神经网络。
CNN(卷积神经网络)
什么是卷积?卷积就是两个函数之间的相互关系,然后得出一个新的值,他是在连续空间做积分计算,然后在离散空间内求和的过程。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。
在卷积神经网络中,除了卷积层,还有一种叫池化(pooling)的操作。它实际上是一种形式的向下采样,有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。
Alex在这里列举了两种卷积神经网络模型:
1). LeNet
Le顾名思义就是指人工智能领域的大牛Lecun。这个网络是深度学习网络的最初原型,因为之前的网络都比较浅,它是较深的。
雷锋网(公众号:雷锋网)曾对LeNet的实现过程做过详解:
首先,输入图像是32×32的灰度图,第一层经过了一组卷积和,生成了6个28X28的feature map,然后经过一个池化层,得到得到6个14X14的feature map,然后再经过一个卷积层,生成了16个10X10的卷积层,再经过池化层生成16个5×5的feature map。
从最后16个5X5的feature map开始,经过了3个全连接层,达到最后的输出,输出就是标签空间的输出。由于设计的是只要对0到9进行识别,所以输出空间是10,如果要对10个数字再加上26个大小字母进行识别的话,输出空间就是62。62维向量里,如果某一个维度上的值最大,它对应的那个字母和数字就是就是预测结果。
2). Inception
谷歌的Inception v1的网络将1×1、3×3、5×5的卷积和3×3的最大池化堆叠在一起,并在3×3、5×5的卷积前以及3×3最大池化后分别加上了1×1的卷积核,起到了降低特征图厚度的作用,上图就是Inception v1的网络结构。
Alex称,要通过Caffe来实现这一结构需要几千行代码,然而要如何简化这一过程呢?这也就引出了一个问题:为什么我们需要另一个深度学习工具?
2. 为什么需要另一个深度学习工具?
目前市面上已经有了TensorFlow、Caffe、Torch、Keras、CNTK、PaddlePaddle、Theano等等,那么我们为什么还需要MXNet呢?
Alex介绍道,MXNet主要有3方面的优势:
-
效率:节省计算资源,资源利用效率高;
-
速度:可以随着机器和GPU的扩展呈线性增长,而且在单台机器上也有很高的效率;
-
简单易用:同时支持命令式编程(imperative programming)和声明式编程(declarative programming)。
根据维基百科的解释:
命令式编程是一种描述电脑所需作出的行为的编程范型,较高级的指令式编程语言使用变量和更复杂的语句,但仍依从相同的范型。因为命令式编程的基础观念,不但概念上比较熟悉,而且较容易具体表现于硬件,所以大部分的编程语言都是指令式的。
声明式编程与命令式编程相对立。它描述目标的性质,让电脑明白目标,而非流程。声明式编程是告诉计算机需要计算“什么”而不是“如何”去计算,而命令式编程则需要用算法来明确的指出每一步该怎么做。
比如,如果深度架构的计算图谱需要深度优化,则比较适合声明式编程;而涉及到更新以及图谱交互时,比如迭代循环、参数更新、定向搜索、特征提取等,这时命令式编程则更为合适。
Alex认为,提高用户的工作效率最为关键。
由于每个用户偏好的编程语言以及深度学习的框架可能各不相同,因此MXNet努力扩展自己的兼容性。根据Alex的PPT,目前MXNet已经能够调用Torch,并可以无缝兼容Caffe Layer,而且将很快兼容Keras。
虽然MXNet同时支持命令式编程和声明式编程,但是并没有将两者融汇贯通。有开发者基于MXNet,开发了MinPy,提供numpy接口,用来解决这个问题。在使用MinPy时,只需要简单改写一句import语句:import minpy.numpy as np,就能够开始使用MinPy了。由于是完全的命令式编程的接口,编程的灵活性被大大提高。
Alex列举了一个例子(如上图所示),在TensorFlow中,如果需要打印某个变量,需要在打印语句前加上 “control_dependencies”。而在MinPy中,可以直接使用Python的原生“print”语句。
此外,由于GPU采用的是高度并行的运行方式,这也是为何GPU比CPU更加适合深度学习的原因。然而想要写出并行的程序则是一件非常痛苦的事情,但是MXNet则可以自动执行这一过程:你只需要编写串行程序,MXNet就可以自动实现并行运行。
当然,Alex也将MXNet与目前最流行的谷歌TensorFlow进行了对比。根据Alex的介绍,在分布式训练的实验中,如果用10台以上的机器,MXNet处理图像样本的速度要比TensorFlow快2倍。
不过,Alex也提醒道,要想在分布式训练的过程中快速达到收敛,Batch Size的选择也很重要,并不是越大越好。
3. AWS为深度学习提供的各种云服务
作为全球第一大云服务提供商,亚马逊也为深度学习提供各种云服务,Alex主要介绍了Amazon Machine Images(简称AMI)以及 CloudFormation Template。
从字面上就可以看出,AMI主打图像识别,它可以节省数据科学家和开发者设置深度学习系统的时间。除了支持亚马逊自己的MXNet框架外,AMI还支持TensorFlow、Caffe、Torch、Theano、Keras,用户可以使用Anaconda、Jupyter、Python 2、Python 3。
Alex表示,如果你要为深度学习搭建一个计算机集群(一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作),亚马逊则提供AWS CloudFormation Template。
虽然MXNet有很多优势,并于去年11月被亚马逊选为官方深度学习框架,又在今年2月加入Apache孵化器,利用Apache软件基金会的流程、管理、外展和社区活动,但是目前最流行的仍然是谷歌的TensorFlow等常用框架。由于被谷歌抢占先机,未来MXNet想要快速发展,必须争取更多开发者的支持。
【招聘】雷锋网坚持在人工智能、无人驾驶、VR/AR、Fintech、未来医疗等领域第一时间提供海外科技动态与资讯。我们需要若干关注国际新闻、具有一定的科技新闻选题能力,翻译及写作能力优良的外翻编辑加入。
简历投递至 wudexin@leiphone.com,工作地 北京。
。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/79743.html