首页 > 其他分享 >limu|P28|Batch Normalization批量规范化

limu|P28|Batch Normalization批量规范化

时间:2024-08-27 16:07:45浏览次数:10  
标签:卷积 BN 均值 Batch limu 标准差 P28 输入 size

目录

为什么需要批量规范化

困难

训练深层神经网络并使其在较短时间内收敛很困难

原因

反向传播算梯度(从顶层到底层)—> 顶层更新参数快,底层更新参数慢;但是,一旦底层更新后,前向传播至顶层,顶层又要重新训练 —> 收敛慢

需求

如何实现在学习底层时,避免变化顶层?
固定小批量的均值和方差(可学习的参数)

如何实现批量规范化

公式

\(x_{i+1}=\gamma\frac{x_{i}-小批量的原均值}{小批量的原标准差+\epsilon}+\beta\)
\(\gamma\)和\(\beta\):可学习的参数
原均值和原标准差:训练时使用小批量的均值和标准差,预测时使用整个数据集精确计算的均值和标准差
\(\epsilon\):防止分母为0

使用部位

BN是线性变换(重塑数据,把均值和标准差捏得比较好,不让其有很大变化),一般都放在激活函数前,相当于把每一层的输出先调到一个比较稳定的分布再作为下一层的输入
卷积层:作用于通道
全连接层:作用于特征

为什么卷积层的通道维相当于全连接层的特征维?

全连接层的输入:(batch_size, dim)
*dim为输入向量的维度,即特征维度、特征的个数
卷积层的输入:(batch_size, channel, H, W)
卷积层输入的每个pixel视作全连接层输入的一个样本,则\(pixel数=batch\_size*H*W\),而每个pixel的通道维相当于全连接层每个样本的特征维

补充:为什么1*1卷积层相当于逐像素全连接层?

1、数学上,操作公式一致
2、意义上,作用相似,微小差别

深入思考BN的作用

加快收敛速度(达到同样的精度,需要跑的epoch数更少),但不改变模型精度
BN解决的是:当输入数据的分布发生变化后,如何减少其对深层网络结构的影响(对应参数对结果的影响,因为W与X相乘)?
通过计算方差和均值,和参数γ和β的调整,对于不同分布的输入数据
1、保持一定的数值稳定性:通过限制均值&标准差,限制每个input在特征维度上的分布——W也相应被scale得比较稳定——Loss关于W的曲线会比较平滑,没有梯度特别大or小的情况——用同一个lr可以较快收敛
2、保持数据的特征:在数据中学习得到均值和标准差
“How Does Batch Normalization Help Optimization?”这篇文章提出的观点是BN可以让loss function变得更平滑,进而加速收敛。而且文章里面通过实验证明了BN并没有改变internal covariate distribution

代码实现

nn.BatchNorm2d()
传入输入通道数即可

Q&A

• Xaiver初始化、BatchNorm的思想都是一样:想让模型数值稳定,一旦稳定(不会梯度消失也不会爆炸),收敛就不会变慢
如何稳定?限制分布!只不过一个在初始化时限制初始化值,一个在整个训练过程中一直限制模型输入(在上一层限制输出)
epoch、batch_size、lr的调参思路:epoch通常选大一点(调到收敛;先跑到过拟合再说?),先调batch_size(根据内存调,不能太大或太小,一般调到每秒处理样本数不再明显增大时就行了),然后调lr

BatchNorm和LayerNorm的解释与对比

这篇写得很好:https://blog.csdn.net/Little_White_9/article/details/123345062?spm=1001.2014.3001.5506

标签:卷积,BN,均值,Batch,limu,标准差,P28,输入,size
From: https://www.cnblogs.com/xjl-ultrasound/p/18372004

相关文章

  • BatchNorm & LayerNorm
    BatchNorm&LayerNorm目录BatchNorm&LayerNormBatchNorm过程LayerNormNormalization作用:1.缓解内部协变量偏移。在深度神经网络中,随着网络层数的加深,每一层的参数更新都可能导致后续层的输入分布发生变化,这种现象被称为内部协变量偏移(InternalCovariateShift,ICS)。ICS......
  • limu|P31-34|CPU和GPU
    目录CPUVSGPU提升CPU利用率1、提升空间和时间的内存本地性2、并行以利用所有核提升GPU利用率1、并行2、内存本地性3、少用控制语句4、不要频繁在CPU和GPU之间传数据单机多卡并行分布式计算CPUVSGPU首先,一个芯片的空间是有限的,给了很多空间给某个内容(能力强),其他内容的空间就......
  • mybatis-plus配置自定义sqlInjector(使用InsertBatchSomeColumn),出现Invalid bound stat
    项目一开始未引入mybatis-plus,使用的是mybatis,配置文件为xml,有一个配置类中配置了SqlSessionFactory的相关内容。引入mybatis-plus后,想使用InsertBatchSomeColumn遇到Invalidboundstatement(notfound),多处配置发现没有效果并依旧报错,最终在刚才的配置类中的SqlSessionFact......
  • limu|P19-22|卷积神经网络(CNN)基础
    目录:1、卷积是什么:在数学、实际生活、数字图像处理和机器学习中的卷积2、卷积层是什么:从全连接层到卷积层3、卷积层的kernal_size、padding、stride等超参数4、卷积层的输入和输出的通道数(in_channels和out_channels)的意义5、池化层参考资料:1、李沐动手学深度学习课程2、b......
  • 记一次完整的SpringBatch批处理数据流程
    记一次完整的SpringBatch批处理数据流程需求从400多行数据的Excel表格中批量读取数据,根据读取的数据再去调用api,拿到关键返回数据后整合写入新Excel文件。excel表格仅第一列数据手机号为有效数据,需要读取。通过手机号调用api,获取手机号对应的学生信息-学院,班级,姓名,手机号......
  • limu|P10-14|多层感知机、激活函数、模型选择、欠拟合、过拟合、权重衰减、dropout、
    从感知机到多层感知机:感知机:只能产生线性分割面,不能拟合XOR为突破线性模型的限制,可以通过在网络中加入一个/多个隐藏层,即多层感知机MLP。但是如果只是单纯添加隐藏层,还是等价于一个线性模型(仿射变换的仿射变换还是仿射变换),没有带来益处!此时,需要加入额外因素以激发多层架构的潜......
  • 洛谷题单指南-常见优化技巧-P2866 [USACO06NOV] Bad Hair Day S
    原题链接:https://www.luogu.com.cn/problem/P2866题意解读:每个牛能看到的右边比他矮的牛,直到有比他高的挡住为止,因此只用找每个牛右边第一个比他高的牛的位置即可计算中间比他矮的有多少。解题思路:典型的单调栈应用,注意,常规的单调栈可以用来:1、找每个数左边第一个比他小的数的......
  • 使用BatchNorm替代LayerNorm可以减少Vision Transformer训练时间和推理时间
    以VisionTransformer(ViT)的发现为先导的基于transformer的架构在计算机视觉领域引发了一场革命。对于广泛的应用,ViT及其各种变体已经有效地挑战了卷积神经网络(CNN)作为最先进架构的地位。尽管取得了一些成功,但是ViT需要更长的训练时间,并且对于小型到中型输入数据大小,推理......
  • mybatis中BatchExecutor的使用
    这部分内容需要掌握mysql的sql执行流程和事务控制才能理解,可以参考下我的相关文章。mybatissql执行流程mybatis事务控制一、BatchExecutor的介绍BatchExecutor是mybatis提供的一个执行器,用于执行批量更新操作,性能上比使用foreach标签拼sql要高,使用方式上也更方便。BatchE......
  • limu|P8-9|线性回归、softmax回归
    线性回归模型:\(y=Xw+b+\epsilon\)1、如何衡量模型质量?lossfunction损失函数——量化实际值和预测值之间的差距可证:在高斯噪声的假设下,线性模型的最大似然估计等价于最小化均方误差(MSE)。证明在另一篇里写过:https://www.cnblogs.com/xjl-ultrasound/p/18305000平方误差:......