引入
非常深的网络,是难以训练的,因为有梯度消失
和梯度爆炸
的问题存在。
但残差网络(ResNet)却能够做到非常深,2015年,微软亚洲研究院的何凯明等人使用152层的残差网络ResNet参加了当年的ILSVRC,在图像分类、目标检测等任务中的表现大幅超越前一年的比赛的性能水准。
ResNet与其他的深层次网络有什么区别?为什么它能做到这样的效果?
普通深层次网络的问题
普通的深层次网络,比如堆叠3x3卷积网络,训练误差如下:
与20层网络相比,56层网络存在更高的训练误差与测试误差。
ResNet原理
下面是普通全连接网络和ResNet的网络结构对比。
在ResNet中,这个结构单元叫残差块
。
可以看到,他们之间最大的区别,就是ResNet的网络结构中出现了跨层连接。
- H(x)是任意一种理想的映射
- 希望第2类权重层能够与F(x)拟合
- 使H(x) = F(x) + x
F(x)是一个残差映射w.r.t 恒等
- 如果说恒等是理想,很容易将权重值设定为0
- 如果理想化映射更接近于恒等映射,便更容易发现微小波动
多个这种残差块
结构组成的网络,就是ResNet。ResNet在实际数据集上的表现如下图
可见,在ResNet上,层数越多,训练误差越小。这就是我们想要的理想情况。
ResNet细节
残差块
的结构,是由卷积层
和池化层
组成的- 一般CNN的结构,都是C+C+C+P,依次这样重复,比如:cccpcccpcccp…
结论
残差网络结构简单,解决了极深度条件下深度卷积神经网络性能退化的问题,分类性能表现出色。从ILSVRC 2015至今半年多的时间里,残差网络的广泛使用已推进计算机视觉
各任务的性能升入新的高度。