1、归一化网络的激活函数(Normalizing activations in a
network
)
- 规范化,方法如下,减去均值再除以标准偏差,为了使数值稳定, 通常将𝜀作为分母,以防𝜎 = 0的情况
- (任意一个隐藏层中的第i个样本)已把这些𝑧值标准化,化为含平均值 0 和标准单位方差,所以𝑧的每一个分量都含有平均值 0 和方差 1,但不想让隐藏单元总是含有平均值 0 和方差 1,也许隐藏单元有了不同的分布会有意义,所以所要做的就是计算,称之为𝑧̃(𝑖),𝑧̃(𝑖) = 𝛾𝑧norm(𝑖) +𝛽,这里𝛾和𝛽是你模型的学习参数,所以我们使用梯度下降或一些其它类似梯度下降的算法,比如 Momentum 或者 Nesterov,Adam,你会更新𝛾和𝛽,正如更新神经网络的权重一样
- 请注意𝛾和𝛽的作用是,你可以随意设置𝑧̃(𝑖)的平均值,事实上,如果𝛾 = √𝜎^2 + 𝜀,如果
- 𝜇,那么𝛾𝑧norm(𝑖) + 𝛽的作用在于,它会精确转化这个方程,如果这些成立(𝛾 = √𝜎^2 + 𝜀, 𝛽 =𝜇),那么
-
通过对 𝛾 和 𝛽 合理设定,规范化过程,即这四个等式,从根本来说,只是计算恒等函数, 通过赋予𝛾 和𝛽其它值,可以使你构造含其它平均值和方差的隐藏单元值
2、Batch归一化(Batch Normalization)
- 是一种常用的深度学习模型正则化技术,用于提高神经网络的训练速度和稳定性。它通过对每个mini-batch中的输入进行归一化,从而减少内部协变量偏移,使得网络的学习更加稳
- 上图中的神经网络,每个单元负责计算两件事。第一,它先计算𝑧,然后应用其到激活函数中再计算𝑎,每个圆圈代表着两步的计算过程。同样的,对于下一层而言,那就是𝑧1[2]和𝑎1
[2]等。所以如果没有应用 Batch 归一化,会把输入𝑋拟合到第一隐藏层,然后首先计算𝑧 [1],这是由𝑤[1]和𝑏 [1]两个参数控制的。接着,通常而言,会把𝑧 [1]拟合到激活函数以计算𝑎 [1]
-
但 Batch 归一化的做法是将𝑧 [1] 值进行 Batch 归一化,简称 BN,此过程将由𝛽 [1]和𝛾 [1]两参数控制,这一操作会给一个新 的规范化的𝑧 [1]值(𝑧̃ [1]),然后将其输入激活函数中得到𝑎[1],即𝑎 [1] = 𝑔 [1] (𝑧̃ [𝑙] )
-
在第一层进行了计算,此时 Batch 归一化发生在 𝑧 的计算和 𝑎 之间,接下来, 需要应用𝑎 [1] 值来计算 𝑧 [2] ,此过程是由 𝑤 [2] 和 𝑏 [2] 控制的。与在第一层所做的类似,会将𝑧 [2] 进行 Batch 归一化,现在简称 BN ,这是由下一层的 Batch 归一化参数所管制的, 即𝛽 [2] 和 𝛾 [2] ,现在你得到 𝑧̃ [2] ,再通过激活函数计算出 𝑎 [2] 等等
-
Batch 归一化是怎么操作的,计算均值和方差,减去均值,再除以方差,如果它们使用的是深度学习编程框架,通常你不必自己把 Batch 归一 化步骤应用于 Batch 归一化层。因此,探究框架,可写成一行代码,比如说,在 TensorFlow 架中,你可以用这个函数(tf.nn.batch_normalization )来实现 Batch 归一化
- 实践中,Batch 归一化通常和训练集的 mini-batch 一起使用。应用 Batch 归一化的方
式就是,用第一个 mini-batch ( 𝑋 {1} ),然后 计算𝑧 [1],应用参数 𝑤 [1] 和 𝑏 [1] ,使用这个 mini-batch ( 𝑋 {1} )。接着,继续第二个 mini-batch(𝑋 {2} ),接着 Batch 归一化会减去均值,除以标准差,由𝛽 [1]和𝛾 [1]重新缩放,这样就得到了𝑧̃[1]
- 具体实现步骤如下:
(1)、对于每个mini-batch的输入,计算其均值和方差
(2)、对每个输入进行归一化操作,即将每个输入减去均值,再除以方差
(3)、对归一化后的输入进行线性变换,通过缩放因子和位移因子进行调整。这两个参数可通过训练得到
(4)、将调整后的输入作为该mini-batch的输出
- Batch归一化的优点有:
(1)、加速收敛:通过对输入进行归一化,可以使得每个层的输入分布更加稳定,从而减少训练过程中的梯度爆炸或梯度消失的问题,加速模型的收敛速度
(2)、改善梯度传播:归一化可以使得每个层的输入都在相对较小的范围内,避免了梯度传播过程中的不稳定性
(3)、增加模型的泛化能力:Batch归一化具有一定的正则化效果,可以减少模型的过拟合
(4)、 提高网络的表达能力:通过归一化操作,可以使得网络更加适应各种输入分布,提高网络表达能力
- 需要注意的是,Batch归一化在训练和推理阶段有所不同。在训练阶段,对于每个mini-batch进行归一化;在推理阶段,使用训练过程中得到的均值和方差对输入数据进行归一化