【机器学习】《动手学深度学习 PyTorch版》李沐深度学习笔记Batch Normalization(批量归一化)

批量归一化(Batch Normalization)

在这里插入图片描述

1.引言

当神经网络比较深的时候,数据在下边损失函数在上边,在梯度自动求导,forward是数据从下一点点往上走,计算backWard是从上往下计算(这里有个问题,梯度在上边的时候会比较大,越往下边就越容易变小),因为上边的梯度比较大,那么每次上边的梯度都会不断去更新,下边的梯度比较小,所以权重的更新的就比较小,上边的会很快收敛,下边的会很慢。那么就会导致,更新下边的内容,它会尝试着去抽取底层的特征(比如局部边缘、简单的纹理信息),上层是一些高层语义的信息。下边一变,上边就要重新训练。底层的信息都变了,那么上边的哪些权重就白学了。在训练持续进行的时候,底部在持续变化的时候,顶部会不停的重新训练,重新去拟合底部变化导致的问题,这个问题会导致收敛比较的慢。
提出问题:我们能不能在学习底部层的时候避免变化顶部层?这里引入批量归一化。
简单总结
1.损失出现在后边,后边的层训练较快
2.数据在底部(①底部的层训练较慢②底部层一变化,所有都得跟着变化③最后的那些层需要学习多次④导致收敛变慢)

2.什么是批量归一化

1.固定小批量里边的均值和方差,然后学习合适的偏移和缩放(原本每一层的方差均值都不相等)
2.可学习的参数为γ核β
3.作用在:①全连接层和卷积层输出上,激活函数前②全连接层和卷积层输入上
4.对全连接层,作用在特征维;对卷积层,作用在通道维(相当于1*1卷积的特征维)
5.它通过在每个小批量里加入噪音来控制模型复杂度(所以没必要跟丢弃法混合使用)

3.总结

1.批量归一化固定小批量里边的均值和方差,然后学习合适的偏移和缩放
2.可以加速收敛速度,但是一般不改变模型精度(可以少学几轮)
批量归一化的优势:
1.不加批量归一化的网络需要慢慢的调整学习率时,网络中加入批量归一化时,可以采用初始化很大的学习率,然后学习率衰减速度也很大,因此这个算法收敛很快。(因为整体的均值和方差都放在差不多的分布里,不会因为学习率太大上边炸,也不会因为学习率太小学不动)
2.Batch Normalization可以大大提高模型训练速度,提高网络泛化性能。
3.数据批量归一化后相当于只使用了S型激活函数的线性部分,可以缓解S型激活函数反向传播中的梯度消失的问题。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jul7_LYY

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

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

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

打赏作者

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

抵扣说明:

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

余额充值