持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
增加网络层数
纵观ILSVRC图像识别大赛历年的冠军,网络的层数呈逐年上升的趋势,那么,网络的精度会随着网络的层数增多而增多吗?在深度学习中,网络层数增多一般会伴着下面几个问题:
- 1.计算资源的消耗
- 2.模型容易过拟合
- 3.梯度消失/梯度爆炸问题的产生
问题1可以通过GPU集群来解决,对于一个企业资源并不是很大的问题;问题2的过拟合通过采集海量数据,并配合Dropout正则化等方法也可以有效避免;问题3通过Batch Normalization也可以避免。
这样看来似乎我们只要一直增加网络的层数,实验结果就会变得更好。然而作者发现,随着网络层数的增加,网络发生了退化(degradation)的现象。
网络退化现象
上图这种现象这叫做网络退化现象,指的是网络变深后性能还不如浅层的网络。它既不是梯度消失/爆炸,也不是过拟合。(梯度消失是指更新非常缓慢,过拟合是指训练集上误差低,测试集上误差高)
当网络退化时,浅层网络能够达到比深层网络更好的训练效果,这时如果我们把低层的特征传到高层,那么效果应该至少不比浅层的网络效果差,深层才有意义。
ResNet就是通过残差解决了网络退化现象。
ResNet解决网络退化的机理
1.深层梯度回传顺畅
- 恒等映射这一路的梯度是1,把深层梯度注入底层,防止梯度消失。没有中间商层层盘剥。
2.类比其它机器学习模型
3.传统线性结构网络难以拟合“恒等映射”
4.ResNet解决网络退化的机理ResNet反向传播传回的梯度相关性好
网络加深,相邻像素回传回来的梯度相关性越来越低,最后接近白噪声。但相邻像素之间具有局部相关性,相邻像素的梯度也应该局部相关。相邻像素不想关的白噪声梯度只意味着随机扰动,并无拟合。ResNet梯度相关性衰减从1/2^L增加为1/L^0.5。保持了梯度相关性。
5.ResNet相当于几个浅层网络的集成
6.skip connection可以实现不同分辨率特征的组合 FPN、DenseNet
7.ResNet数学本质是用微分方程的积分曲线去拟合系统的目标函数
- 构造了一个平滑的解空间流形,在这个平滑的流形上更容易找到解。
- 残差网络相当于不同长度的神经网络组成的组合函数。
- 残差模块相当于一个差分放大器
残差网络
残差是预测值和真实值之间的偏差。ResNet网络是由很多个残差模块堆叠起来的,使得网络足够深的同时解决了退化问题。
残差模块:
残差块分成两部分直接映射部分和残差部分,如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。
残差网络是由一系列残差块组成的。一个残差块可以用表示为:
普通的Plain Network与深度残差网络的最大区别在于,深度残差网络有很多旁路的支线将输入直接连到后面的层,使得后面的层可以直接学习残差,这些支路就叫做shortcut。传统的卷积层或全连接层在信息传递时,或多或少会存在信息丢失、损耗等问题。ResNet 在某种程度上解决了这个问题,通过直接将输入信息绕道传到输出,保护信息的完整性,整个网络则只需要学习输入、输出差别的那一部分,简化学习目标和难度。
参考资料: 【精读AI论文】ResNet深度残差网络 残差网络 详解残差网络