深度学习:残差网络

残差网络定义

残差网络指将网络中的某些激励 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],使得性能不会倒退。在保证了下限的基础之上,若深层网络捕捉到了一些有用的特征,就可以改善网络的性能。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值