本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com
BN批归一化层一般应用于深度学习中的激活函数之前,用于加速深层神经网络的训练
本文介绍BN层加入模型时所涉及的相关内容,包括对模型结构的改变、对训练的影响及等
本节讲解当BN层应用于深度神经网络时的相关内容
BN层的完整应用结构
BN层一般嵌入到神经网络层的神经元值之后、激活函数之前的位置,
BN批归一化的完整示图与计算公式如下:
从图中可以看到,批归一化层先将神经元值WX+B的值进行归一化,再进行仿射(缩放与平衡)还原
✍️备注:关于去除阈值B
BN层会将神经元值N进行归一化,且在仿射层存在参数,
在加入BN层后,线性映射层的B可以不要
BN层中的期望与方差的估算方法
在BN层的归一化计算部分,涉及到神经元值N的期望与方差的估算:
在训练阶段与使用阶段分别采取不同的方法估算和
具体如下:
1. 训练阶段
在训练阶段,归一化使用当前批训练数据的期望与方差
2. 模型应用阶段
在模型应用时,可以使用所有训练数据的期望与方差
也可采用抽取最后K次批训练数据的期望与方差进行估算
分别是第i次批训练时的期望和方差
BN层与线性层的合并
由于 BN层也是一个线性映射,所以可以和原线性映射层合并
具体过程如下:
由于
进一步将 代入其中,得到
即有:
其中
✍️备注:实际中一般并不将其合并,这里仅是提供公式,需要合并时可按公式合并
本节梳理和总结在深度学习网络中加入BN层后对整体建模过程的影响
加入BN层后深度学习网络的修改
下面我们梳理和总结一下,在深度学习的网络中加入BN层后,整体会有哪些地方需要改
加入BN层后,整体流程需要修改的地方共三个,如下
一、网络结构的修改
在N = WX+B后,加入BN转换,即
二、训练过程的修改
训练时,原本只需要训练W、B,现在要有三点修改
1. 在训练阶段进行前馈时,需要估算神经元值N的期望与方差
2. 训练时需要增加参数进行训练
3. W、B的梯度公式需要进行修改
三、训练后需确定深度网络的表达式
训练完神经网络后,需要确定最终应用时的BN层的期望和方差
可以使用最后k批样本的均值与方差进行无偏估算
如下:
,其中m是每批样本的大小
以上就是BN层在模型应用中的相关内容了
End