深度學習入門--標準化,歸一化,零均值化

我們在訓練模型之前,有一個可以加快訓練速度的方法,那就是對訓練數據集進行標準化處理。

爲什麼需要標準化

z-score標準化

假設數據集的每一個訓練樣本只有兩個特徵x1、x2,那麼訓練集:
X=[x1(1)x1(2)...x1(m)x2(1)x2(2)...x2(m)]X=\begin{bmatrix} x_{1}^{(1)} & x_{1}^{(2)} & ... & x_{1}^{(m)} \\ x_{2}^{(1)} & x_{2}^{(2)}& ... & x_{2}^{(m)} \end{bmatrix}原始數據集

繪製出的圖形如圖所示,要對其進行標準化分爲兩步:

1、對訓練集進行零均值化處理,顧名思義,也就是處理後的數據集的均值爲零。
2、歸一化方差。即使方差變爲1。

#####分步講解:
1、怎樣來使均值變爲0呢?首先我們需要算出數據集的平均值:

μ=i=1m(Xi)\mu =\sum_{i=1}^{m}\left ( X^{i} \right )

求得的均值是一個向量,這裏的x1是所有訓練樣本x1的均值。x2同理:

μ=[x1x2]\mu =\begin{bmatrix}x_{1}\\ x_{2}\end{bmatrix}

然後用數據集的每一項減去這個均值就可以使整個數據集的均值爲0了。

X=XμX=X-\mu
所得X如下所示:
X=[x1(1)x1x1(2)x1...x1(m)x1x2(1)x2x2(2)x2...x2(m)x2]X=\begin{bmatrix} x_{1}^{(1)}-x_{1} & x_{1}^{(2)}-x_{1} & ... & x_{1}^{(m)}-x_{1} \\ x_{2}^{(1)}-x_{2} & x_{2}^{(2)}-x_{2}& ... & x_{2}^{(m)}-x_{2} \end{bmatrix}去均值化後的數據集
2、要使方差爲1,方差也就是數據偏離均值的程度,觀察圖(1)第二張圖,這是經過零均值化處理後的數據集,現在x1和x2的均值都爲0,我們看x1偏離原點(即均值)的程度是不是要大於x2。我們要對其處理以使x1、x2方差都爲1。我們首先算出數據集的方差。然後用數據集除以方差即可。
σ2=1mi=1m(Xi)2\sigma ^{2}=\frac{1}{m}\sum_{i=1}^{m}\left ( X^{i} \right )^{2}
X=Xσ2X=\frac{X}{\sigma ^{2}}歸一化方差後的數據集

####總結:
對數據集進行標準化處理,就是讓數據集的均值爲0,方差爲1。把數據集映射到(-1,1)之間。
####總公式:X=Xμσ2X=\frac{X-\mu }{\sigma ^{2}}
除了z-score標準化還有另外的標準化、歸一化形式,待更…標準化步驟

爲什麼標準化可以加快訓練

圖(2)
圖(3)

reference:
1、吳恩達深度學習課程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章