Tensorflow 残差网络ResNet

1. ResNet 有两种结构设计:

一说起“深度学习”,自然就联想到它非常显著的特点“深”,通过很深层次的网络实现准确率非常高的图像识别、语音识别等能力。因此,我们自然很容易就想到:深的网络一般会比浅的网络效果好,如果要进一步地提升模型的准确率,最直接的方法就是把网络设计得越深越好,这样模型的准确率也就会越来越准确。

但是通过实验可以发现:随着网络层级的不断增加,模型精度不断得到提升,而当网络层级增加到一定的数目以后,训练精度和测试精度迅速下降,这说明当网络变得很深以后,深度网络就变得更加难以训练了。

随着网络深度的加深,梯度消失&爆炸问题十分明显,网络甚至出现了退化。在论文中通过一个20层和一个56层的普通网络进行了对比,发现56层网络的性能远低于20层网络,如图1所示。

Tensorflow 残差网络ResNet

那么,如何又能加深网络层数、又能解决梯度消失问题、又能提升模型精度呢?
深度残差网络(Deep Residual Network,简称DRN)

假设现有一个比较浅的网络(Shallow Net)已达到了饱和的准确率,这时在它后面再加上几个恒等映射层(Identity mapping,也即y=x,输出等于输入),这样就增加了网络的深度,并且起码误差不会增加,也即更深的网络不应该带来训练集上误差的上升。而这里提到的使用恒等映射直接将前一层输出传到后面的思想,便是著名深度残差网络ResNet的灵感来源。

ResNet引入了残差网络结构(residual network),通过这种残差网络结构,可以把网络层弄的很深(据说目前可以达到1000多层),并且最终的分类效果也非常好,残差网络的基本结构如下图所示,很明显,该图是带有跳跃结构的:
Tensorflow 残差网络ResNet


2. ResNet 有两种结构设计:

Tensorflow 残差网络ResNet

参考:
深度学习:ResNet(残差网络)

上一篇:8.spark Core 进阶1


下一篇:Application Virtualization