吳恩達深度學(xue)習(xi)課(ke)程二: 改善深層神經(jing)網絡 第一(yi)周:深度學(xue)習(xi)的實踐(jian)(五)歸一(yi)化(hua)
此分類用于記錄吳恩達深度學習課程的學習筆記。
課程(cheng)相(xiang)關信息(xi)鏈接如下:
- 原課程視頻鏈接:
- github課程資料,含課件與筆記:
- 課程配套練習(中英)與答案:
本篇(pian)為第二(er)課第一周的(de)內容,的(de)內容。
本周為第(di)二(er)課的(de)第(di)一(yi)(yi)周內容(rong),就像課題(ti)(ti)名稱一(yi)(yi)樣,本周更偏(pian)向(xiang)于深度(du)學習實踐(jian)中出現的(de)問題(ti)(ti)和概(gai)念,在(zai)有了第(di)一(yi)(yi)課的(de)機器(qi)學習和數學基(ji)礎(chu)后,可(ke)以(yi)說,在(zai)理解上對本周的(de)內容(rong)不會(hui)存在(zai)什么難度(du)。
當然,我也會對一些新出現的概念補充一些基礎內容來幫助理解,在有之前基礎的情況下,按部就班即可對本周內容有較好的掌握。
在學習完一些緩解過擬合的方法后,我們便可以較好的訓練神經網絡,而不至于出現因為模型復雜度上升反而導致模型性能下降的情況。
這樣,神經網絡就可以較好的擬合數據。
而這一部分的內容,就是在這個基礎上如何加快神經網絡的訓練,實現更快,更穩定地收斂。
1.歸一化
還是先把概念擺出來(lai):
歸(gui)一化(Normalization)是指將(jiang)(jiang)數據按一定的比(bi)(bi)例或標(biao)準進行調整,使得數據的數值范圍或分布符合某種特(te)定的要求。通常,歸(gui)一化的目(mu)標(biao)是將(jiang)(jiang)數據轉(zhuan)化為統一的尺度(du),便于(yu)不(bu)同數據之(zhi)間的比(bi)(bi)較或用(yong)于(yu)某些(xie)算法中。
要提前說明的是,下面的筆記內容介紹的只是歸一化方法中最普適的一種,叫Z-Score標準化(標準差標準化),也(ye)可以(yi)直接(jie)叫標準化(hua)。
1.1 標準化的步驟
(1)計算樣本的均值
對每一維特征,計算其均值 \(\mu\) 。
我們用一組數據在每一步進行相應處理來演示這個完整的過程:
原始樣本:\([10, 12, 9, 15, 14]\),樣本數 \(N=5\)
(2)計算每個樣本與均值的差 \((x - \mu)\) 以及平方差
| 樣本 \(x\) | \(x - \mu\) | \((x - \mu)^2\) |
|---|---|---|
| 10 | -2 | 4 |
| 12 | 0 | 0 |
| 9 | -3 | 9 |
| 15 | 3 | 9 |
| 14 | 2 | 4 |
(3)計算方差與標準差
總體方差(分母使用 \(N\)):
總體標準差:
(4)執行標準化變換
每個樣本的標準化結果:
逐項計算:
| \(x\) | \(x-\mu\) | \(z = \frac{x-\mu}{\sigma}\) |
|---|---|---|
| 10 | -2 | -0.877058 |
| 12 | 0 | 0.000000 |
| 9 | -3 | -1.315587 |
| 15 | 3 | 1.315587 |
| 14 | 2 | 0.877058 |
因(yin)此標準化后的結果(guo)為(wei):
這樣,我們就對數據完成了一次標準化,那進行這些步驟的作用又是什么呢?
1.2標準化的作用
我們來看一下各個步驟后,樣本數據的變化:

這(zhe)是(shi)未(wei)經(jing)處(chu)理的原(yuan)始數(shu)據,現在,我們按照(zhao)標(biao)準化公式(shi)一步(bu)步(bu)進行:
將各數據減去均值,這一步也叫做中心化,此時數據分布如下:

可以發現,中心化后,數據的均值變為 0:
現在,我們再把中心化的數據除以標準差,此時數據分布如下:

經過這一步,標準化后數據的標準差為 1:
也就是說,標準化后,數據的均值變為0,標準差變為1,這是它的作用,可這樣的變換又是如何幫助訓練的呢?
我們繼續下一節。
1.3 標準化如何幫助訓練?
(1)消除量綱差距的同時保持特征信息
在現實數據中,不同特征往往有不同的單位或數量級。
例如(ru),在一個房價預測模型中(zhong):
- 房屋面積以“平方米”計,數值可能在幾十到幾百;
- 房間數量只在“1~5”之間變化。
如果不做標準化,面積特征的值遠大于房間數,模型在更新參數時會更偏向面積,而忽視房間數量的影響。
對此,標準化(hua)這(zhe)樣解決這(zhe)個問題:
- 中心化:將每個特征的均值移動到 0,使數據以 0 為中心,正負對稱,方便神經網絡處理。
- 除以標準差:標準差就像一個“伸縮尺”,根據特征自身的波動范圍對數據進行拉伸或壓縮,波動大的特征被壓縮幅度大,波動小的特征被壓縮幅度小,從而統一特征尺度。
要說明的是,除以標準差精妙的地方在于統一尺度的同時保留了同一特征內的差距。
舉個例子:
對于兩個人的年齡,一個人20歲,一個人10歲。
壓縮后,前一個人變成了2歲,后一個人變成了1歲。
但是他們之間的差別關系沒有變化,前者仍比后者大,我們只是把跨度從10歲縮小從了1歲來減少波動性。模型依舊可以區分兩個樣本的差別。
我們再用房(fang)屋的實例說明來整(zheng)體演示(shi)一下(xia):
- 設房屋面積原始值:[50, 120, 200, 300, 400], 房間數原始值:[1, 2, 3, 4, 5]
- 中心化后:面積:[?167, ?97, ?17, 83, 183],房間數:[?2, ?1, 0, 1, 2]
- 除以標準差(面積 σ≈145.44,房間數 σ≈1.414)后: 面積標準化:[?1.15, ?0.67, ?0.12, 0.57, 1.26], 房間數標準化:[?1.41, ?0.71, 0, 0.71, 1.41]
這樣,通過標準化,面積和房間數都被縮放到大致相似的范圍,梯度更新時影響力平衡,同時保持了各房屋之間的相對差異。
可以形象地理解為:每個特征都被配上了“統一的尺子”,讓它們在同一尺度下公平競爭,既消除了量綱差距,又保持原始信息。
(2)平衡含正負值的數據集
標準化后的數據以 0 為中心,分布更對稱,特別適合使用如 tanh、ReLU 等激活函數的神經網絡。
我們用tanh舉例:

如果輸入特征全是正數,tanh 的輸出始終偏向 1 區域,梯度幾乎為 0,學習停滯。
而經過標準化后,輸入(ru)既有(you)正又有(you)負,輸出能(neng)覆蓋整個區間(jian),梯(ti)度保(bao)持活躍(yue),網絡(luo)學習更充分(fen)。
這(zhe)便是(shi)關于歸一(yi)化的內容(rong),下一(yi)篇便是(shi)本周理論部分的最后一(yi)篇,是(shi)關于網絡(luo)運行中一(yi)些(xie)常(chang)見的梯(ti)度現(xian)象(xiang)和(he)其應對方法(fa)。
