【深度学习】Resnet详细笔记!!

本文详细探讨了Resnet的出现原因,包括为何深度网络会出现退化现象,以及如何通过残差学习解决这一问题。Resnet通过残差块实现恒等映射,防止退化,其结构包括Basic Block和BottleNeck Block。ResNeXt是Resnet和Inception的融合,利用分组卷积提升性能。
摘要由CSDN通过智能技术生成

Resnet

一、为什么会有Resnet

神经网络越深,训练效果一定就越好?答案是否定的。因为不断加深网络层次,模型会发生退化现象

那么,为什么会出现退化?
1、不是过拟合
在这里插入图片描述
在吴恩达机器学习课中,提到过由于模型过于复杂(次数过高)导致了高方差。
过拟合是:高方差,低偏差(测试误差大而训练误差小)。而CNN退化表现为测试误差和训练误差都很大。因此不是过拟合导致。

2、不是梯度爆炸/消失
在这里插入图片描述
这是前向传播,一步步计算出输出。
在这里插入图片描述
这是反向传播,一步步求出输入的梯度。
在这里插入图片描述
假设输出端接收之前回传的梯度为1,则在输入端梯度的模值,经过回传扩大了3~4倍。
当输入梯度大于1,那么经过很多层回传,梯度就会指数增长,出现梯度爆炸现象。
当输入梯度小于1,则就会越变越小,直至0,出现梯度消失现象。

而我们使用BN,控制了每层输入模值,也就解决梯度爆炸/消失的问题,但是退化现象依然没有解决。

3、
假设一个比较好的浅层网络,然后堆上好几层网络什么也不做,模型的效果应该不会变差。
但是由于非线性激活函数relu的存在,每次输入到输出都会存在信息损失,很难从输出反推回完整的输入。

因此,采用残差学习,想让模型具有恒等映射的能力,不会因为网络加深而退化。

二、残差学习

前面分析得出,如果深层网络后面的层都是是恒等映射,那么模型就可以转化为一个浅层网络。那现在的问题就是如何得到恒等映射H(x) = x了。

如果把网络设计为H(x) = F(x) + x,即直接把恒等映射作为网络的一部分。就可以把问题转化为学习一个残差函数F(x) = H(x) - x
只要F(x)=0,就构成了一个恒等映射H(x) = x。 而且,拟合残差至少比拟合恒等映射容易得多。

因此出现了残差块的结构。

Resnet使用了一种连接方式叫做“shortcut connection”。
在这里插入图片描述
图中右侧的曲线叫做跳接(shortcut connection),通过跳接在激活函数前,将上一层(或几层)之前的输出与本层计算的输出相加将求和的结果输入到激活函数中做为本层的输出。
图中过程:x输入(也就是上几层的输出),经过第一层+relu得到 σ ( W 1 x ) \sigma(W_1x) σ(W

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值