3.5 将 Batch Norm 拟合进神经网络(Fitting Batch Norm into a neural network)

前向传播的计算流程:

实现梯度下降:

for t = 1 … num (这里num 为Mini Batch 的数量):

  • 在每一个XtX^t 上进行前向传播(forward prop)的计算:

    • 在每个隐藏层都用 Batch Norm 将z[l]z^{[l]}替换为

  • 使用反向传播(Back prop)计算各个参数的梯度:dw[l],dγ[l],dβ[l]dw^{[l]},d\gamma^{[l]},d\beta^{[l]}

  • 更新参数:

    • w[l]:=w[l]αdw[l]w^{[l]}:=w^{[l]}-\alpha dw^{[l]}

    • γ[l]:=γ[l]αdγ[l]\gamma^{[l]}:=\gamma^{[l]}-\alpha d\gamma^{[l]}

    • β[l]:=β[l]αdβ[l]\beta^{[l]}:=\beta^{[l]}-\alpha d\beta^{[l]}

经过Batch Norm的作用,整体流程如下:

Batch Norm对各隐藏层Z[l]=W[l]A[l1]+b[l]Z^{[l]}=W^{[l]}A^{[l-1]}+b^{[l]}有去均值的操作,Batch Norm 要做的就是将z[l]z^{[l]}归一化,结果成为均值为0,标准差为1的分布,再由β\betaγ\gamma 进行重新的分布缩放,意味着无论b[l]b^{[l]} 值为多少,在这个过程中都会被减去,不会再起作用。所以常数项b[l]b^{[l]}可以消去,其数值效果完全可以由中的β\beta来实现。在使用Batch Norm的时候,可以忽略各隐藏层的常数项b[l]b^{[l]}。在使用梯度下降算法时,分别对W[l]W^{[l]},β[l]\beta^{[l]}γ[l]\gamma^{[l]}进行迭代更新

除了传统的梯度下降算法之外,还可以使用动量梯度下降、RMSprop或者Adam等优化算法

Last updated

Was this helpful?