白化(預處理步驟)【轉】


介紹

我們已經了解了如何使用PCA降低數據維度。在一些算法中還需要一個與之相關的預處理步驟,這個預處理過程稱為白化。舉例來說,假設訓練數據是圖像,由於圖像中相鄰像素之間具有很強的相關性,所以用於訓練時輸入是冗余的。白化的目的就是降低輸入的冗余性;更正式的說,我們希望通過白化過程使得學習算法的輸入具有如下性質:(i)特征之間相關性較低;(ii)所有特征具有相同的方差。

2D的例子

下面我們先用前文的2D例子描述白化的主要思想,然后分別介紹如何將白化與平滑和PCA相結合。

如何消除特征之間的相關性?在前文計算\textstyle x_{\rm rot}^{(i)} = U^Tx^{(i)}時實際上已經消除了輸入特征\textstyle x^{(i)}之間的相關性。得到的新特征 \textstyle x_{\rm rot} 的分布如下圖所示:

PCA-rotated.png

這個數據的協方差矩陣如下:

\begin{align}
\begin{bmatrix}
7.29 & 0  \\
0 & 0.69
\end{bmatrix}.
\end{align}

(注:嚴格地講,這部分許多關於“協方差”的陳述僅當數據均值為0時成立。下文的論述都隱式地假定這一條件成立,不過即使數據均值不為0,下文的說法仍然成立,所以你無需擔心這個。)

 \textstyle x_{\rm rot} 協方差矩陣對角元素的值為 \textstyle \lambda_1 和 \textstyle \lambda_2 絕非偶然。並且非對角元素值為0; 因此, \textstyle x_{{\rm rot},1} 和 \textstyle x_{{\rm rot},2} 是不相關的, 滿足我們對白化結果的第一個要求 (特征間相關性降低)。

 為了使每個輸入特征具有單位方差,我們可以直接使用\textstyle 1/\sqrt{\lambda_i}作為縮放因子來縮放每個特征\textstyle x_{{\rm rot},i}。具體地,我們定義白化后的數據\textstyle x_{{\rm PCAwhite}} \in \Re^n如下:
\begin{align}
x_{{\rm PCAwhite},i} = \frac{x_{{\rm rot},i} }{\sqrt{\lambda_i}}.   
\end{align}

 繪制出 \textstyle x_{{\rm PCAwhite}} ,我們得到:

 PCA-whitened.png

 這些數據現在的協方差矩陣為單位矩陣I。我們說,\textstyle x_{{\rm PCAwhite}} 是數據經過PCA白化后的版本: \textstyle x_{{\rm PCAwhite}} 中不同的特征之間不相關並且具有單位方差。

 白化與降維相結合:如果你想要得到經過白化后的數據,並且比初始輸入維數更低,可以僅保留 \textstyle x_{{\rm PCAwhite}} 中前 \textstyle k 個成分。當我們把PCA和正則化結合起來時(在稍后討論),\textstyle x_{{\rm PCAwhite}}中最后的少量成分將總是接近於0,因而舍棄這些成分不會帶來很大的問題。

ZCA白化

 最后要說明的是,是數據的協方差矩陣變為單位矩陣I的方式並不唯一。具體地,如果R是任意正交矩陣,即滿足\textstyle RR^T = R^TR = I(說它正交不太嚴格,R可以是旋轉或反射矩陣),那么

 \textstyle R \,x_{\rm PCAwhite}仍然具有單位協方差。在ZCA白化中,令 \textstyle R = U 。我們定義ZCA白化的結果為:\begin{align}
x_{\rm ZCAwhite} = U x_{\rm PCAwhite}
\end{align}

 繪制\textstyle x_{\rm ZCAwhite}得到:

 ZCA-whitened.png

 可以證明,對所有可能的R,這種旋轉式的\textstyle x_{\rm ZCAwhite}盡可能地接近原始輸入數據x。當使用ZCA白化時(不同於PCA白化),我們通常保留數據的全部n個維度,不嘗試去降低它的維數

 正則化

實踐中需要實現PCA白化或ZCA白化時,有時一些特征值\textstyle \lambda_i在數值上接近於0,這樣在縮放步驟時我們除以 \sqrt{\lambda_i} 將導致除以一個接近0的值;這可能會導致數據上溢(賦為最大值)或造成數值不穩定。因而在實踐中,我們使用少量的正則化實現這個縮放過程,即在取平方根和倒數之前給特征值加上一個很小的常數\textstyle \epsilon

\begin{align}
x_{{\rm PCAwhite},i} = \frac{x_{{\rm rot},i} }{\sqrt{\lambda_i + \epsilon}}.
\end{align}

當 \textstyle x 在區間 \textstyle [-1,1] 上時, 一般取值為 \textstyle \epsilon \approx 10^{-5}

對圖像來說,這里加上\textstyle \epsilon,對輸入圖像也有一些平滑(或低通濾波)的作用。這樣處理還能消除在圖像的像素信息獲取過程中產生的噪聲,改善學習到的特征。

 ZCA白化是一種數據預處理方法,它將數據從 \textstyle x 映射到 \textstyle x_{\rm ZCAwhite} 。 

 事實證明這也是一種生物眼睛(視網膜)處理圖像的粗糙模型。具體而言,當你的眼睛感知圖像時,由於一幅圖像中相鄰的部分在亮度上十分相關,大多數臨近的“像素”在眼中被感知為相近的值。因此,如果人眼需要分別傳輸每個像素值(通過視覺神經)到大腦中,會非常不划算。取而代之的是,視網膜進行一個與ZCA中相似的去相關操作(這是由視網膜上的ON-型和OFF-型光感受器細胞將光信號轉變為神經信號完成的)。由此得到對輸入圖像的更低冗余的表示,並將它傳輸到大腦。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM