剩余网络

残差网络(简称ResNet)是继三个经典CNN网络Alexnet Googlenet VGG之后,于2015提出的,并获得ImageNet竞赛分类任务一等奖。ResNet以其简单实用的优点,被广泛应用于检测、分割、识别等领域。

ResNet可以说是过去几年计算机视觉和深度学习领域最具开创性的工作,它有效地解决了随着网络的深入,训练集准确率下降的问题,如下图所示:

做过深度学习的同学应该知道,随着网络层数的增加,训练效果变差的原因之一是梯度分散和梯度爆炸的问题,抑制了浅层网络参数的收敛。但是这个问题已经被一些参数初始化技术解决了。感兴趣的同学可以看看参考文献中的以下文章:[2][3][4][5][6]。

即便如此,当网络深度较高时(比如图中的56层网络),效果还是会变差。我们从Alexnet Googlenet VGG的前三个模型可以看出,网络的深度在图像识别中起着至关重要的作用,网络越深,可以自动学习的不同层次的特征就越多。那么是什么原因导致效果变差呢?

图3

左边19层的VGG模型计算量为19.6亿次FLOPs,中间34层的普通卷积网络计算量为36亿次FLOPs。

右边是34层的ResNet,计算负载为36亿次FLOPs。图中实线箭头为无尺寸变化的直接映射,虚线为有尺寸变化的映射。通过对比可以看出,VGG虽然层数少,但是计算量还是很大的。后面从实验数据可以看出,34层ResNet的性能会比19更好。

从图中可以看出,34层残差网络在效果上优于VGG和谷歌网络。在A、B、C三个方案中,方案C的效果最好,但方案B和C的计算量比方案A大得多,效果提升不大,所以作者建议方案A更实用。

下面介绍一下50层以上剩余网络的结构:更深的瓶颈架构。这种结构是作者为了减少训练时间而设计的。结构对如下图所示:

ResNet通过残差学习解决了深度网络的退化问题,从而可以训练更深层次的网络,可以称之为深度网络的历史性突破。也许很快会有更好的方法来训练更深的网络。让我们一起期待吧!

目前你可以在人工智能建模平台Mo上找到一个基于tensorflow的残差网络(ResNet)的34层实现实例。数据集为CIFAR-10(CIFAR的十类数据集)。这个例子的准确率在测试集上是90%,在验证集上是98%。主程序在ResNet_Operator.py中,网络的块结构在ResNet_Block.py中,训练好的模型保存在results文件夹中。

项目源地址:/explore/5d 1b0a 031 AFD 944132a 0797d?类型=应用程序

参考资料:

[1]_何国光,张,任,孙军。用于图像识别的深度残差学习。arXiv预印本arXiv:1512.03385,2015。

[2] Y .勒昆、l .博图、G. B .奥尔和K.-R.M .乌勒。高效的反向投影。《神经网络:交易技巧》,第9-50页。斯普林格,1998。

[3] X .格洛特和y .本吉奥。理解训练深度前馈神经网络的困难。在AISTATS,2010。

[4] A. M .萨克斯、J. L .麦克莱兰和s .甘古利。深度线性神经网络学习的非线性动力学的精确解arxiv:1312.6120,2013。

[5]何国光、张晓松、任少宁和孙军。深入研究整流器:在imagenet分类上超越人类水平的性能。在ICCV,2015。

[6] S .约菲和c .塞格迪。批量标准化:通过减少内部协变量转移加速深度网络训练。在ICML,2015。

Mo(网址:)是一个支持Python的人工智能在线建模平台,可以帮助你快速开发、训练和部署模型。

莫人工智能俱乐部是由和网站产品设计团队发起的俱乐部,致力于降低人工智能开发和使用的门槛。团队拥有大数据处理、分析、可视化和数据建模经验,承担过多领域智能项目,具备从底层到前端的全线设计开发能力。主要研究方向是大数据管理分析和人工智能技术,推动数据驱动的科学研究。