機器學習(七)白化whitening

2021-07-10 10:56:32 字數 2071 閱讀 5028

白化whitening

一、相關理論

白化這個詞,可能在深度學習領域比較常遇到,挺起來就是高大上的名詞,然而其實白化是乙個比pca稍微高階一點的演算法而已,所以如果熟悉pca,那麼其實會發現這是乙個非常簡單的演算法。

白化的目的是去除輸入資料的冗餘資訊。假設訓練資料是影象,由於影象中相鄰畫素之間具有很強的相關性,所以用於訓練時輸入是冗餘的;白化的目的就是降低輸入的冗餘性。

輸入資料集x,經過白化處理後,新的資料x'滿足兩個性質:

(1)特徵之間相關性較低;

(2)所有特徵具有相同的方差。

其實我們之前學的pca演算法中,可能pca給我們的印象是一般用於降維操作。然而其實pca如果不降維,而是僅僅使用pca求出特徵向量,然後把資料x對映到新的特徵空間,這樣的乙個對映過程,其實就是滿足了我們白化的第乙個性質:除去特徵之間的相關性。因此白化演算法的實現過程,第一步操作就是pca,求出新特徵空間中x的新座標,然後再對新的座標進行方差歸一化操作。

二、演算法概述

白化分為pca白化、zca白化,下面主要講解演算法實現。這部分主要是學了ufldl的深度學習《白化》教程:自己的一點概括總結,演算法實現步驟如下:

1、首先是pca預處理

上面,左圖表示原始資料x,然後我們通過協方差矩陣可以求得特徵向量u1、u2,然後把每個資料點,投影到這兩個新的特徵向量,得到進行座標如下:

這就是所謂的pca處理。

2、pca白化

所謂的pca白化是指對上面的pca的新座標x』,每一維的特徵做乙個標準差歸一化處理。因為從上面我們看到在新的座標空間中,(x1,x2)兩個座標軸方向的資料明顯標準差不同,因此我們接著要對新的每一維座標做乙個標註差歸一化處理:

當然你也可以採用下面的公式:

x'為經過pca處理的新pca座標空間,然後λi就是第i維特徵對應的特徵值(前面pca得到的特徵值),ε是為了避免除數為0。

3、zca白化

zca白虎是在pca白化的基礎上,又進行處理的乙個操作。具體的實現是把上面pca白化的結果,又變換到原來座標系下的座標:

給人的感覺就像是在pca空間做了處理完後,然後又把它變換到原始的資料空間。

具體原始碼實現如下:

def zca_whitening(inputs):

sigma = np.dot(inputs, inputs.t)/inputs.shape[1] #inputs是經過歸一化處理的,所以這邊就相當於計算協方差矩陣

u,s,v = np.linalg.svd(sigma) #奇異分解

epsilon = 0.1 #白化的時候,防止除數為0

zcamatrix = np.dot(np.dot(u, np.diag(1.0/np.sqrt(np.diag(s) + epsilon))), u.t) #計算zca白化矩陣

return np.dot(zcamatrix, inputs) #白化變換

1、

深度學習 白化

白化的目的是去除輸入資料的冗餘資訊。例如 訓練資料是影象,由於影象中相鄰畫素之間具有很強的相關性,因此輸入是冗餘的。白化的目的就是降低輸入的冗餘性。輸入資料集,經過白化處理後,生成的新資料集滿足兩個條件 一是特徵相關性較低 二是特徵具有相同的方差。白化演算法的實現過程 第一步操作是pca,求出新特徵...

機器學習之路七 LSTM

rnn訓練與bp演算法 如何簡單的理解lstm lstm的推導與實現 有推導 有實現 詳細,有以下兩處錯誤 愛可可 愛生活 lstm 航班人數 在keras 上實踐lstm例子 字母順序 lstm 航班人數 資料 international airline passengers.csv 基於kera...

機器學習第七講

第七講 最優化 1.優化目標 2.梯度下降 隨機梯度下降sgd 訓練乙個樣本,更新 次引數 mini batch是sgd的推廣,通常所說sgd即是mini batch。病態條件 病態條件 不同方向有不同的梯度 學習率的選擇困難。區域性最小 區域性最小 local minima 權重空間是對稱的 放大...