神经网络中的BN层

BN层

BN,全称Batch Normalization(批规范化),是2015年提出的一种方法,在进行深度网络训练时,大都会采取这种算法。算法过程如下:
神经网络中的BN层_第1张图片
简单来说就是对上一层输出的数据进行规范化。

优势:

  1. 加快网络的训练和收敛的速度,即我们可以使用较大的学习率
  2. 控制梯度爆炸防止梯度消失
  3. 防止过拟合

1.加快训练速度

在深度神经网络中中,如果把每层的数据都在转换在均值为零,方差为1的状态下,这样每层数据的分布都是一样的训练会比较容易收敛。
原因在于神经网络学习过程本质就是为了学习数据分布,如果训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,深度网络的训练是一个复杂的过程,只要网络的前面几层发生微小的改变,那么后面几层就会被累积放大下去。如果每批训练数据的分布各不相同,那么网络就要在每次迭代都去学习适应不同的分布,这样将会降低网络的训练速度。

2.控制梯度爆炸防止梯度消失

2.1什么是梯度爆炸/消失

梯度消失与梯度爆炸其实是一种情况。以下图以三个隐层的单神经元网络为例:
神经网络中的BN层_第2张图片
以上图为例,假设每一层网络激活后的输出为 f i ( x ) f_{i}(x) fi(x),其中 i i i 为第 i i i 层, x x x 代表第 i i i 层的输入, 也就是第 i − 1 i-1 i1 层的输出, f f f 是激活函数, 那么, 可得出 f i + 1 = f ( f i ∗ w i + 1 + b i + 1 ) , f_{i+1}=f\left(f_{i} * w_{i+1}+b_{i+1}\right), fi+1=f(fiwi+1+bi+1)

你可能感兴趣的:(人工智能,神经网络,深度学习)