[DeeplearningAI筆記]第二章1.9歸一化normalization
覺得有用的話,歡迎一起討論相互學習~
1.9 歸一化Normaliation
- 訓練神經網絡,其中一個加速訓練的方法就是歸一化輸入(normalize inputs).
- 假設我們有一個訓練集,它有兩個輸入特征,所以輸入特征x是二維的,這是數據集的散點圖.

歸一化輸入需要兩個步驟
第一步-零均值化
- subtract out or to zero out the mean 計算出u即x(i)的均值
- u是一個向量,\(x=x-u\)每個訓練數據\(x\)都是\(x-u\)的新值
- 意思是移動訓練集,直到它完成零均值化

第二步-歸一化方差
-
如上圖所示:特征x1的方差比特征x2的方差要大得多,我們要做的是給\(\sigma\)賦值.\(\sigma\)是一個方差,它的每個特征都是方差.其中\(\sigma^2=\frac{1}{m}\sum^{m}_{i=1}x^{(i)}\).元素\(x^{(i)}\)表示每個特征的方差.我們已經對數據完成了零均值化,現在只需要將所有數據都除以向量\(\sigma^{2}\)
-
經過方差的歸一化,數據分布變為:

-
特征x1和特征x2的方差都等於1
-
注意:如果你要用它來調整數據,那么要用相同的\(u和\sigma^2\)來歸一化測試集和訓練集.這個數據集都是通過相同的\(u和\sigma定義的相同的數據轉換\)其中\(u和\sigma都是通過訓練數據集得來的\)
為什么要歸一化輸入特征
-
如果不使用歸一化,則這是個非常細長狹窄的代價函數,你要找的代價函數的最小值點應該在這里.(如圖中箭頭標示)

-
但是特征值在不同的取值范圍內,例如x1取值范圍從1到1000,特征x2的取值范圍從0到1,結果是參數w1和w2值的范圍或者比率完全不同,這些數據軸應該是w1和w2,為了直觀理解,我標記為w和b,該函數的輪廓十分狹窄.

- 如果使用了歸一化方法,代價函數更加對稱

- 如果在不使用歸一化方法且特征分布十分不均勻的數據集上的代價函數上運行梯度下降法,必須使用一個非常小的學習比率,因為如果是在這個位置,梯度下降法可能需要更多次迭代過程.

直到最后找到最小值.
- 但是如果函數是經過歸一化的特征分布,那么會是一個更圓的輪廓,那么無論從哪個位置開始,梯度下降法都能夠更直接地找到最小值,並且可以使用較大步長,而不是需要以較小步長反復執行.

-
這只是一個二維特征的例子,實際上w是一個高維向量,因此用二維繪制w並不能正確的傳達直觀理解,但總的直觀理解是代價函數會更圓一些,,前提是特征都在相似范圍內,而不是從1到1000,0到1的差別很大的范圍內,而是都在-1到1的范圍內,或者相似偏差,這使得優化代價函數變的更簡單更快捷.
-
實際上,如果特征x1范圍在0~1之間,x2在-1~1之間,x3在1~2之間,它們是相似范圍,所以會表現的很好,如果在不同的取值范圍內,如其中一個從1到1000,另一個從0到1,這對優化算法十分不利,但是僅將它們設置為均化零值,假設方差為1,確保特征都在相似范圍內,通常可以使算法運算得更快.
-
如果數據的不同特征值取值范圍差異很大,那么歸一化就很重要了,如果特征值處於相似范圍,那么歸一化就變得不那么重要了.




