残差网络(ResNet)
##残差块
图中a[l]代表第l层的激活函数,后面的a[l+1]、a[l+2]分别表示第l+1和l+2层的激活函数。从a[l]到a[l+1]的计算步骤如下:
式中a[l]与加权矩阵W[l+1]进行运算,然后加上偏置向量b[l+1]得到z[l+1]。由a[l]到a[l+1]的过程是这样的:
a[l]经过线性运算后再用ReLu激活函数运算,得到a[l+1]。
下一步的运算(由a[l+1]到a[l+2])如下:
运算过程和上面一样,不再赘述。
由z[?]到a[?]的过程如下式:
常规网络的主路径如下图所示:
但是在残差网络中,我们直接将a[l]提到网咯后面的位置,我们称之为快捷路径(short cut)也可叫做skip connection,如图所示:
因此最后的a[l+2]的计算也需要改变,之前为a[l+2] = g(z[l+2]),经过残差网络后a[l+2] = g(z[l+2]+a[l])
残差网络网络图如图:
使用残差块可以训练更深层次的网络,建立残差网络的方法是堆叠大量的残差块,把残差块堆叠起来,形成一个深层网络。
堆叠的残差网络如图所示:
普通网络和残差网络经过深层次的卷积网络后的误差对比如下:
普通网络在深层次的卷积网络中,理论上训练误差会持续降低,但事实上,训练误差在下降到一定程度后会上升,不满足实际需求。在残差网络中,经过深层次的训练后训练误差持续降低,能够达到很好的训练效果。
文中图片来源:链接: link