深度学习中的批归一化|深度学习

深度学习中的批归一化|深度学习

在进行神经网络训练的时候,除了一些优化算法外,还有其它的一些优化技术,这些技术并不是具体的算法,而是一些通用的技巧,其中批归一化就是常用的一个技巧。

批归一化是loffe等在2015年提出来的优化神经网络训练的方法,自提出就受到了广泛关注。批归一化和普通的数据标准化类似,是将分散的数据统一的一种做法。批归一化所解决的问题实际上是对数据分布的调整。在神经网络训练过程中,尤其是深度神经网络训练过程中,在初始训练阶段,隐藏层中的神经元可能会变成”饱和”状态,导致更新缓慢,这是对于隐藏层使用批归一化来解决这个问题。
“饱和”状态是指数据经过神经网络的激活函数之后,函数的输出接近函数的极值(一般是+1和-1),之后反向传播进行梯度计算和更新网络参数时,得出的更新量将会很小(因为激活函数极值处的梯度值很小),网络参数无法得到有效地更新,这种影响会随着庞大的神经网络结果不断累积,最后导致神经网络训练的失败。批归一化方法每次在数据进入激活函数之前,对数据进行”批归一化”处理,让数据分布在激活函数的敏感区域,不至于接近极值,这样神经网络的训练就可以正常进行。
具体的做法为:先把数据分批进行随机梯度下降,然后在前向传播的过程中对每一层进行标准化的处理。因此,批归一化是在全连接层到激活函数之间的步骤之间,假如神经元写成φ ( X ⋅ W + b ) \varphi (X \cdot W+b)φ(X ⋅W +b ),其中φ \varphi φ 是激活函数,那么批归一化处理就是在计算X·W之后,在经过激活函数之前进行,通过批归一化的处理,数据分布的该表使得激活函数非线性化的效果更加显著。批归一化处理可以写成下面的几个公式:
μ B = 1 m ⋅ ∑ i = 1 m x i σ b 2 = 1 m ∑ i = 1 m ( x i − μ B ) x ^ i = x i − μ B σ B 2 + ε x o u t i = γ x ^ i + β \mu_B=\frac{1}{m} \cdot \sum_{i=1}^mx^i \ \sigma^2_b=\frac{1}{m}\sum_{i=1}^m(x^i-\mu_B) \ \hat{x}^i=\frac{x^i-\mu_B}{\sqrt{\sigma_B^2+\varepsilon}} \ x_{out}^i=\gamma \hat{x}^i+\beta μB ​=m 1 ​⋅i =1 ∑m ​x i σb 2 ​=m 1 ​i =1 ∑m ​(x i −μB ​)x ^i =σB 2 ​+ε​x i −μB ​​x o u t i ​=γx ^i +β
其中,前三个式子完成对数据的批归一化操作,ε \varepsilon ε 是小常数,防止分母出现0。最后一个式子其实是让神经网络自己学习如何对待标准化操作,γ 和 β \gamma 和 \beta γ和β是神经网络学习得出的参数,用于对数据集尽心重新缩放和移位,加入神经网络觉得批归一化操作没有太大的作用,就会使用最后的式子对批归一化进行一定的抵消,x o u t i x_{out}^i x o u t i ​就是算法的最后输出。

Original: https://blog.csdn.net/qq_48081868/article/details/121663429
Author: Wumbuk
Title: 深度学习中的批归一化|深度学习

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/531616/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球