什么是Batch Normalization?为什么要Batch Norm?以及Batch Norm的示例和可视化

Batch Normalization(批量归一化)

Batch Normalization(批量归一化)是 2015年提出的方法,是一种用于加速深度神经网络训练并提高其稳定性的方法。

其主要思想是对每个mini-batch中的数据进行归一化,使得每个mini-batch的数据分布的均值为0,方差为1。

具体来说,Batch Normalization的过程包括以下几个步骤:

  1. 计算mini-batch的均值和方差
    对于一个mini-batch B = { x 1 , x 2 , . . . , x m } B = \{x_1, x_2, ..., x_m\} B={x1,x2,...,xm},首先计算该mini-batch的均值 μ B \mu_B μB 和方差 σ B 2 \sigma_B^2 σB2

    μ B = 1 m ∑ i = 1 m x i \mu_B = \frac{1}{m} \sum_{i=1}^{m} x_i μB=m1i=1mxi

    σ B 2 = 1 m ∑ i = 1 m ( x i − μ B ) 2 \sigma_B^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_B)^2 σB2=m1i=1m(xiμB)2

  2. 归一化
    使用计算得到的均值和方差对每个输入数据进行归一化处理:

    x ^ i = x i − μ B σ B 2 + ϵ \hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} x^i=σB2+ϵ xiμB

    这里, ϵ \epsilon ϵ 是一个小的常数,用于防止分母为零。

  3. 缩放和平移
    归一化后的数据再进行缩放和平移,以恢复数据的表达能力。通过引入可学习的参数 γ \gamma γ β \beta β,实现如下变换:

    y i = γ x ^ i + β y_i = \gamma \hat{x}_i + \beta yi=γx^i+β

Batch Normalization的好处包括:

  1. 加速训练:通过减少内部协变量偏移(Internal Covariate Shift),Batch Normalization可以加速神经网络的训练过程,使得模型收敛速度更快。
  2. 稳定训练过程:通过将输入数据的分布规范化,可以减少梯度爆炸和梯度消失的问题,提高训练过程的稳定性。
  3. 减少对初始化的依赖:使用Batch Normalization可以使得网络对权重初始化不那么敏感,从而更容易训练出好的模型。

在实际应用中,Batch Normalization已成为深度学习模型中的一种标准技术,广泛应用于各类神经网络中,如卷积神经网络(CNN)和循环神经网络(RNN)。

示例

对于给定的数据 [ 1 , 2 , 3 , 4 , 5 , 6 , 23 , 22 , 30 , 40 , 64 , 12 , 39 ] [1, 2, 3, 4, 5, 6, 23, 22, 30, 40, 64, 12, 39] [1,2,3,4,5,6,23,22,30,40,64,12,39],我们将对其进行Batch Normalization,使其均值为0,方差为1。具体步骤如下:

  1. 计算均值 μ \mu μ

    μ = 1 + 2 + 3 + 4 + 5 + 6 + 23 + 22 + 30 + 40 + 64 + 12 + 39 13 = 251 13 ≈ 19.31 \mu = \frac{1 + 2 + 3 + 4 + 5 + 6 + 23 + 22 + 30 + 40 + 64 + 12 + 39}{13} = \frac{251}{13} \approx 19.31 μ=131+2+3+4+5+6+23+22+30+40+64+12+39=1325119.31

  2. 计算方差 σ 2 \sigma^2 σ2

    σ 2 = ( 1 − 19.31 ) 2 + ( 2 − 19.31 ) 2 + ( 3 − 19.31 ) 2 + ⋯ + ( 39 − 19.31 ) 2 13 \sigma^2 = \frac{(1-19.31)^2 + (2-19.31)^2 + (3-19.31)^2 + \cdots + (39-19.31)^2}{13} σ2=13(119.31)2+(219.31)2+(319.31)2++(3919.31)2

    计算每个数据点与均值的差的平方,并求和:

    ∑ ( x i − μ ) 2 = ( 1 − 19.31 ) 2 + ( 2 − 19.31 ) 2 + ( 3 − 19.31 ) 2 + ⋯ + ( 39 − 19.31 ) 2 = 8031.38 \sum (x_i - \mu)^2 = (1-19.31)^2 + (2-19.31)^2 + (3-19.31)^2 + \cdots + (39-19.31)^2 = 8031.38 (xiμ)2=(119.31)2+(219.31)2+(319.31)2++(3919.31)2=8031.38

    然后,方差为:

    σ 2 = 8031.38 13 ≈ 617.03 \sigma^2 = \frac{8031.38}{13} \approx 617.03 σ2=138031.38617.03

  3. 计算标准差 σ \sigma σ

    σ = 617.03 ≈ 24.84 \sigma = \sqrt{617.03} \approx 24.84 σ=617.03 24.84

  4. 归一化
    对每个数据点 x i x_i xi 进行归一化处理:

    x ^ i = x i − μ σ \hat{x}_i = \frac{x_i - \mu}{\sigma} x^i=σxiμ

    具体归一化结果如下:

    x ^ 1 = 1 − 19.31 24.84 ≈ − 0.74 x ^ 2 = 2 − 19.31 24.84 ≈ − 0.70 x ^ 3 = 3 − 19.31 24.84 ≈ − 0.66 x ^ 4 = 4 − 19.31 24.84 ≈ − 0.62 x ^ 5 = 5 − 19.31 24.84 ≈ − 0.58 x ^ 6 = 6 − 19.31 24.84 ≈ − 0.54 x ^ 23 = 23 − 19.31 24.84 ≈ 0.15 x ^ 22 = 22 − 19.31 24.84 ≈ 0.11 x ^ 30 = 30 − 19.31 24.84 ≈ 0.43 x ^ 40 = 40 − 19.31 24.84 ≈ 0.83 x ^ 64 = 64 − 19.31 24.84 ≈ 1.80 x ^ 12 = 12 − 19.31 24.84 ≈ − 0.29 x ^ 39 = 39 − 19.31 24.84 ≈ 0.79 \begin{align*} \hat{x}_1 &= \frac{1 - 19.31}{24.84} \approx -0.74 \\ \hat{x}_2 &= \frac{2 - 19.31}{24.84} \approx -0.70 \\ \hat{x}_3 &= \frac{3 - 19.31}{24.84} \approx -0.66 \\ \hat{x}_4 &= \frac{4 - 19.31}{24.84} \approx -0.62 \\ \hat{x}_5 &= \frac{5 - 19.31}{24.84} \approx -0.58 \\ \hat{x}_6 &= \frac{6 - 19.31}{24.84} \approx -0.54 \\ \hat{x}_{23} &= \frac{23 - 19.31}{24.84} \approx 0.15 \\ \hat{x}_{22} &= \frac{22 - 19.31}{24.84} \approx 0.11 \\ \hat{x}_{30} &= \frac{30 - 19.31}{24.84} \approx 0.43 \\ \hat{x}_{40} &= \frac{40 - 19.31}{24.84} \approx 0.83 \\ \hat{x}_{64} &= \frac{64 - 19.31}{24.84} \approx 1.80 \\ \hat{x}_{12} &= \frac{12 - 19.31}{24.84} \approx -0.29 \\ \hat{x}_{39} &= \frac{39 - 19.31}{24.84} \approx 0.79 \\ \end{align*} x^1x^2x^3x^4x^5x^6x^23x^22x^30x^40x^64x^12x^39=24.84119.310.74=24.84219.310.70=24.84319.310.66=24.84419.310.62=24.84519.310.58=24.84619.310.54=24.842319.310.15=24.842219.310.11=24.843019.310.43=24.844019.310.83=24.846419.311.80=24.841219.310.29=24.843919.310.79

通过这些步骤,我们将原始数据归一化,使其均值为0,方差为1。这就是Batch Normalization的基本操作过程。

上面示例的可视化

左边为开始的数据,后面为Batch Norm之后的数据
左边为开始的数据,后面为Batch Norm之后的数据

  • 左图为原始数据的柱状图,红色虚线表示数据的均值(Mean μ \mu μ = 19.31),绿色虚线表示标准差范围(Mean + Std Dev σ \sigma σ)。
  • 右图为归一化后的数据的柱状图,红色虚线表示归一化后的均值(Mean μ \mu μ = 0),绿色虚线表示归一化后的标准差范围(Std Dev σ \sigma σ = 1)。

通过这种可视化,我们可以清晰地看到数据在Batch Normalization处理前后的变化。

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值