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 Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
如果要通过编程方法来实现,那么需要先生成训练数据,然后提取输入数据的特征,然后再训练一个分类器,让输入能够映射出相应的输出,这一切看起来似乎非常愚蠢。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
但是Alex认为,如果你有了“真正的数据”,这其实是是非常有用的。比如训通过一台小型摄像机来识别猫和狗,这个过程非常复杂,而且无法像以前一样写出代码,但是却有很多样本数据可供使用,可以用来训练estimator(判定器),然后可以基于这些数据搭建一个模型。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
而通过MXNet,你所需要做的仅仅只有定义输入数据,调用MXNet的“fully connected layer”,最后获得Softmax输出。而MXNet会替你做好数据迭代、加载脚本、以及训练循环。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
不过,当只有一层感知器(perecptron)的时候,还比较容易训练,但是有多层感知器的的时候,训练会变得十分困难。这将涉及到对每一层的表达,以及过程中的对象变换,而且还会用到链式法则(chain rule,微积分中的求导法则,用于求一个复合函数的导数),然而MXNet可以自动完成这些过程。
从游戏“Where's Waldo?”说起
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
那么要怎样做具体的图像识别呢?这里Alex列举了另一个很有名的游戏——“Where's Waldo?”其实, 《Where's Waldo?》是一套由英国插画家Martin Handford创作的儿童书籍,这个书的目标就是让在读者在一张人山人海的
图片中找出一个特定的人物——“Waldo”。那么要如何让计算机来从图像中识别出“Waldo”呢?这里就需要用到卷积神经网络。
CNN(卷积神经网络)
什么是卷积?卷积就是两个函数之间的相互关系,然后得出一个新的值,他是在连续空间做积分计算,然后在离散空间内求和的过程。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。
在卷积神经网络中,除了卷积层,还有一种叫池化(pooling)的操作。它实际上是一种形式的向下采样,有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。
Alex在这里列举了两种卷积神经网络模型:
1). LeNet
Le顾名思义就是指人工智能领域的大牛Lecun。这个网络是深度学习网络的最初原型,因为之前的网络都比较浅,它是较深的。
雷锋网曾对LeNet的实现过程做过详解:
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
首先,输入图像是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
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
谷歌的Inception v1的网络将1x1、3x3、5x5的卷积和3x3的最大池化堆叠在一起,并在3x3、5x5的卷积前以及3x3最大池化后分别加上了1x1的卷积核,起到了降低特征图厚度的作用,上图就是Inception v1的网络结构。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
Alex称,要通过Caffe来实现这一结构需要几千行代码,然而要如何简化这一过程呢?这也就引出了一个问题:为什么我们需要另一个深度学习工具?
2. 为什么需要另一个深度学习工具?
目前市面上已经有了TensorFlow、Caffe、Torch、Keras、CNTK、PaddlePaddle、Theano等等,那么我们为什么还需要MXNet呢?
Alex介绍道,MXNet主要有3方面的优势:
效率:节省计算资源,资源利用效率高;
速度:可以随着机器和GPU的扩展呈线性增长,而且在单台机器上也有很高的效率;
简单易用:同时支持命令式编程(imperative programming)和声明式编程(declarative programming)。
根据维基百科的解释:
命令式编程是一种描述电脑所需作出的行为的编程范型,较高级的指令式编程语言使用变量和更复杂的语句,但仍依从相同的范型。因为命令式编程的基础观念,不但概念上比较熟悉,而且较容易具体表现于硬件,所以大部分的编程语言都是指令式的。
声明式编程与命令式编程相对立。它描述目标的性质,让电脑明白目标,而非流程。声明式编程是告诉计算机需要计算“什么”而不是“如何”去计算,而命令式编程则需要用算法来明确的指出每一步该怎么做。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
比如,如果深度架构的计算图谱需要深度优化,则比较适合声明式编程;而涉及到更新以及图谱交互时,比如迭代循环、参数更新、定向搜索、特征提取等,这时命令式编程则更为合适。
Alex认为,提高用户的工作效率最为关键。
由于每个用户偏好的编程语言以及深度学习的框架可能各不相同,因此MXNet努力扩展自己的兼容性。根据Alex的PPT,目前MXNet已经能够调用Torch,并可以无缝兼容Caffe Layer,而且将很快兼容Keras。
虽然MXNet同时支持命令式编程和声明式编程,但是并没有将两者融汇贯通。有开发者基于MXNet,开发了MinPy,提供numpy接口,用来解决这个问题。在使用MinPy时,只需要简单改写一句import语句:import minpy.numpy as np,就能够开始使用MinPy了。由于是完全的命令式编程的接口,编程的灵活性被大大提高。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
Alex列举了一个例子(如上图所示),在TensorFlow中,如果需要打印某个变量,需要在打印语句前加上 “control_dependencies”。而在MinPy中,可以直接使用Python的原生“print”语句。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
此外,由于GPU采用的是高度并行的运行方式,这也是为何GPU比CPU更加适合深度学习的原因。然而想要写出并行的程序则是一件非常痛苦的事情,但是MXNet则可以自动执行这一过程:你只需要编写串行程序,MXNet就可以自动实现并行运行。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
当然,Alex也将MXNet与目前最流行的谷歌TensorFlow进行了对比。根据Alex的介绍,在分布式训练的实验中,如果用10台以上的机器,MXNet处理图像样本的速度要比TensorFlow快2倍。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
不过,Alex也提醒道,要想在分布式训练的过程中快速达到收敛,Batch Size的选择也很重要,并不是越大越好。
3. AWS为深度学习提供的各种云服务
作为全球第一大云服务提供商,亚马逊也为深度学习提供各种云服务,Alex主要介绍了Amazon Machine Images(简称AMI)以及 CloudFormation Template。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
从字面上就可以看出,AMI主打图像识别,它可以节省数据科学家和开发者设置深度学习系统的时间。除了支持亚马逊自己的MXNet框架外,AMI还支持TensorFlow、Caffe、Torch、Theano、Keras,用户可以使用Anaconda、Jupyter、Python 2、Python 3。
亚马逊机器学习总监Alex Smola:TensorFlow、Caffe等已经存在,为何还需要MXNet?
Alex表示,如果你要为深度学习搭建一个计算机集群(一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作),亚马逊则提供AWS CloudFormation Template。
虽然MXNet有很多优势,并于去年11月被亚马逊选为官方深度学习框架,又在今年2月加入Apache孵化器,利用Apache软件基金会的流程、管理、外展和社区活动,但是目前最流行的仍然是谷歌的TensorFlow等常用框架。由于被谷歌抢占先机,未来MXNet想要快速发展,必须争取更多开发者的支持。