一、认识ResNet
ResNet(Residual Network)是一种深度神经网络结构,被广泛应用于图像分类、目标检测和语义分割等计算机视觉任务中。它是由微软亚洲研究院的何凯明等人于2015年提出的,通过引入残差连接(residual connections)解决了深层网络训练过程中的梯度消失和梯度爆炸问题,有效地加深了网络的深度。
网络亮点
1、超深的网络结构(突破1000层)
其他网络比如VGG。GoogleNet、AlexNet深度也就在十几层到二十几层。
如果将一系列的卷积和池化不断叠加,也能得到一个超深的网络。但是数据结果表明不是层数越深结果越好。
左边图中是将卷积层和池化层进行简单的堆叠所搭建的网络结构。橙黄色表示是20层网络结构所训练出来的效果,红色的线表示56层网络结构训练出来的效果,很明显可以看出20层的比56层结构所训练出来的效果要好很多。
造成这样的层数加深,训练效果变差的原因是什么呢?
==》1、随着网络的层数不断加深,梯度消失或者梯度爆炸这个现象会越来越明显。
梯度消失:假设每一层的误差梯度是小于1的数,在反向传播过程中,每向前传播一次,都要乘一个小于1的系数,当网络越来越深的时候,乘的小于1的系数越多就越趋近于0,这样梯度会越来越小,这就是常说的梯度消失现象。
梯度爆炸:反之,如果每一层的梯度是一个大于1的数,在反向传播过程中,每经过一层都要乘一个大于1的数,随着层数不断加深,那么梯度就会越来越大,这就是梯度爆炸。
梯度消失和梯度爆炸怎么解决?
对数据进行标准化处理、权重初始化、batch normalization
==》2、退化问题(degradation problem)
在resnet网络中提出了残差的结构,可以很好解决退化问题。
右图就是resnet所搭建的一些网络,有20层、32层、44层、56层、110层,实线代表验证集的错误率虚线代表训练集的错误率。
通过看验证集中的数据显示层数越深,错误率越小,模型效果是越好的。
那我们就可以使用残差结构来不断加深网络,以获得一个更好的结果。
2、提出residual(残差)模块
左边图中主要针对网络层数较少的网络所使用的残差结构
右边图中的残差结构主要针对50层、101层、152层提出的。
3、使用batch normalization加速训练(丢弃dropout)
后续继续补充。。。