我们在训练模型之前,有一个可以加快训练速度的方法,那就是对训练数据集进行标准化处理。
0. 为什么需要标准化
1. z-score标准化
假设数据集的每一个训练样本只有两个特征x1、x2,那么训练集:
![](https://img.haomeiwen.com/i7036411/0301ca8b293a8bff.png)
绘制出的图形如图所示,要对其进行标准化分为两步:
1、对训练集进行零均值化处理,顾名思义,也就是处理后的数据集的均值为零。
2、归一化方差。即使方差变为1。
分步讲解:
1、怎样来使均值变为0呢?首先我们需要算出数据集的平均值:
求得的均值是一个向量,这里的x1是所有训练样本x1的均值。x2同理:
然后用数据集的每一项减去这个均值就可以使整个数据集的均值为0了。
所得X如下所示:
![](https://img.haomeiwen.com/i7036411/a9107cb0e17b738b.png)
2、要使方差为1,方差也就是数据偏离均值的程度,观察图(1)第二张图,这是经过零均值化处理后的数据集,现在x1和x2的均值都为0,我们看x1偏离原点(即均值)的程度是不是要大于x2。我们要对其处理以使x1、x2方差都为1。我们首先算出数据集的方差。然后用数据集除以方差即可。
![](https://img.haomeiwen.com/i7036411/e88a69bb78825d08.png)
总结:
对数据集进行标准化处理,就是让数据集的均值为0,方差为1。把数据集映射到(-1,1)之间。
总公式:
除了z-score标准化还有另外的标准化、归一化形式,待更...
![](https://img.haomeiwen.com/i7036411/a939898f0770047d.png)
2. 为什么标准化可以加快训练
![](https://img.haomeiwen.com/i7036411/ab537d0c2fba545d.png)
![](https://img.haomeiwen.com/i7036411/735a6135623aea9b.png)
图片归一化
mtcnn源码中对图片归一化到(-1,1)采用的是im_data = (im_data-127.5)*0.0078125
,解释为所有点的像素值减去127.5,然后再除以128(相当于×0.0078125),就是把像素值近似归一化到(-1,1)之间。 2019-03-12
Reference:
[1] 吴恩达深度学习课程
网友评论