- 批归一化
- 批归一化后虽然让数据表达更稳定,但是改变了原有信息的数据表达,使得底层网络学习到的参数信息丢失; 另外经过批归一化之后,输出的数据均值为0,方差为1,经过激活函数的时候容易陷入线性区域,丧失非线性表达能力。所以BN又引入两个可学习参数 γ \gamma γ 和 β \beta β,这两个参数的引入是为了恢复数据的表达能力。
使用Batch Normalization,可以获得如下好处,
- 可以使用更大的学习率,训练过程更加稳定,极大提高了训练速度。
- 可以将bias置为0,因为Batch Normalization的Standardization过程会移除直流分量,所以不再需要bias。
- 对权重初始化不再敏感,通常权重采样自0均值某方差的高斯分布,以往对高斯分布的方差设置十分重要,有了Batch Normalization后,对与同一个输出节点相连的权重进行放缩,其标准差𝜎也会放缩同样的倍数,相除抵消。
- 对权重的尺度不再敏感,理由同上,尺度统一由𝛾参数控制,在训练中决定。
- 深层网络可以使用sigmoid和tanh了,理由同上,BN抑制了梯度消失。
- Batch Normalization具有某种正则作用,不需要太依赖dropout,减少过拟合。
CNN中的BN层
1个卷积核产生1个feature map,
1个feature map有1对
γ
\gamma
γ和
β
\beta
β参数,
同一batch同channel的feature map共享同一对
γ
\gamma
γ和
β
\beta
β参数。,
若卷积层有n个卷积核,则有n对
γ
\gamma
γ和
β
\beta
β参数。