归一化/标准化

本文详细介绍了数据预处理中的归一化和标准化技术,包括线性归一化、非线性归一化、Z-score标准化和去中心化等方法。归一化有助于消除量纲影响,增强特征间可比性,加速模型训练。标准化通过Z-score公式实现,常用于消除数据分布差异。此外,还探讨了PyTorch中的BN(Batch Normalization)层及其作用。BN层通过调整输入数据的均值和方差,稳定网络内部的梯度流动,提高训练效率。

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

一、前言

  归一化和标准化都是一种数据变换的方式,将原始的一列数据变换到某个范围。

二、归一化

  2.1 线性归一化

    归一化(Normalization),将数据固定到某个区间,通常为[0,1]。几种常见的归一化方式如下所示:
        (1) Min-Max Normalization: X i ′ = X i − X m i n X m a x − X m i n X_{i}^{'}=\frac{X_i-X_{min}}{X_{max}-X_{min}} Xi=XmaxXminXiXmin
        (2) 平均归一化: X i ′ = ( X i − μ ) X m a x − X m i n X_{i}^{'}=\frac{(X_{i}-\mu)}{X_{max}-X_{min}} Xi=XmaxXmin(Xiμ),其中 μ = m e a n ( X ) \mu=mean(X) μ=mean(X)
        (3) 转化为比例的归一化: X i ′ = X i s u m ( X ) X_{i}^{'}=\frac{X_i}{sum(X)} Xi=sum(X)Xi
        备注:当有新数据加入时,可能导致 X m a x X_{max} Xmax X m i n X_{min} Xmin会发生变化,需要重新定义。

  2.2 非线性归一化

     (1) 对数函数转换: y = l o g 10 ( x ) y=log10(x) y=log10(x)
     (2) 反正切函数转换: y = a r c t a n ( x ) ∗ ( 2 / π ) y=arctan(x)*(2/\pi) y=arctan(x)(2/π)
     备注:非线性归一化经常用在数据分化比较大的场景,有些数值很大,有些数值较小。通过一些数学函数,将原始值进行映射。该方法包括log、指数,正切等。需要根据数据的分布情况,决定非线性函数的曲线,比如 l o g 2 ( x ) log2(x) log2(x) l o g 10 ( x ) log10(x) log10(x)
     备注:归一化不改变数据的原始分布
     归一化的作用: 将某个特征的值映射到[0,1]之间,消除量纲对最终结果的影响,使不同的特征具有可比性,使得原本可能分布相差较大的特征对模型有相同权重的影响,提升模型的收敛速度,深度学习中数据归一化可以防止模型梯度爆炸。

三、标准化

     (1) Z-score标准化(标准差标准化)
X i ′ = ( X i − μ ) σ X_{i}^{'}=\frac{(X_{i}-\mu)}{\sigma} Xi=σ(Xiμ)       其中, μ \mu μ为数据 X X X的均值, σ \sigma σ为数据X的标准差。
     (2) 去中心化
X i ′ = ( X i − μ ) X_{i}^{'}=(X_{i}-\mu) Xi=(Xiμ)

四、pytorch的BN层

  BN层计算公式,如下图所示。
其中, γ \gamma γ β \beta β为可学习的参数。
  BN层的输出Y与输入X之间的关系是:Y = (X - running_mean) / sqrt(running_var + eps) * gamma + beta,此不赘言。其中gamma、beta为可学习参数(在pytorch中分别改叫weight和bias),训练时通过反向传播更新;而running_mean、running_var则是在前向时先由X计算出mean和var,再由mean和var以动量momentum来更新running_mean和running_var。所以在训练阶段,running_mean和running_var在每次前向时更新一次;在测试阶段,则通过net.eval()固定该BN层的running_mean和running_var,此时这两个值即为训练阶段最后一次前向时确定的值,并在整个测试阶段保持不变。

五、参考资料

1、归一化、标准化、零均值化的作用及区别
2、Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
3、pytorch中BN层的注意事项
4、归一化/标准化/去中心化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值