网络的精度会随着网络的层数增多而增多吗?在深度学习中,网络层数增多一般会伴着下面几个问题:
1.计算资源的消耗 --> 通过GPU集群来解决
2.模型容易过拟合 --> 采集海量数据,并配合Dropout正则化等方法有效避免
3.梯度消失/梯度爆炸问题的产生 --> 通过Batch Normalization也可以避免
但实验数据显示不能无脑增加网络层数!!!
随着网络层数的增加,网络发生了退化(degradation)的现象:随着网络层数的增多,训练集loss逐渐下降,然后趋于饱和,当你再增加网络深度的话,训练集loss反而会增大。注意这并不是过拟合,因为在过拟合中训练loss是一直减小的。
当网络退化时,浅层网络能够达到比深层网络更好的训练效果,这时如果我们把低层的特征传到高层,那么效果应该至少不比浅层的网络效果差。
在前向传输的过程中,随着层数的加深,Feature Map包含的图像信息会逐层减少,而ResNet的直接映射的加入,保证了L+1层的网络一定比L层包含更多的图像信息。
传统的网络结构为卷积层+激活函数,如图一所示。
图一:传统卷积
ResNet增加了“短路”连接(shortcut connection)或称为跳跃连接(skip connection),如图二所示。
图二:残差结构
优点:
① 可以解决深度网络中的梯度消失问题,使得网络可以更深更复杂。
② 结构简单,易于理解和实现。
缺点:
① 在某些情况下可能会出现过拟合的问题,因为残差结构可以让信息直接从前面的层传递到后面的层,可能会导致网络过于复杂,难以泛化。
② 训练速度较慢,需要更多的时间和计算资源。