权重初始化,特征归一化,以及batch normalization,都是深度学习中,用于数据处理的一些手段,都是针对训练过程中可能遇到的数据问题进行的处理,之间存在一定的相关性,将三者放在一起比较学习,有助于融汇贯通,更好的理解深度学习的训练过程。
权重初始化
权重的影响
下图为神经网络的正向与反向传播示意图。
![](https://i-blog.csdnimg.cn/blog_migrate/37f41ecc74a17c3d07889eda5435e2a8.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/c742dbcc893807cd56f16e9d60bac14b.png)
构建好神经网络后,神经网络的优化过程就是就是优化权重(参数)减小损失的过程。通过正向传播计算损失函数,通过反向传递实现参数更新。在优化过程开始之前,我们需要对权重做一个初始化,权重的初始化会对模型的优化产生影响,具体影响表现在以下两个方面。
反向传导
根据链式求导法则,如上图为一个简单的三层网络,反向传导过程中,以最后一层为例 ∂z(3)∂a(2)=W2\beta ,变化之前,均值取决于前面层的复杂交互。
ref:
Why does batch norm have learnable scale and shift?
https://en.wikipedia.org/wiki/Normal_distribution
batch normalization 优势
加速深度模型的训练,
可以使用大的学习率,
有一定的正则化作用。
mini-batch normalization
在mini-batch中计算均值和方差,会引入一定的噪声。类似dropout,起到一定的正则作用。batch-size越小,带来的噪声越大。batch_size不能过小。
预测以及finetune
预测时,采用训练过程中计算得到均值和方差的均值,作为预测时batch normalization的参数。
finetune时,最好使用原来模型计算的均值和方差。
ref: