ResNet网络(里程碑)

ResNet网络的由来

《用于图像识别的深度残差学习》(Deep Residual Learning for Image Recognition)[1]。这篇论文获得了 CVPR 2016 的最佳论文,在发表之后的两年间里获得了超过 1 万 2 千次的论文引用。

MSRA(微软亚洲研究院)何凯明团队的深度残差网络(Deep Residual Network)在2015年的ImageNet上取得冠军,该网络简称为ResNet(由算法Residual命名),层数达到了152层,top-5错误率降到了3.57,而2014年冠军GoogLeNet的错误率是6.7。(何凯明博士,2007年清华大学毕业之后开始在微软亚洲研究院(MSRA)实习,2011年香港中文大学博士毕业后正式加入MSRA,目前在Facebook AI Research (FAIR)实验室担任研究科学家)。

VGGNet和GoogLeNet都显示了网络有足够的深度是模型表现良好的前提,但是在网络达到一定深度之后,简单的网络堆叠反而效果变差了。

论文的主要贡献

我们前面介绍 VGG 和 GoogleNet 的时候就已经提到过,在深度学习模型的前进道路上,一个重要的研究课题就是神经网络结构究竟能够搭建多深。 这个课题要从两个方面来看:第一个是现实层面,那就是如何构建更深的网络,如何能够训练更深的网络,以及如何才能展示出更深网络的更好性能;第二个是理论层面,那就是如何真正把网络深度,或者说是层次度,以及网络的宽度和模型整体的泛化性能直接联系起来。 在很长的一段时间里,研究人员对神经网络结构有一个大胆的预测,那就是更深的网络架构能够带来更好的泛化能力。但是要想真正实现这样的结果其实并不容易,我们都会遇到哪些挑战呢?

一个长期的挑战就是模型训练时的梯度“爆炸”(Exploding)或者“消失”(Vanishing)。为了解决这个问题,在深度学习研究刚刚开始的一段时间,就如雨后春笋般爆发出了很多技术手段,比如“线性整流函数”(ReLu),“批量归一化”(Batch Normalization),“预先训练”(Pre-Training)等等。

另外一个挑战是在 VGG 和 GoogleNet 的创新之后,大家慢慢发现单纯加入更多的网络层次其实并不能带来性能的提升。研究人员有这样一个发现:当一个模型加入到 50 多层后,模型的性能不但没有提升,反而还有下降,也就是模型的准确度变差了。这样看,好像模型的性能到了一个“瓶颈”。那是不是说深度模型的深度其实是有一个限度的呢?

我们从 GoogleNet 的思路可以看出,网络结构是可以加深的,比如对网络结构的局部进行创新。而这篇论文,就是追随 GoogleNet 的方法,在网络结构上提出了一个新的结构,叫“残差网络”(Residual Network),简称为 ResNet,从而能够把模型的规模从几层、十几层或者几十层一直推到了上百层的结构。这就是这篇文章的最大贡献。 从模型在实际数据集中的表现效果来看,ResNet 的错误率只有 VGG 和 GoogleNet 的一半,模型的泛化能力随着层数的增多而逐渐增加。这其实是一件非常值得深度学习学者振奋的事情,因为它意味着深度学习解决了一个重要问题,突破了一个瓶颈。

我们都知道一个卷积神经网络的网络深度是很重要的,通常增加网络深度可以提升网络的准确率,但是很深的网络层,由于参数初始化一般更靠近0,这样在训练的过程中更新浅层网络的参数时,很容易随着网络的深入而导致梯度消失,浅层的参数无法更新。同时,随着网络深度的增加,就会出现准确度变得饱和,然后开始下降的退化问题。而ResNet利用残差网络结构解决了深层神经网络出现的梯度消失和网络退化的问题。

网络架构

  • ResNet中解决深层网络梯度消失的问题的核心结构是残差网络
  • ResNet指出,在许多的数据库上都显示出一个普遍的现象: 增加网络深度到一定程度时,更深的网络意味着更高的训练误差。
  • 误差升高的原因是网络越深,梯度消失的现象就越明显,所以在后向传播的时候,无法有效的把梯度更新到前面的网络层,靠前的网络层参数无法更新,导致训练和测试效果变差。

网络架构

 

亮点:

  • 超深的网络结构(可以突破1000层)
  • 提出residual模块
  • 使用标准化处理加速训练
原文地址:https://www.cnblogs.com/liang1013/p/14581384.html