BN (Batch Normlization) 批归一化

批归一化(BN)是深度学习中用于解决内部协变量偏移(Internal Covariate Shift)的手段,通过规范化每一层的输入,加速训练过程并防止梯度弥散。BN通过两次平移和缩放操作,将数据转换为标准分布,再根据学习到的参数恢复非线性表达能力,提高模型的性能和训练效率。

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

BN,Batch Normalization, 属于Normalization中的一种归一化方式,所以在介绍BN之前,首先了解一下Normalization.

1. 为什么需要 Normalization
在机器学习领域中,通常假设数据具有“独立同分布”的特性,这样可以简化常规机器学习模型的训练、提升机器学习模型的预测能力。

具体为什么要求“独立同分布”,也附上相关解释:

关于独立同分布,西瓜书这样解释道:

输入空间中的所有样本服从一个隐含未知的分布,训练数据所有样本都是独立地从这个分布上采样而得。

**好了,那为啥非要有这个假设呢?

我们知道,机器学习就是利用当前获取到的信息(或数据)进行训练学习,用以对未来的数据进行预测、模拟。所以都是建立在历史数据之上,采用模型去拟合未来的数据。因此需要我们使用的历史数据具有总体的代表性。

** 为什么要有总体代表性?
我们要从已有的数据(经验) 中总结出规律来对未知数据做决策,如果获取训练数据是不具有总体代表性的,就是特例的情况,那规律就会总结得不好或是错误,因为这些规律是由个例推算的,不具有推广的效果。

通过独立同分布的假设,就可以大大减小训练样本中个例的情形。

机器学习并不总是要求数据同分布。在不少问题中要求样本(数据)采样自同一个分布是因为希望用训练数据集训练得到的模型可以合理用于测试集,使用同分布假设能够使得这个做法解释得通。

因此,在把数据喂给机器学习模型之前,“白化(whitening)”是一个重要的数据预处理步骤。白化一般包含两个目的:

(1)去除特征之间的相关性 —> 独立;

(2)使得所有特征具有相同的均值和方差 —> 同分布。

白化最典型的方法

批量归一化Batch Normalization)是一种在深度学习中广泛使用的技巧,旨在加速神经网络的训练过程并提高模型的稳定性。其基本原理是通过对每层的输入进行标准化处理,使得网络中间层的激活值保持在一个较小的范围内,从而有助于加速模型的收敛[^2]。 具体来说,批量归一化对同一通道、不同样本之间的数据进行归一化处理。这意味着对于每个小批量(mini-batch)中的数据,都会计算该批次的均值和方差,然后利用这些统计量来标准化该层的输入。这种做法不仅能够减少梯度消失和爆炸的问题,还能允许使用更大的学习率,进一步加快训练速度[^1]。 在实现上,以PyTorch框架为例,可以通过调用`nn.BatchNorm1d`、`nn.BatchNorm2d`或`nn.BatchNorm3d`等函数来添加批量归一化层到神经网络中,具体取决于输入数据的维度。例如,在一个简单的全连接网络中,可以这样实现: ```python import torch.nn as nn net = nn.Sequential( nn.Linear(input_dim, hidden_dim), nn.BatchNorm1d(hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, output_dim) ) ``` 在这个例子中,`input_dim`、`hidden_dim`和`output_dim`分别代表输入层、隐藏层和输出层的维度大小。通过这种方式,可以在每个批次的数据上执行标准化操作,进而提升模型性能[^3]。 此外,值得注意的是,批量归一化层还包含两个可学习参数——缩放因子(gamma)和偏移因子(beta),它们用于调整归一化后的输出,增加模型的灵活性。这两个参数通常在模型训练过程中自动更新[^3]。 ### 实现细节 - **初始化**:在定义批量归一化层时,需要指定特征的数量,即有多少个特征需要被归一化。 - **前向传播**:在前向传播过程中,批量归一化层会计算当前批次数据的均值和方差,并据此对数据进行标准化。之后,利用学习到的gamma和beta参数对标准化后的数据进行线性变换。 - **训练与评估模式**:当模型处于训练模式时,批量归一化层会使用当前批次的数据来估计均值和方差;而在评估模式下,则会使用整个训练集上的移动平均来代替,确保推理阶段的一致性和准确性。 综上所述,批量归一化不仅有助于解决内部协变量偏移问题,而且还能作为正则化手段之一,帮助防止过拟合,尤其是在深层网络中效果显著[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值