标准化数据集

标准化数据集

训练神经网络,其中一个加速训练的方法就是归一化输入。
归一化的两个步骤:

  • 零均值
  • 归一化方差
    对训练及测试集进行标准化的过程为:

\[\bar{x} = \frac{1}{m} \sum_{i=1}^m x^{(i)} \]

\[x^{(i)} := x^{(i)} - \bar{x} \]

\[\sigma^2 = \frac{1}{m} \sum_{i=1}^m {x^{(i)}}^2 \]

\[x^{(i)}:= \frac{x^{(i)}}{\sigma^2} \]

原始数据:

零均值:

归一化方差后:

数据集未进行标准化时,成本函数的图像及梯度下降过程将是:

代价函数就有点像狭长的碗一样,如果你在上图这样的代价函数上运行梯度下降法,你必须使用一个非常小的学习率。因为如果是在这个位置,梯度下降法可能需要多次迭代过程,直到最后找到最小值。
数据标准化后:

但如果函数是一个更圆的球形轮廓,那么不论从哪个位置开始,梯度下降法都能够更直接地找到最小值,你可以在梯度下降法中使用较大步长。

所以如果输入特征处于不同范围内,可能有些特征值从 0 到 1,有些从 1 到 1000,那么归一化特征值就非常重要了。如果特征值处于相似范围内,那么归一化就不是很重要了。执行这类归一化并不会产生什么危害,我通常会做归一化处理。

posted @ 2019-04-10 14:44  youngliu91  阅读(2298)  评论(0编辑  收藏  举报