標准化數據集
訓練神經網絡,其中一個加速訓練的方法就是歸一化輸入。
歸一化的兩個步驟:
- 零均值
- 歸一化方差
對訓練及測試集進行標准化的過程為:
\[\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,那么歸一化特征值就非常重要了。如果特征值處於相似范圍內,那么歸一化就不是很重要了。執行這類歸一化並不會產生什么危害,我通常會做歸一化處理。