语义分割学习——残差网络ResNet

**

语义分割学习——残差网络ResNet论文笔记

**

ResNet是为了可以更好地训练深层次的神经网络。
当更深的网络能够开始收敛时,会出现退化问题:随着网络深度的增加,准确率达到饱和,之后就迅速下降。并且这种下降不是由过拟合引起的,在适当的深度模型上添加更多的层会导致更高的训练误差。图片表明随着训练次数的增加,深层的网络最终误差不会继续下降了
什么是残差网络呢?

神经网络可以视为一个非线性的拟合函数,由x映射为H(x)。那么假如我的网络输出不是H(x),而是H(x)- x,记为F(x),即为残差网络,网络的输出为输出与输入的残差。那么新的网络设计对网络有什么改变呢?
假设一个模型所需的层次比较浅,如果用一个较深层次的模型实现这个模型,可以认为在浅层次网络的基础上添加了许多层恒等映射,即H(x) = x,对于残差网络而言,即为F(x) = 0。训练一个输出为零的映射要比训练一个恒等映射难得多,因此可以认为这样的网络应该对于深层次的神经网络构造有所帮助。当然实际情况会比恒等映射复杂,但是我们有理由认为深层次网络是在恒等映射附近范围浮动。引入残差网络我们就不是把恒等映射当成一个要去学习的函数了,而是将恒等映射作为预处理在基础上进行微小的浮动优化。原来我们要训练的是恒等映射与一小部分浮动,现在我们只需要训练一个零附近的映射,这应该会更加精确。

如何实现残差网络

论文中提出了一种残差网路的实现方案。
在这里插入图片描述
y = F ( x , W i ) + x y=F(x,{W_i})+x y=F(x,Wi)+x
这就可以实现一个在恒等映射基础上的网络的实现。但是为了保证F(x)是一个非线性的映射,应该最少由两层组成并且存在激活函数,论文中为Relu。吴恩达的视频中讲到了为什么残差网络是有效的,因为上一层的RELU输出是一个非负的,由快捷链接过来,经过RELU函数后不变,也就是快捷链接构造了一个恒等的映射。此时如果中间的非线性层再学习到了东西,就可以拥有更好的性能了。
还有一种方式是 y = F ( x , W i ) + W s ∗ x y=F(x,{W_i})+W_s*x y=F(x,Wi)+Wsx
这种方式后面的Ws的作用在于将x的维度进行改变,因为有的时候不能用恒等连接了,因为输出与输入的维度不匹配,因此利用Ws矩阵进行了维度的变化,此时的快捷连接就不是恒等映射了,矩阵Ws的参数也需要进行学习。
以上的论述是对于全连接层而言的,但是卷积神经网络中同样适用。只是有一些变化,比如在转化维度的时候,对于卷积神经网络而言,维度变化时,长宽变为原来二分之一,通道数增加为原先的两倍。这时候论文中采用了两种方法,我们接下来进行解释。

网络的架构

进行了两种网络的对比。
原始网络为plain(简单)网络,是在VGG-19网络的模型基础上进行改造的深层次神经网络,按照VGG网络的启发,(i)对于相同的输出特征图尺寸,层具有相同数量的滤波器;(ii)如果特征图尺寸减半,则滤波器数量加倍,以便保持每层的时间复杂度。通过步长为2的卷积层直接执行下采样。网络以全局平均池化层和具有softmax的1000维全连接层结束。
残差网络的构建为在plain网络基础上加入了残差块的链接。当输入和输出具有相同的维度时(图3中的实线快捷连接)时,可以直接使用恒等快捷连接(方程(1))。当维度增加(图3中的虚线快捷连接)时,我们考虑两个选项:(A)快捷连接仍然执行恒等映射,额外填充零输入以增加维度。此选项不会引入额外的参数;(B)方程(2)中的投影快捷连接用于匹配维度(由1×1卷积完成)。对于这两个选项,当快捷连接跨越两种尺寸的特征图时,它们执行时步长为2。但是我们注意到其中H,W(长宽)都变化为了原来的二分之一,论文中没有给出这个问题的具体处理,在github上看到有人用步长为2的1x1卷积做下采样,以得到与输出匹配的维度。
在这里插入图片描述
网络的训练方法

采用论文[1]中介绍的方法,调整图像的大小使它的短边长度随机的从[256,480][256,480] 中采样来增大图像的尺寸。 从一张图像或者它的水平翻转图像中随机采样一个224*224的crop,每个像素都减去均值。图像使用标准的颜色增强。我们在每一个卷积层之后,激活层之前均使用batch normalization。根据[2] 中介绍的方法进行权重的初始化,从零开始训练所有plain网络与残差网络。使用批大小为256的SGD方法。学习速度从0.1开始,当误差稳定时学习率除以10,并且模型训练高达60×10460×104次迭代,权重衰减为0.0001,动量为0.9。根据[3]的实践,论文没有使用dropout。

实验的效果

Plain网络
对于没有加入残差块的网络,plain-34网络不管是训练误差还是验证集上的误差,都要比plain-18要大。由于plain网络采用了BN来训练,这保证了前向传播信号有非零方差,不可能是梯度下降造成的这种退化现象。作者推测推测深度简单网络可能有指数级低收敛特性,这影响了训练误差的降低。
ResNet网络
基准架构与上述的plain网络相同,预计每对3×3滤波器都会添加快捷连接。在第一次比较中,作者对所有快捷连接都使用恒等映射和零填充以增加维度),因此与对应的简单网络相比并没有增加没有额外的参数。但是此时我们注意到深层次的残差网络效果要比浅层次的好!
在这里插入图片描述

恒等 vs. 投影快捷连接
恒等模型就是方程一,投影映射就是方程二,加入了矩阵Ws。恒等模型在维度相同的时候使用,而投影映射在维度需要改变时使用。
投影映射有三种方式:
(A)零填充快捷连接用来增加维度,所有的快捷连接是没有参数的;
(B)投影快捷连接用来增加维度,其它的快捷连接是恒等的;
©所有的快捷连接都是投影。
这三种方式都比plain网络要好,B比A稍好是因为0元素没有残差学习,C比B稍好因为加入了新的参数。三种之间的差异比较小,因此作者认为投影快捷连接对于解决退化问题不是至关重要的。为了节省时间空间复杂度,没必要采用方案C。
瓶颈结构
为了减少计算量,将残差块又两层网络改为三层,分别为1×1,3×3和1×1三层卷积,1×1用来改变维度,3×3类似于一个瓶颈。在这里插入图片描述
无参数恒等快捷连接对于瓶颈架构尤为重要。如果上图中的恒等快捷连接被投影替换,则可以显示出时间复杂度和模型大小加倍,因为快捷连接是连接到两个高维端。因此,恒等快捷连接可以为瓶颈设计得到更有效的模型。
50层ResNet:用3层瓶颈块替换34层网络中的每一个2层块,得到了一个50层ResNet(采用选项B来增加维度,38亿FLOP)。
101层和152层ResNet:使用更多的3层瓶颈块来构建101层和152层ResNets。值得注意的是,尽管深度显著增加,但152层ResNet(113亿FLOP)仍然比VGG-16/19网络(153/196亿FLOP)具有更低的复杂度。
实验效果如下,我们发现并没有出现退化现象,而且层次越高越准确。
在这里插入图片描述
在数据集CIFAR-10上的实验
网络构造的方式:
作者设计的网络输入是32×32的图像,每个像素减去均值。第一层是3×3卷积,然后在大小为{32,16,8}的特征图上分别使用了带有3×3卷积的6n个堆叠层,每个特征图大小使用2n层。滤波器数量分别为{16,32,64}。下采样由步长为2的卷积进行。网络以全局平均池化,一个10维全连接层和softmax作为结束。共有6n+2个堆叠的加权层。如下图:
在这里插入图片描述
作者在训练的时候采用的都是方法A,而我们在具体操作的时候可以考虑B与C以期望得到更好的精确度。
论文中具体参数如下:权重衰减为0.0001和动量为0.9,并采用[2]和BN[3]中的权重初始化,但没有使用dropout。这些模型在两个GPU上进行训练,批处理大小为128。开始使用的学习率为0.1,在32k次和48k次迭代后学习率除以10,并在64k次迭代后终止训练,这是由45k/5k的训练/验证集分割决定的。使用了[4]中的简单数据增强进行训练:每边填充4个像素,并从填充图像或其水平翻转图像中随机采样32×32的裁剪图像。
训练效果如下:
在这里插入图片描述
其中有几点值得我们注意:
1)对于较为深层次的网络如110层(n=18),初始学习率为0.1并不合适,采用0.01更有利于收敛。在错误率下降到80%之后(约400轮迭代)再改回0.1的学习率。与其他的深层窄模型,FitNet和 Highway相比,具有更少的参数,然而却达到了最好的结果。
2)残差网络中单层对于输入信号的响应比plain网络要小,这也恰好证明了提出这个网络时的初始想法。
在这里插入图片描述
3)超过一千层的深层次残差网络效果不如110层的残差网络,但是效果也不错。原因可能是数据集较小网络参数过多导致了过拟合,如果采用了dropout或者maxout可能会比较好的改善,通过强大的正则化也可能能够较好的改善效果。在实际操作中是可以借鉴的。

附录:

[1] A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In NIPS, 2012.
[2] K. He, X. Zhang, S. Ren, and J. Sun. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification. In
ICCV, 2015.
[3] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In ICML, 2015.
[4] C.-Y. Lee, S. Xie, P. Gallagher, Z. Zhang, and Z. Tu. Deeply-supervised nets. arXiv:1409.5185, 2014.

在论文中出现的一些名词的解释

BN(batch normalization):
之前的研究表明如果在图像处理中对输入图像进行白化(Whiten)操作(对输入数据分布变换到0均值,单位方差的正态分布)那么神经网络会较快收敛。对于sigmiod函数而言,越靠近零越远离梯度消失的区域。如果对于每一层都进行这样的操作有利于收敛的更快。
效果主要有:①极大提升了训练速度,收敛过程大大加快;
②增加分类效果,一种解释是这是类似于Dropout的一种防止过拟合的正则化表达方式,所以不用Dropout也能达到相当的效果;
③调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等。
(如果用relu还有这样的效果吗?)

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值