(深度学习)Batch_normalization层

BatchNormalization(BN)在神经网络中不仅对输入层,也对每个隐藏层的输入进行标准化,以解决内部协变量转移问题,加速训练并提高模型效果。归一化后,通过伸缩和平移参数调整,保持网络对输入分布的适应性,从而得到更好的特征分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Batch_normalization是什么?

传统的神经网络,只是在将样本x进入到输入层之前对x进行0-1标准化处理(减均值,除标准差),以降低样本间的差异性,如下图所示:

在这里插入图片描述BN是在此基础上,不仅仅只对输入层的输入数据x进行标准化,还对每个隐藏层的输入进行标准化,如下图所示:
在这里插入图片描述
加了一个batch_normalization层后,输入x首先乘以权重加上偏置得到s1,对s1进行归一化后,再进行伸缩和平移,控制伸缩和平移的参数是网络自己学习的,之后再采用激活函数。

为什么要用Batch_normalization?

训练过程中,各层输入的分布随着前面几层参数的变化而变化,使得训练深度神经网络变得复杂。这通过较低的学习速率,和仔细的参数初始化来减慢训练,使得训练具有饱和非线性的模型变得非常困难。们将这种现象称为 internal covariate shift。
在train网络之前,会对数据进行归一化处理,为的是保持训练和测试数据的分布相同,而在神经网络内部,每一层我们都需要有输出和输出,除了对原始数据的标准化处理,在经过网络每一层计算后的数据,它们的分布是不同的。网络的训练,需要去学习适应不同的数据分布,造成的后果就是收敛慢,效果不佳。
另一方面,网络前面的参数变更,会随着网络的深度,其影响不断累积增大,所以说只要有某一层的数据分布发生变化,后面层的数据输入分布也会不同,结合前面说的,为了解决中间层数据分布改变的情况。
换一个角度来说,一般来说,如果模型的输入特征不相关且满足标准正态分布时,模型的表现一般较好。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值