美文网首页
深度卷积网络

深度卷积网络

作者: 此间不留白 | 来源:发表于2019-11-22 21:02 被阅读0次

经典网络

LeNet网络

LeNet网络的结构如下图所示,可以看出,LeNet网络并没有使用padding,每进行一次卷积,图像的高度和宽度都会缩小,而通道数会一直增加。在全连接层中有400个节点,每个极点都有120个神经元,有时还会从这400个节点抽取一部分节点构建一个全连接层,即有两个全连接层。在该网络中,最后一步就是利用84个特征得到最后的输出,该网络刚开始使用的是sigmoid函数tanh函数,而现在常常倾向于使用softmax函数。需要注意的是,LeNet-5网络进行图像分类时,输入的图像是单通道的灰度图像。

AlexNet

AlexNet是以论文第一作者的名字命名的,该网络的结构,如下图所示,该网络的输出层使用了softmax函数。AlexNet网络比LeNet网络规模更大,大约有6000万个参数,用于训练图像和数据集时,能够处理非常相似的基本构造模块,这些模块中包含着大量的隐藏单元,并且与LeNet网络不同的是,该网络使用了ReLu的激活函数。

VGG-16

VGG-16网络没有太多的超参数,这是一种专注于构建卷积层的简单网络。如下图所示,该网络首先利用64个过滤器进行了两次卷积,接着在池化层将输入图像压缩,接着又是128个过滤器进行两次卷积,接着载池化。继续用256个过滤器进行3次卷积,再池化,接着再利用512个过滤器卷积3次,再池化,将稍后得到的特征图进行全连接操作,再进softmax激活。

残差网络(ResNets:Residual Networks)

由于存在梯度消失和梯度爆炸的原因,深层次的神经网络是很难训练的,如果采用一种跳跃连接的方式,即从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。这种利用跳跃连接构建的深度神经网络ResNets,深度能够超过100层

一个简单的两层神经网络示例,如下图所示:


常规的输出和输出之间的关系可以用如下的公式表示:
z^{[l+1]} = W^{[l+1]}a^{[l]}+b^{[l+1]} \tag{1}
a^{[l+1]} = g(z^{[l+1]}) \tag{2}
z^{[l+2]} = W^{[l+2]}a^{[l+1]}+b^{[l+2]} \tag{3}
a^{[l+2]} = g(z^{[l+2]}) \tag{4}
a^{[l+2]} = g(z^{[l+2]}) \tag{5}

如上公式所述,这是一条神经网络的主路径。如果将a^{[l]}的输入直接到深层的激活函数之前,此时,神经网络有了一条副路径,其对应输出将有公式(5)变成如下所示的公式(6)

a^{[l+2]} = g(z^{[l+2]}+a^{[l]}) \tag{6}
此时的输入除了原先的输入a^{[l+2]}外,多了一个a^{[l]}项,即由于a^{[l]} 产生了一个残差块。

构建一个ResNet网络就是将很多这样的残差块堆积在一起,形成一个深度神经网络,如下所示:


使用传统的标准优化算法训练一个网络,随着网络深度的增加,训练误差会先减小再增加,随着网络层数的增加,优化算法会越难以训练,训练误差也会越来越多。但是,使用ResNet网络,能够有效地避免这种情况。

对残差网络的理解

如上所述,加入残差网络之后,其输出计算公式如公式(6)所示,展开这个公式,则有:
a^{[l+2]} = g(W^{[l+2]}a^{[l+1]}+b^{[l+2]}+a^{[l]}) \tag{7}

如果使用L2正则化或者权重衰减,则会压缩权重参数W^{[l+2]}的值,如果参数W^{[l+2]}和参数b^{[l+2]}等于0,其输出将由公式(7)变成a^{[l+2]} = g(a^{[l]}),假定使用ReLU激活函数,则有:a^{[l+2]} = a^{[l]}

由于残差网络存在的这种跳跃连接,很容易得出以上等式,这意味着,即使给神经网络增加两层,但是其效率并不逊色与更简单的神经网络。并且由于存在以上恒等式,使得网络学习隐藏层的单元的信息更加容易。而普通网络,随着网络层数的增加,学习参数会变得很困难。

此外,关于残差网络,如公式(6)所示,假设z^{[l+2]}a^{[l]}具有相同的维度,由于ResNets使用了许多same卷积,a^{[l]}的维度等于输出层的维度。如果输入和输出具有不同的维度,可以再增加一个矩阵W_s,使得W_s*a^{[l]}a^{[l+2]}具有相同的维度。而W_s的维度可以通过0值填充调节。

1×1的卷积网络

在卷积网络的架构设计中,一种有趣的想法是会使用到1×1的过滤矩阵,实际上,对于单通道的图像而言,1×1的过滤矩阵,意义不大,但是,对于多通道的图像而言,1×1的过滤矩阵能够有效减少图像卷积之后的通道数量。

根据卷积和池化的基本知识,随着神经网络层数的增加,图像的通道数量会逐渐增加,采用1×1的过滤矩阵卷积之后,可以有效减少图像的通道数量,一个简单的示例,如下所示:

假设有一个6×6×32的图片,使用1×1×32的过滤矩阵进行卷积运算,整个运算过程将会遍历36个单元格,并计算过滤矩阵所覆盖区域的元素积之和,将其应用到ReLu非线性函数,会得到一个输出值。此计算过程中,可能会用到多个1×1×32的过滤器,那么,通过以上计算会得到一个6×6×过滤器数量的矩阵。

Inception网络

构建卷积神经网络时,有时会很难决定过滤器的大小,而Inception网络的引入,却能很好的解决这个问题。

Inception网络的作用就是代替人工确定选择卷积层的过滤器类型。如下图所示,对于一个多通道图像,可以使用不同的过滤矩阵或者池化层,得到不同的输出,将这些输出堆积起来。

有了如上图所示的Inception块,最终输出为32+32+64+128=256,而Inception模块的输入为28×28×192,其整个计算成本,以5×5的过滤矩阵为例,其乘法的计算次数为:28×28×32×5×5×192,整个计算次数超过了1.2亿次。而如果使用如下所示的优化计算方法,则可以有效减少计算量。

如果利用1×1的过滤器,将输入矩阵的通道减少至16,则可以有效减少计算量,如下所示:

如上图所示的价格中,整个网络的运算次数为:28×28×192×16+28×28×32×5×5×16=1240万,整个计算成本降低至原来的十分之一。而,通过1×1×192过滤器卷积得到的这个网络层被称之为瓶颈层。

如上,所示,可以给每一个非1×1的卷积层之前,加入一个1×1的瓶颈层,就可以构建一个基本的inception模块了,如下图所示:


而一个inception网络就是多个Inception模块连接起来,如下图所示:


事实上,以上网络中,还存在一些分支,如编号1所示,这些分支就是全连接层,而全连接层之后就是一个softmax层用于预测。又如分支2所示,包含一些隐藏层(编号3),通过全连接层和softmax进行预测。这些分支结构能够确保,即使是隐藏层和中间层也参与了特征计算,并且也能够预测图片的分类。这种做法能够有效避免网络过拟合。

数据增强

对于计算机视觉领域而言,神经网络的训练可能需要大量的数据,但是当数据量有限时,可以通过数据增强来实现数据量的扩充,以提高系统的鲁棒性,具体的数据增强方法如下所示:

  • 镜像翻转
  • 随机裁剪
  • 颜色转换(RGB通道增加不同的失真值)

除了以上三种数据增强的方法外,更多的数据增强方法和实现可以参考图像数据增强

数据增强可以利用计算机多线程实现,一个线程用来实现加载数据,实现数据增强,其他线程可以训练这些数据以加快整体的运算速度。

相关文章

网友评论

      本文标题:深度卷积网络

      本文链接:https://www.haomeiwen.com/subject/ghraictx.html