ResNet笔记

学习资料来源:飞桨AI Studio星河社区-人工智能学习与实训社区 (baidu.com)

ResNet的实现:

如下图在原有的两次卷积的基础上,增加了一条旁路:

为什么设计残差,有什么好处?

(资料来源:为什么resnet效果会那么好? - 知乎 (zhihu.com)

能够避免深度网络的梯度消失问题。

根据实验表明,模型的精确率和网络存在如下关系:

深度网络在反向传播时,需要经过多层的链式求导,梯度会不断变小,可能会出现梯度消失,梯度消失后权重无法更新,影响到网络的性能。

常规网络希望通过训练能拟合到目标函数;ResNet转换目标转为学习目标函数和当前拟合结果的残差,训练目标就是要将残差结果逼近于0,使到随着网络加深,准确率不下降。 使用残差网络时,根据y=F(X)+X,误差为E ,残差网络,不容易由于连乘出现梯度消失。

(计算反向传播的梯度:Back Propagation(梯度反向传播)实例讲解 - 知乎 (zhihu.com))

计算反向梯度:

y=F(X)=W_{1}X

损失函数:E = \frac{1}{2}(y-y_{hat})^{2}(yhat表示预测值)

更新W_{1}的梯度时计算梯度:\frac{\varphi E}{\varphi W_{1}}=\frac{\varphi E}{\varphi y}\times \frac{\varphi y}{\varphi W_{1}}

以残差网络第l+1层为例:

X_{l+1}=F(X_{l})+X_{l}=W_{1}X_{l}+X_{l}

损失为:E = \frac{1}{2}(X_{l+1}-X_{l})^{2}

更新梯度时包括两个部分:

\frac{\varphi E}{\varphi W_{1}}=\frac{\varphi E}{\varphi X_{l+1}}\times \frac{\varphi X_{l+1}}{\varphi W_{1}}

\frac{\varphi E}{\varphi X_{l}}=\frac{\varphi E}{\varphi X_{l+1}}\frac{\varphi X_{l+1}}{\varphi X_{l}}=\frac{\varphi E}{\varphi X_{l+1}}\frac{\varphi (X_{l}+F(X_{l}))}{\varphi X_{l}}=\frac{\varphi E}{\varphi X_{l+1}}\cdot (1+\frac{\varphi F(X_{l})}{\varphi X_{l}})

常见的残差单元如下:

实现结构:

ConvBNLayer:卷积,批归一化和激活组成 (以上图b为例,ConvBNLayer是图上蓝色部分)

BottleneckBlock:如上图256-d所示,卷积层部分由三个ConvBNLayer组成,如果第二层3x3卷积的输出结果和原图的尺寸不同,则使用1x1卷积调整

ResNet-50网络:50表示有50层网络

小结:

  1. 输入X通过跨层连接,能更好向后传播梯度,不易出现梯度消失问题。
  2. 残差连接有助于网络收敛,跳跃连接允许信息直接在网络层中传递。
  3. 残差网络选择ReLU函数作为激活函数,它在X>0区间有恒定的倒数也可以减轻梯度消失的问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值