人工智能–ResNet模型

人工智能之ResNet模型

前言:人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章。人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。深度神经网络是不是越深越好?理想情况下,只要不过拟合,应该是越深越好。但是实际情况是网络加深,准确度却下降,针对这个问题,有人提出了称这种情况为ResNet模型来解决,今天我们重点探讨一下ResNet模型^_^。

神经网络的层数(深度)对解决分类和回归问题的效果有着很大影响,正常想法是把网络设计的越深越好,但是事实上却不是这样。

采用常规的网络堆叠,随着神经网络层数的加深,容易造成梯度在BP过程中消失,会出现训练集准确率下降现象, 且不是由于过拟合造成的。针对这个问题有人提出了一种全新的网络模型,叫ResNet深度残差网络模型,它允许网络尽可能的加深,其中引入了全新的结构。

ResNet深度残差网络模型在2015被提出,在ImageNet比赛classification任务上获得第一名,因为“简单与实用”,之后很多方法都建立在ResNet50或者ResNet101基础上完成,检测,分割,识别等领域都纷纷使用ResNet,Alpha zero也使用了ResNet,可见ResNet确实很好用。

ResNet模型概念:

随着神经网络的加深,容易因梯度消失而造成训练集准确率下降现象, 且不是由于过拟合造成的。于是提出ResNet深度残差网络模型来解决这个问题。

ResNet(Residual Neural Network)深度残差网络模型由前微软研究院的 KaimingHe 等4名华人提出,通过使用 Residual Blocks成功训练152层深的神经网络,在 ILSVRC 2015 比赛中获得了冠军,取得 3.57% 的 top-5 错误率,同时参数量却比 VGGNet 低,效果非常突出。ResNet结构可以极快地加速超深神经网络的训练,模型的准确率也有非常大的提升。可以看到 ResNet 是一个推广性非常好的网络结构。

ResNet的基本思想是引入了能够跳过一层或多层的“shortcut connection”,如上图所示。用当今比较流行的话来说,就是“弯道超车”。ResNet提出了两种mapping:一种是identity mapping,从上图看出,指的是”弯弯的曲线”,另一种residual mapping,指的就是除了”弯弯的曲线“外的那部分,所以最后的输出是 y=H(x)=F(x)+x。其中identity mapping是指本身,即公式中的x,而residual mapping指的是“差”,也就是y−x,所以残差指的是F(x)部分。

ResNet并不是第一个利用shortcut connection的,Highway Network引入了“gated shortcutconnection”,其中带参数的gate控制了shortcut中可通过的信息量。类似的做法也存在于LSTM(参见人工智能(28))单元里,在LSTM单元中也有一个forget gate来控制着流入下一阶段的信息量。因此,ResNet可以被看作是HighwayNetwork的一个特例。

ResNet模型本质:

针对“随着网络加深,准确率下降”的问题,Resnet提供了两种选择方式,也就是identity mapping和residual mapping,如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。

假定某段神经网络的输入是x,期望输出是H(x),即H(x)是期望的复杂潜在映射,如果是要学习这样的模型,则训练难度会比较大。假如已经学习到较饱和的准确率(或者当发现下层的误差变大时),那么接下来的学习目标就转变为恒等映射的学习,也就是使输入x近似于输出H(x),以保持在后面的层次中不会造成精度下降。

通过“shortcut connections(捷径连接)”的方式,直接把输入x传到输出作为初始结果,输出结果为H(x)=F(x)+x,当F(x)=0时,那么H(x)=x,也就是上面所提到的恒等映射。于是,ResNet相当于将学习目标改变了,不再是学习一个完整的输出,而是目标值H(X)和x的差值,也就是所谓的残差F(x):= H(x)-x,因此,后面的训练目标就是要将残差结果逼近于0,使到随着网络加深,准确率不下降。

Resnet残差网络借鉴了Highway Network高速网络的跨层链接思想,但对其进行改进,残差项原本是带权值的,但ResNet用恒等映射来代替。

ReLU激活函数:

从上图不难看出,ReLU函数其实是分段线性函数,把所有的负值都变为0,而正值不变,这种操作被成为单侧抑制。可别小看这个简单的操作,正因为有了这单侧抑制,才使得神经网络中的神经元也具有了稀疏激活性。尤其体现在深度神经网络模型(如CNN)中,当模型增加N层之后,理论上ReLU神经元的激活率将降低2的N次方倍。

相比于其它激活函数来说,ReLU有以下优势:对于线性函数而言,ReLU的表达能力更强,尤其体现在深度网络中;而对于非线性函数而言,ReLU由于非负区间的梯度为常数,因此不存在梯度消失问题(VanishingGradient Problem),使得模型的收敛速度维持在一个稳定状态。

ResNet模型意义:

Resnet使用了一种连接方式叫做“shortcut connection”,顾名思义,shortcut就是“抄近道”的意思。即增加一个identitymapping(恒等映射),将原始所需要学的函数H(x)转换成F(x)+x,而作者认为这两种表达的效果相同,但是优化的难度却并不相同,作者假设F(x)的优化 会比H(x)简单的多。这一想法也是源于图像处理中的残差向量编码,通过一个reformulation,将一个问题分解成多个尺度直接的残差问题,能够很好的起到优化训练的效果。

这个Residual block通过shortcut connection实现,通过shortcut将这个block的输入和输出进行一个element-wise的加叠,这个简单的加法并不会给网络增加额外的参数和计算量,同时却可以大大增加模型的训练速度、提高训练效果,并且当模型的层数加深时,这个简单的结构能够很好的解决退化问题。

ResNet泛化能力:

对于shortcut的方式,有人提出了三个选项:

A.使用恒等映射,如果residual block的输入输出维度不一致,对增加的维度用0来填充;

B.在block输入输出维度一致时使用恒等映射,不一致时使用线性投影以保证维度一致;

C.对于所有的block均使用线性投影。

对这三个选项都进行了实验,发现虽然C的效果好于B的效果好于A的效果,但是差距很小,因此线性投影并不是必需的,而使用0填充时,可以保证模型的复杂度最低,这对于更深的网络是更加有利的。通过进一步实验,又提出了deeper的residual block。相当于对于相同数量的层又减少了参数量,因此可以拓展成更深的模型。于是提出了50、101、152层的ResNet,而且不仅没有出现退化问题,错误率也大大降低,同时计算复杂度也保持在很低的程度。

ResNet模型优势:

1)ResNet模型采用了残差跳跃式结构,打破了传统的神经网络n-1层的输出只能给n层作为输入的惯例,使某一层的输出可以直接跨过几层作为后面某一层的输入,其意义在于为叠加多层网络而使得整个学习模型的错误率不降反升的难题提供了新的方向。

2)神经网络的层数可以超越之前的约束,达到几十层、上百层甚至千层,为高级语义特征提取和分类提供了可行性。

3)降低了计算量和参数数目。

4)可以看作多路径网络的集合,取代了传统的单一路径网络。

5)网络中各个路径都是不相互依赖的,这一不相关性很好的增加了整体结构的正则效果。

6)对网络训练过程中梯度有贡献的路径集中在浅层处(有效路径),通过增加有效短路径权重的方式实现Vanishing gradient问题。

ResNet模型性能:

结合了调参数和神经网络其他细节,可以看到,对于相同的数据集来讲,ResNet残差模型网络比同等深度的其他网络表现出了更好的性能,如下表所示:

结语:

深度网络容易造成梯度在BP过程中消失,导致训练效果变差,而ResNet深度残差模型网络在神经网络的结构层面解决了这一问题,残差函数更容易优化,能使网络层数大大加深,同时梯度也不会消失。因其“简单与实用”而为人所知。ResNet深度残差模型网络应用范围较广,灵活性很大扩展性强。它在检测、分割、识别等领域得到越来越广泛的应用。

------以往文章推荐-----

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180531G1W6JZ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券