【深度学习】搞懂卷积神经网络(一)
卷积神经网络是一种具有局部连接,权重共享等特性的深层前馈神经网络。一般是由卷积层,池化层,全连接层交叉堆叠而成,使用反向传播算法进行训练。卷积神经网络具有一定程度上的平移,缩放和旋转不变性,较前馈神经网络而言,其参数更少。
什么是卷积神经网络?
卷积神经网络(Convolutional Neural Network,CNN或ConvNet)是一种具有局部连接、权重共享等特性的深层前馈神经网络。
卷积神经网络最早主要是用来处理图像信息。在用全连接前馈网络来处理图像时,会存在以下两个问题:
(1) 参数太多:如果输入图像大小为100 × 100 × 3(即图像高度为100,宽度为100 以及 RGB 3 个颜色通道),在全连接前馈网络中,第一个隐藏层的每个神经元到输入层都有 100 × 100 × 3 = 30000 个互相独立的连接,每个连接都对应一个权重参数。随着隐藏层神经元数量的增多,参数的规模也会急剧增加。这会导致整个神经网络的训练效率非常低,也很容易出现过拟合。
(2) 局部不变性特征:自然图像中的物体都具有局部不变性特征,比如尺度缩放、平移、旋转等操作不影响其语义信息。而全连接前馈网络很难提取这些局部不变性特征,一般需要进行数据增强来提高性能。
局部连接
在卷积层(假设是第𝑙 层)中的每一个神经元都只和前一层(第𝑙 −1 层)中某个局部窗口内的神经元相连,构成一个局部连接网络。如下图(b)所示,卷积层和前一层之间的连接数大大减少,由原来的 个连接变为个连接,𝐾 为卷积核大小。
权重共享
作为参数的卷积核𝒘(𝑙 ) 对于第𝑙 层的所有的神经元都是相同的。如下图(b)中,所有的同颜色连接上的权重是相同的。权重共享可以理解为一个卷积核只捕捉输入数据中的一种特定的局部特征。因此,如果要提取多种特征就需要使用多个不同的卷积核。由于局部连接和权重共享,卷积层的参数只有一个 𝐾 维的权重 𝒘(𝑙) 和 1 维的偏置𝑏 (𝑙),共𝐾 + 1个参数。参数个数和神经元的数量无关。此外,第𝑙 层的神经元个数不是任意选择的,而是满足 。
一个典型的卷积网络是由卷积层、池化层、全连接层交叉堆叠而成。目前常用的卷积网络整体结构如图所示。一个卷积块为连续 𝑀 个卷积层和 𝑏 个池化层(𝑀 通常设置为2 ∼ 5,𝑏为0或1)。一个卷积网络中可以堆叠𝑁 个连续的卷积块,然后在后面接着 𝐾 个全连接层(𝑁 的取值区间比较大,比如 1 ∼ 100 或者更大;𝐾 一般为0 ∼ 2)。
目前,卷积网络的整体结构趋向于使用更小的卷积核(比如 1 × 1 和 3 × 3) 以及更深的结构(比如层数大于 50)。此外,由于卷积的操作性越来越灵活(比如不同的步长),池化层的作用也变得越来越小,因此目前比较流行的卷积网络中,池化层的比例正在逐渐降低,趋向于全卷积网络。
几种典型的卷积神经网络
LeNet-5
LeNet-5[LeCun et al., 1998] 虽然提出的时间比较早,但它是一个非常成功的神经网络模型。基于LeNet-5的手写数字识别系统在 20世纪90年代被美国很多银行使用,用来识别支票上面的手写数字。
AlexNet
AlexNet[Krizhevsky et al., 2012] 是第一个现代深度卷积网络模型,其首次使用了很多现代深度卷积网络的技术方法,比如使用 GPU 进行并行训练,采用 了 ReLU 作为非线性激活函数,使用 Dropout 防止过拟合,使用数据增强来提高模型准确率等。这些技术极大地推动了端到端的深度学习模型的发展。AlexNet赢得了2012年ImageNet图像分类竞赛的冠军。AlexNet的结构如图所示,包括5个卷积层、3个池化层和3个全连接层。
VGGNet
VGGNet是牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司的研究员一起研发的深度卷积神经网络。
VGGNet探索了卷积神经网络的深度与其性能之间的关系,通过反复堆叠3×3的小型卷积核和2×2的最大池化层,VGGNet成功地构筑了16~19层深的卷积神经网络。VGGNet相比之前state-of-the-art的网络结构,错误率大幅下降,VGGNet论文中全部使用了3×3的小型卷积核和2×2的最大池化核,通过不断加深网络结构来提升性能。VGG16的结构如图所示:
Inception网络
在卷积网络中,如何设置卷积层的卷积核大小是一个十分关键的问题。在 Inception 网络中,一个卷积层包含多个不同大小的卷积操作,称为Inception模块。Inception网络是由有多个Inception模块和少量的池化层堆叠而成。
Inception模块同时使用1 × 1、3 × 3、5 × 5等不同大小的卷积核,并将得到的特征映射在深度上拼接(堆叠)起来作为输出特征映射。
GoogLeNet 由 9 个 Inception v1 模块和5个池化层以及其他一些卷积层和全连接层构成,总共为22层网络。为了解决梯度消失问题,GoogLeNet 在网络中间层引入两个辅助分类器来加强监督信息。GoogLeNet赢得了2014年ImageNet图像分类竞赛的冠军。
ResNet
残差网络(Residual Networks,简称为 ResNets)残差网络有助于解决梯度消失和梯度爆炸问题,使得在训练更深的网络的同时,又能保证良好的性能。残差块定义如下,通过捷径(Short cut,或者称跳远连接,Skip connections)可以将 a[l]添加到第二个 ReLU 过程中,直接建立a[l] 与a[l+2] 之间的隔层联系。
理论上,随着网络深度的增加,性能应该越来越好。但实际上,对于一个普通网络,随着神经网络层数增加,训练错误会先减少,然后开始增多。但残差网络的训练效果显示,即使网络再深,其在训练集上的表现也会越来越好。