深度学习第六讲之批标准化(Batch Normalization)

转载请注明出处

****:https://edu.****.net/course/detail/8587

技术交流qq群: 659201069

  • batch 是批数据, 把数据分成小批小批进行 stochastic gradient descent. 而且在每批数据进行前向传递
    forward propagation 的时候, 对每一层都进行 normalization 的处理
  • 在一定范围内,一般来说Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。

盲目增大 Batch_Size 有何好处与坏处?

  • 内存利用率提高了,但是内存容量可能撑不住了。

  • 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。

  • Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。

  • 解决了反向传播过程中的梯度问题(梯度消失和爆炸),同时使得不同scale的 整体更新步调更一致。

深度学习第六讲之批标准化(Batch Normalization)

  上面这张图是说,一个batch里面现在有x1,x2,x3 这三个数据,然后通过同一组parameters,我们得到了 z1,z2,z3,然后在经过activation function,得到了 a1,a2,a3,依次不断input下去。而当我们把 x1,x2,x3都同时放进一个matrix里面的时候,将 w1放到这个matrix的前面,我们就能得到两个matrix的乘法操作 z(z1,z2,z3),最终得到 a(a1,a2,a3)。
  比起分别计算三次矩阵乘法得到 和放到一个矩阵中,平行化计算一次来说,第二种方法明显加快了运算的速度,这也就是GPU加速batch进行训练的原理了。