当前位置:   article > 正文

深度学习:残差网络

深度学习:残差网络

残差网络定义

残差网络指将网络中的某些激励 a [ l ] a^{[l]} a[l]复制并通过一个快捷路径与若干层后进入激励之前的数值 z [ l + 2 ] z^{[l+2]} z[l+2]相加,再进入非线性激励函数。

如下图中,普通的神经网络通过蓝色的主路径逐层传播,而残差网络中新增了一条紫色的快捷路径,这样最后输出的运算就变成了 a [ l + 2 ] = g ( z [ l + 2 ] + a [ l ] ) a^{[l+2]}=g(z^{[l+2]}+a^{[l]}) a[l+2]=g(z[l+2]+a[l])。像下图上方这样的结构,就被称为残差块。
在这里插入图片描述
注意 a [ l ] a^{[l]} a[l] z [ l ] z^{[l]} z[l]相加要求矩阵维度一致,所以残差网络中会大量使用等大卷积,否则还需要在相加之前对 a [ l ] a^{[l]} a[l]做额外运算使其维度满足要求。

残差网络的作用

在实践中,我们可以多次构建残差块,来训练那些深度非常大的网络。理论上,网络深度越大,对训练集的拟合程度越高(即误差越小),但在实际训练中,太深的网络难以训练,往往会导致更大的误差。而加上残差以后,就可以帮助解决梯度消失和爆炸,神经网络的性能就能在更深的情况下保持提升。在这里插入图片描述

残差网络的原理

过深网络的性能退化的原因可能是在代价函数中添加正则项以后,由于参数太多,算法为了降低代价函数,将参数的值都调整的非常接近0,这样在传播过程中待激活值 z [ l ] z^{[l]} z[l]也始终处于接近0的状态,使得整个网络的性能降低。

以ReLU函数作为激活函数举例,若添加了残差网络,将 a [ l ] a^{[l]} a[l] z [ l + 2 ] z^{[l+2]} z[l+2]相加,即使 z [ l + 2 ] z^{[l+2]} z[l+2]趋近于0,至少激活值 a [ l + 2 ] = ReLU ( a [ l ] + z [ l + 2 ] ) ≈ a [ l ] a^{[l+2]}=\text{ReLU}(a^{[l]}+z^{[l+2]})\approx a^{[l]} a[l+2]=ReLU(a[l]+z[l+2])a[l],使得性能不会倒退。在保证了下限的基础之上,若深层网络捕捉到了一些有用的特征,就可以改善网络的性能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/393609
推荐阅读
相关标签
  

闽ICP备14008679号