本文重点
为什么ResNet效果会这么好,为什么构建更深层次的 ResNet网络的同时还不降低它们在训练集上的效率。本文解释一下为什么ResNet会这么优秀。
残差块
残差网络如此优秀的原因就是残差块。我们来看一下残差块的a[l+2]的计算过程,即a[l+2] = g(z[l+2] +a [l])。
如果将这个表达式展开,那么a[l+2] =g (W[l+2]a[l+1] + b[l+2] + a[l])
这就是残差块的计算表示式
残差块的优势
如果此时使用 L2 正则化或权重衰减,它会压缩W[l+2]的值。假如将其压缩为W[l+2] = 0,同时假设b[l+2] = 0,那么残差块的表达式就变为了a[l+2] = g(a[l]) =a[l](Relu激活函数当值大于0时,激活值是其本身)。
这说明了即使出现参数为0的极端情况,残差块也可以学习到这个恒等式a[l+2]=a[l],跳跃连接使我们很容易得出a[l+2] = a[l]。这意味着,即使给神经网络增加了这两层,它的效率也并不逊色于更简单的神经网络,因为学习恒等函数对它来说很简单。尽管它多了两层,也只把a[l]的值赋值给a[l+2]。所以给大型神经网络增加两层,不论是把残差块添加到神经网