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

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

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


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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值