1. 概念

深度神经网络模型的训练为什么会很困难?其中一个重要的原因是,深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。为了训好模型,我们需要非常谨慎地去设定学习率、初始化权重、以及尽可能细致的参数更新策略。
BN可以加快模型训练时的收敛速度,减轻梯度爆炸或者梯度消失,使得模型训练过程更加稳定。并且能起到一定的正则化作用,几乎代替了Dropout。


更新:

  1. 神经网络训练过程的本质是学习数据分布,然后随着网络训练的进行,每个隐藏层的参数变化使得后一层的输入数据分布也随之改变,致使网络在每次迭代中都需要拟合不同的数据分布,增大训练的复杂度。
  2. 对每一层的每个维度数据进行归一化,约束数据的分布
  3. 以Sigmoid激活函数为例,若每一层都约束为均值为0、方差为1的分布,则大多数数据均位于激活函数的非线性层,极大的限制了网络的表达能力。为此在具体实现中增加两个待学习参数批量归一化(Batch Normalization) - 图1,对归一化的数据进行变换重构(批量归一化(Batch Normalization) - 图2,相当于将数据从标准分布通过伸缩、平移映射到一个学习到的分布中,既保留了网络的表达能力,又不会使下一层网络的输入数据分布剧烈变动)

    2. 主要方法

bn_algorithm.png
截屏2020-10-22 下午7.55.08.png
注:1)每个神经元都有各自的批量归一化(Batch Normalization) - 图5

3. 对卷积做批量归一化

截屏2021-03-04 下午4.12.53.png

4. Dropout抑制过拟合

工作原理:在深度网络训练中,以一定概率随机临时丢弃一部分神经元节点,类比于Bagging方法,Dropout可被认为是一种深度神经网络的模型集成算法,含N个神经元的神经网络可看作又批量归一化(Batch Normalization) - 图7个模型的集成,可减少过拟合风险。
实现:训练阶段以概率批量归一化(Batch Normalization) - 图8随机临时丢弃一部分神经元节点,测试阶段不会丢弃神经元,但每个参数要乘以批量归一化(Batch Normalization) - 图9

5. 神经网络参数初始化为0

结论:卷积神经网络可以,全连接网络不行(甚至不能全部初始化为任一相同值)。
考虑全连接的神经网络,同一层中的任意神经元都是同构的,它们拥有相同的输入和输出,如果再将参数全部初始化为同样的值,那么无论前向传播还是反向传播的取值都是完全相同的。学习过程将永远无法打破这种对称性,最终同一网络层中的各参数仍然是相同的,等价于隐藏层神经元个数均为1。

6. 待补充内容

为什么使用BN后可以使用更大的学习率