【跟李沐学AI】week 6b | 批量归一化 残差网络 ResNet

批量归一化 BN

在过往训练中,因为损失在最后面,后面的层训练和更新较快,但是数据在最底部,底部训练较慢,底部更新一遍之后后面的也需要重新更新一次,所以导致整体的收敛很慢。
问题:我们在学习底部的时候如何避免变化顶部层?
解决方法批量归一化,固定小批量中的均值和方差再做一个额外调整
不同层的均值和方差不会有特别大的变化,这样相当于做了一个宏观的调整。
在这里插入图片描述
批量归一化层
作用原理:
可以学习的参数就是方差和均值。
一般作用再:全连接层和卷积层输出上,激活函数前(激活函数是非线性,BN是线性变化,只是拉一个比较好的均值和方差)。
如果作用在全连接层,那么是作用在特征维上;(每一行是样本,每一列是特征,对每一列特征计算标量的均值)
如果是作用在卷积层,是作用在通道维(以1×1卷积为例,每个像素是一个样本,不同的通道就是像素样本不同的特征,所以是在求通道的均值,作用在通道维上,也就是卷积层的特征维)。
作用:
最初是想要用来减少内部协变量转移(其实并没有),后面发现是通过在每个小批量里加入噪音来控制模型复杂度,相当于加入了随机偏移和随机缩放,同时使用每个批量的均值和方差来使得变化不太剧烈。
总结:
批量归一化固定小批量中的均值和方差,然后学习出适合的偏移和缩放(拟合均值和方差)。可以加速收敛速度,但一般不改变模型精度

残差网络 ResNet

加入更多的层一定会改进精度吗?不一定,因为模型出现偏差的时候,学习的效果可能是偏了的。ResNet就是要解决这个问题,也就是网络退化的问题。
在这里插入图片描述

残差块
串联一个层其实就是改变函数类,所以我们希望可以可以扩大函数类。
残差块加入快速通道来得到 f ( x ) = x + g ( x ) f(x) = x +g(x) f(x)=x+g(x)的结构。这个作用相当于在复杂网络中嵌入了小网络,先去拟合小网络(先保证准星,再升缩小范围,升高维度),当第一个weight layer失效的时候,也可以作为一个小模型使用。
在这里插入图片描述
ResNet块细节
在这里插入图片描述
通常使用方法:(主流都是5个stage)

  • 第一块:高宽减半的ResNet块(步幅为2)
  • 后面的块:后面接多个高宽不变的块
    在这里插入图片描述

29.2 ResNet 为什么能训练出1000层的模型

因为梯度计算是做乘法,如果网络下面的层学习/拟合效果较好,就会导致梯度过小,那么学习率不管怎么调都没有用。所以ResNet相当于加入了一个加法,也就是有一个基准的导数。(大数+小数 = 大数,但是大数×小数就是小数了)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值