前向传播的计算流程:
实现梯度下降:
for t = 1 … num (这里num 为Mini Batch 的数量):
在每一个XtX^tXt 上进行前向传播(forward prop)的计算:
在每个隐藏层都用 Batch Norm 将z[l]z^{[l]}z[l]替换为
使用反向传播(Back prop)计算各个参数的梯度:dw[l],dγ[l],dβ[l]dw^{[l]},d\gamma^{[l]},d\beta^{[l]}dw[l],dγ[l],dβ[l]
更新参数:
w[l]:=w[l]−αdw[l]w^{[l]}:=w^{[l]}-\alpha dw^{[l]}w[l]:=w[l]−αdw[l]
γ[l]:=γ[l]−αdγ[l]\gamma^{[l]}:=\gamma^{[l]}-\alpha d\gamma^{[l]}γ[l]:=γ[l]−αdγ[l]
β[l]:=β[l]−αdβ[l]\beta^{[l]}:=\beta^{[l]}-\alpha d\beta^{[l]}β[l]:=β[l]−αdβ[l]
经过Batch Norm的作用,整体流程如下:
Batch Norm对各隐藏层Z[l]=W[l]A[l−1]+b[l]Z^{[l]}=W^{[l]}A^{[l-1]}+b^{[l]}Z[l]=W[l]A[l−1]+b[l]有去均值的操作,Batch Norm 要做的就是将z[l]z^{[l]}z[l]归一化,结果成为均值为0,标准差为1的分布,再由β\betaβ 和γ\gammaγ 进行重新的分布缩放,意味着无论b[l]b^{[l]}b[l] 值为多少,在这个过程中都会被减去,不会再起作用。所以常数项b[l]b^{[l]}b[l]可以消去,其数值效果完全可以由中的β\betaβ来实现。在使用Batch Norm的时候,可以忽略各隐藏层的常数项b[l]b^{[l]}b[l]。在使用梯度下降算法时,分别对W[l]W^{[l]}W[l],β[l]\beta^{[l]}β[l]和γ[l]\gamma^{[l]}γ[l]进行迭代更新
除了传统的梯度下降算法之外,还可以使用动量梯度下降、RMSprop或者Adam等优化算法
Last updated 6 years ago