归一化方法
1.线性比例变换法
y = x / max(x)
2.极差变换法
y = (x - min(x)) / (max(x) - min(x))
缺点:当有新数据加入时,会导致min(x) 与 max(x) 的变化,需要重新定义。
3.0均值标准化
y = (x - mean(x)) / alpha
对数据进行归一化的本质:使得数据分布的均值为0,方差为1。
图像中的归一化:
由于图像本身的像素值已经是相对可靠的值,因此,对于图像,只做零均值化。
为什么要对数据进行归一化和中心化:
举例说明,在二元分类中,如果数据没有被归一化、没有被中心化,所有点都离坐标原点很远,仍然可以用一条直线将它们分开。但是如果该直线稍微转动一点,那么这个分类器将会被完全的破坏。因此,在没有归一化和没有被中心化的情况下,损失函数对于我们的权重矩阵总的线性分类器中的小扰动非常地敏感,这将会使得深度学习变得异常艰难。
因此,在深度学习中,引入Batch Normalization层。
Batch Normalization
对于Batch Normalization,在正向传递中,使用小批量的统计数据,计算平均值和标准差,得到估计值并对数据进行归一化。
知乎链接:深度学习Batch Normalization为什么效果好?
CSDN链接:Batch Normalization学习笔记
超参数搜索
所有的神经网络都涉及到大量的超参数,找到超参数的正确值非常重要。
1.一般学习速率是最重要的;
2.正则化、学习判据、模型大小等。
神经网络权重的初始化
权重的初始值太小:在学习深度网络的时候,当很小的初始值不断地乘以权重矩阵,它们将会衰减到0。那么当所有的权重都衰减为0,激活值也将消失。
权重的初始值过大:当过大的初始值不断地乘以权重矩阵,会带来爆炸性增长。
正确地初始化权重:例如,使用Xavier初始化法,那么在学习深度网络的时候,在深度网络的每一层,激活值都有很好的分别。在深度网络越来越深的时候,权值的初始化会变得至关重要。因为随着网络的变深,初始值将会不断地乘以那些权值矩阵。