当前位置:   article > 正文

模型训练时加载预训练模型,为何?以及为何数据集标准化、归一化_使用预训练模型,需不需要改变均值和方差

使用预训练模型,需不需要改变均值和方差

1、加载预训练模型的好处

目前深度学习神经网络中,训练过程是基于梯度下降法来进行参数优化的。通过一步步的迭代,来求得最小的损失函数和最优的模型权重
进行梯度下降时会给每一个参数赋一个初始值。一般我们希望数据和参数的均值都为0,输入和输出数据的方差一致。在实际应用中,参数服从高斯分布或者均匀分布都是比较有效的初始化方式

一个好的初始化优势
1.加快梯度下降的收敛速度
2.更有可能获得一个低模型误差,或者低泛化误差的模型
3.降低因未初始化或初始化不当导致的梯度消失或者梯度爆炸问题。此情况会导致模型训练速度变慢,崩溃,直至失败。
4.其中随机初始化,可以打破对称性,从而保证不同的隐藏单元可以学习到不同的东西

2、标准化,归一化

2.1标准化作用

标准化处理可以加快模型的训练速度

2.2什么是标准化

标准化:
1、对训练集进行零均值化处理,也就是处理后的数据集的均值为零。
2、归一化方差。即使方差变为1。
怎么计算数据的均值方差:
求均值方差链接: transforms.Normalize,计算数据量大数据集的像素均值(mean)和标准差(std).

2.3标准化过程–去均值–除方差

1、z-score标准化
假设数据集的每一个训练样本只有两个特征x1、x2,那么训练集:
在这里插入图片描述
原始数据集的特征分布:(图1)
在这里插入图片描述
怎么使均值变成0
首先算出数据集的平均值:
在这里插入图片描述
求得的均值是一个向量,这里的x1是所有训练样本x1的均值。x2同理:
在这里插入图片描述
然后用数据集的每一项减去这个均值就可以使整个数据集的均值为0了
在这里插入图片描述
所得X如下所示:
在这里插入图片描述
去均值化的特征分布:(图2)
在这里插入图片描述

参考:

    R_mean = np.mean(per_image_Rmean)/255
    G_mean = np.mean(per_image_Gmean)/255
    B_mean = np.mean(per_image_Bmean)/255
  • 1
  • 2
  • 3

2、要使方差为1,方差也就是数据偏离均值的程度,观察图(1)第二张图,这是经过零均值化处理后的数据集,现在x1和x2的均值都为0,我们看x1偏离原点(即均值)的程度是不是要大于x2。我们要对其处理以使x1、x2方差都为1
首先算出数据集的方差。然后用数据集除以方差即可。
在这里插入图片描述
归一化之后的特征分布:
在这里插入图片描述

参考:

    stdR = np.std(per_image_Rmean)/255
    stdG = np.std(per_image_Gmean)/255
    stdB = np.std(per_image_Bmean)/255
  • 1
  • 2
  • 3

总结:
对数据集进行标准化处理,就是让数据集的均值为0,方差为1。把数据集映射到(-1,1)之间。
标准化步骤:
在这里插入图片描述
为什么标准化可以加快训练?
在这里插入图片描述
左图是进行归一化之前的J与w、b的图像,可以看出代价函数非常细长狭窄,在一些情况下需要很多次的迭代过程从而使效率底下。
归一化后的就变为了右图,可以看出代价函数非常平均,无论从哪个位置开始迭代,都会很快到达极小值点,从而提高了效率。
参考博客: https://www.cnblogs.com/lau1997/p/12361250.html.

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号