点击标题下「异步图书」可快速关注
你所不了解的深度神经网络
深度神经网络的定义
这个领域正面临着快速的变化,每天我们都能听到DNN被用于解决新的问题,比如计算机视觉、自动驾驶、语音识别和文本理解等。
出于实践的角度,我们这儿所说的深度学习和深度神经网络是指深度超过几个相似层的神经网络结构,一般能够到达几十层,或者是由一些复杂的模块组合而成。
深度网络结构的历史变迁
我们会回顾深度学习的每一个里程碑,从LeNet 5开始。
1.2.1 LeNet 5
神经网络领域在20世纪八九十年代还很寂静。尽管有很多努力,但是那时的网络结构还比较简单,而且往往需要巨大的(通常是达不到的)计算资源。
大概在1998年,在贝尔实验室,Yan LeCun在研究手写数字分类的时候,提出了卷积神经网络。卷积神经网络是当前的深度神经网络的基石之一。
在那个年代,SVM和其他的机器学习工具才是处理这类问题的主流,但是CNN的那篇奠基之作,表明神经网络也能够达到甚至是超过当时最好的处理结果。
1.2.2 Alexnet
经过多年的中断(尽管在此期间,LeCun继续将他的神经网络模型延伸到其他任务,如人脸和对象检测),神经网络终于迎来了复苏。结构化数据和计算机处理能力的爆炸性增长使得深度学习成为可能。过去要训练数月的网络,现在能够在比较短的时间内训练完成。
来自多家公司和大学的多个团队开始用深度神经网络处理各种问题,包括图像识别。其中,一个著名的比赛叫作ImageNet图像分类,Alexnet就是为了这个测试所开发,如图1所示。
图1 Alexnet结构
Alexnet可以被看作LeNet 5的扩展,也就是说第一层用的是卷积神经网络,然后连接上一个不常用的最大池化层,然后是几个全链接层,在最后一层输出概率。
1.2.3 VGG模型
图像分类挑战的另一个主要的竞争者是牛津大学的VGG团队。
VGG(Visual Geometry Group,可视化几何团队)网络结构的主要特点,就是减小了卷积滤波的大小,只用一个3×3的滤波器,并将它们不断组合,如图2所示。
这种小型化的滤波器是对LeNet以及其继任者Alexnet的一个突破,这两个的网络滤波器都是设为11×11。小型化滤波器的操作引领了一个新的潮流,并且一直延续到现在。
但是尽管滤波器变小了,但是总体参数依然非常大(通常有几百万个参数),所以还需要改进。
图2 VGG的参数数目
1.2.4 第一代Inception模型
在Alexnet和VGG统治了深度学习一两年之后,谷歌公司发布了他们的深度学习模型——Inception。到现在为止,Inception已经发布了好几个版本。
第一个版本的Inception是GoogLeNet,如图3所示。从图上看,它的结构模型很深,但是本质上它是通过堆叠9个基本上没有怎么改变的Inception模块。
尽管如此复杂,但是相比于Alexnet,Inception减少了参数的数量,增加了准确率。
Inception的可解释性和可扩展性相对于Alexnet也有所增加。因为事实上,该模型结构就是堆叠相似的结构。
图3 第一代Inception模型
1.2.5 第二代Inception模型
2015年的时候,深度学习还有一个问题,就是随着一次又一次的迭代,深度神经网络稳定性不够好。
为了理解这个稳定性的问题,首先,我们回忆一下前面例子中使用过的标准化,包含中心化,以及将标准差归一化。主要是为了反向传播(back propagation)的梯度。
在真正大型数据集的训练过程中发生的是,在经过多次训练的例子之后,不同的振荡频率开始放大平均参数值,如共振现象,我们称之为协方差漂移。
这就是使用批量标准化的主要原因。
为了简化过程描述,批量标准化不仅仅应用于输入层,它应用于每一层,在它们开始影响或者漂移数值之前。
这就是Inception V2的主要特点,谷歌公司在2015年1月份发布,提升了GoogLeNet。
1.2.6 第三代Inception模型
时间来到2015年12月,Inception的结构又经历了一轮新的迭代。发布之间的月份差异使我们了解到新迭代的发展速度。
新的架构有如下调整:
降低了卷积滤波器的大小,最大是3×3;
增加了网络的深度;
使用宽度增加技术加了每层提高特征组合。
图4说明了如何解释改进的Inception模块。
图4 改进的Inception模块
图5是整个V3模型的结构图,由许多新的Inception模块的实例拼接而成。
图5 Inception V3模型
1.2.7 残差网络(ResNet)
残差神经网络结构出现在2015年12月(基本上跟Inception V3的发布时间差不多)。ResNet带来了一个简单但是很新颖的想法,不仅仅使用卷积层的输出,还要结合上原始输入层的输出。
在图6中,我们可以看到一个简单的ResNet的模块:3个卷积层的堆积和一个relu操作。
图6 残差网络一般结构
卷积的部分包括了一个从256降到64的操作,使用一个3×3的滤波层来控制特征数目,增补一个1×1的层。在最近的发展中,ResNet也被用在少于30层的网络结构中。
1.2.8 其他的深度神经网络结构
有许多最先发展的深度神经网络的结构;实际上,这个领域每天的变化都是如此之快,几乎每天多少都有几个优秀的结构冒出来。下面是几个最有前途的网络结构:
SqueezeNet:该网络为了简化Alexnet的参数数量,宣称可以达到50×参数数量的降低。
高效神经网络(Efficient Neural NetworkEnet):用于减少浮点操作,实现实时的神经网络。
Fractalnet:用于实现非常深的深度网络。该网络不使用残差结构,而是实现一种分形(fractal)结构。
本文摘自《TensorFlow机器学习项目实战》
延伸推荐
《Go Web编程》这一本不可错过!
2017优秀图书和作译者评选-进行中赢取kindle等技术图书礼!
AI经典书单| 入门人工智能该读哪些书?
聊聊Python
点击关键词阅读更多新书:
Python|机器学习|Kotlin|Java|移动开发|机器人|有奖活动|Web前端|书单
点击阅读原文购买《TensorFlow机器学习项目实战》