> For the complete documentation index, see [llms.txt](https://baozoulin.gitbook.io/neural-networks-and-deep-learning/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://baozoulin.gitbook.io/neural-networks-and-deep-learning/di-er-men-ke-gai-shan-shen-ceng-shen-jing-wang-luo-chao-can-shu-tiao-shi-zheng-ze-hua-yi-ji-you-hua/improving-deep-neural-networks/hyperparameter-tuning/35-jiang-batch-norm-ni-he-jin-shen-jing-wang-luo-ff08-fitting-batch-norm-into-a-neural-network.md).

# 3.5 将 Batch Norm 拟合进神经网络（Fitting Batch Norm into a neural network）

前向传播的计算流程：

![](/files/-Le0ceHuKcfTIKiPZevx)

**实现梯度下降：**

for t = 1 … num （这里num 为Mini Batch 的数量）：

* 在每一个$$X^t$$ 上进行前向传播（forward prop）的计算：
  * 在每个隐藏层都用 Batch Norm 将$$z^{\[l]}$$替换为![](/files/-Le0ceHwmNo7zFgIMs0l)
* 使用反向传播（Back prop）计算各个参数的梯度：$$dw^{\[l]},d\gamma^{\[l]},d\beta^{\[l]}$$
* 更新参数：
  * $$w^{\[l]}:=w^{\[l]}-\alpha dw^{\[l]}$$
  * $$\gamma^{\[l]}:=\gamma^{\[l]}-\alpha d\gamma^{\[l]}$$
  * $$\beta^{\[l]}:=\beta^{\[l]}-\alpha d\beta^{\[l]}$$

经过Batch Norm的作用，整体流程如下：

![](/files/-Le0ceHySsKG72pGnlva)

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

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