ResNet

深度网络的退化

从经验来看,网络的深度对模型的性能至关重要,当增加网络层数后,网络可以进行更加复杂的特征模式的提取,所以当模型更深时理论上可以取得更好的结果。
但是更深的网络其性能一定会更好吗?实验发现深度网络出现了退化问题(Degradation problem):网络深度增加时,网络准确度出现饱和,甚至出现下降。如下图所示,56层的网络比20层网络效果还要差。这不会是过拟合问题,因为56层网络的训练误差同样高。我们知道深层网络存在着梯度消失或者爆炸的问题,这使得深度学习模型很难训练。

Residual Connection

但是我们考虑这样一个事实:现在你有一个浅层网络,你想通过向上堆积新层来建立深层网络,一个极端情况是这些增加的层什么也不学习,仅仅复制浅层网络的特征,即这样新层是恒等映射(Identity mapping)。在这种情况下,深层网络应该至少和浅层网络性能一样,也不应该出现退化现象。

残差网络的第一大特点,反向更新解决梯度消失的问题:

\[x_{l+1}=f(h(x_l)+F(x_k,W_l)) \]

其中\(x_l\)\(x_{l+1}\)是第\(l\)个残差单元的输入和输出,\(F\)是残差函数,\(h(x_l)=x_l\)表示恒等映射,\(f\)是ReLU
从浅层\(l\)到深层\(L\)的学习特征为

\[x_L=x_l+\sum_{i=l}^{L-1}F(x_i,W_i) \]

利用链式规则,可以求得反向过程的梯度:

有1的存在不会导致梯度消失

Reference

[1] Deep Residual Learning for Image Recognition
[2] 你必须要知道CNN模型:ResNet

posted @ 2021-11-17 23:16  梦想家肾小球  阅读(9)  评论(0编辑  收藏  举报