深度学习——残差网络ResNets

残差网络

ResNets 是由残差块(Residual block)构建的,首先我解释一下什么是残差块。

这是一个两层神经网络,在𝐿层进行激活,得到𝑎[𝑙+1],再次进行激活,两层之后得到𝑎[𝑙+2]。计算过程是从𝑎[𝑙]开始,首先进行线性激活,根据这个公式:𝑧[𝑙+1] = 𝑊[𝑙+1]*𝑎[𝑙] + 𝑏[𝑙+1]通过𝑎[𝑙]算出𝑧[𝑙+1],即𝑎[𝑙]乘以权重矩阵,再加上偏差因子。然后通过 ReLU 非线性激活函数得到 𝑎[𝑙+1]𝑎[𝑙+1] = 𝑔(𝑧[𝑙+1]) 计 算 得 出 。 接 着 再 次 进 行 线 性 激 活 , 依 据 等 式 𝑧[𝑙+2] = 𝑊[2+1]𝑎[𝑙+1] + 𝑏[𝑙+2]最后根据这个等式再次进行 ReLu 非线性激活,即𝑎[𝑙+2] = 𝑔(𝑧[𝑙+2]),这里的𝑔是指 ReLU 非线性函数,得到的结果就是𝑎[𝑙+2]。换句话说,信息流从𝑎[𝑙]到𝑎[𝑙+2]需要经过以上所有步骤,即这组网络层的主路径。
在这里插入图片描述
在残差网络中有一点变化,我们将𝑎[𝑙]直接向后,拷贝到神经网络的深层在 ReLU 非线性激活函数前加上𝑎[𝑙],这是一条捷径。𝑎[𝑙]的信息直接到达神经网络的深层,不再沿着主路径传递,这就意味着最后这个等式(𝑎[𝑙+2] = 𝑔(𝑧[𝑙+2]))去掉了,取而代之的是另一个 ReLU 非线性函数,仍然对𝑧[𝑙+2]进行 𝑔函数处理,但这次要加上𝑎[𝑙],即: 𝑎[𝑙+2] = 𝑔(𝑧[𝑙+2] + 𝑎[𝑙])
也就是加上的这个𝑎[𝑙]产生了一个残差块
在这里插入图片描述

ResNet 的发明者是何恺明(Kaiming He)、张翔宇(Xiangyu Zhang)、任少卿(Shaoqing Ren)和孙剑(Jiangxi Sun),他们发现使用残差块能够训练更深的神经网络。所以构建一个ResNet 网络就是通过将很多这样的残差块堆积在一起,形成一个很深神经网络.
下面这个网络并不是一个残差网络,而是一个普通网络(Plain network),这个术语来自 ResNet 论文。
在这里插入图片描述
把它变成 ResNet 的方法是加上所有跳跃连接,正如前一张幻灯片中看到的,每两层增加一个捷径,构成一个残差块。如图所示,5 个残差块连接在一起构成一个残差网络。
在这里插入图片描述

为什么使用残差网络:
如果我们使用标准优化算法训练一个普通网络,比如说梯度下降法,或者其它热门的优化算法。如果没有残差,没有这些捷径或者跳跃连接,凭经验你会发现随着网络深度的加深,训练错误会先减少,然后增多。而理论上,随着网络深度的加深,应该训练得越来越好才对。也就是说,理论上网络深度越深越好。但实际上,如果没有残差网络,对于一个普通网络来说,深度越深意味着用优化算法越难训练。实际上,随着网络深度的加深,训练错误会越来越多。
但有了 ResNets 就不一样了,即使网络再深,训练的表现却不错,比如说训练误差减少,就算是训练深达 100 层的网络也不例外。但是对𝑥的激活,或者这些中间的激活能够到达网络的更深层。这种方式确实有助于解决梯度消失和梯度爆炸问题,让我们在训练更深网络的同时,又能保证良好的性能。也许从另外一个角度来看,随着网络越来深,网络连接会变得臃肿,但是 ResNet 确实在训练深度网络方面非常有效
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值