深度學習中的資料預處理方法
本文主要講深度學習中的資料預處理方法,主要參考NG的UFLDL教程以及其他一些部落格和論文進行總結,UFLDL資料預處理教程連結為
http://deeplearning.stanford.edu/wiki/index.php/資料預處理
資料預處理在眾多深度學習演算法中都起著重要作用,通常所講的預處理包括資料歸一化和白化。以下分別對資料歸一化和白化進行說明。
資料歸一化。資料歸一化(Data Normalization)是資料預處理的第一步,有很多方法,如常見的高斯歸一化、最大最小值歸一化等,而在深度學習中常用的是以下幾種:
(1)簡單縮放 (Simple Rescaling)
在簡單縮放中,我們的目的是通過對資料的每一個維度的值進行重新調節(這些維度可能是相互獨立的),使得最終的資料向量落在 [0,1]或[ − 1,1] 的區間內(根據資料情況而定),以滿足應用需求。例如,在sparse auto-encoder中,由於網路的輸出和輸入是近似相等的,而隱含層和輸出層神經元通常採用的是sigmoid函式作為啟用函式,該函式值域為[0,1],因此為了保證輸出等於輸入,通常需要將輸入縮放至[0,1]這個範圍,然後再進行訓練。
(2)逐樣本均值消減(Per-example mean subtraction)
逐樣本均值消減,也稱為移除直流分量(remove DC),當資料時平穩的(stationary),即資料每一個維度的統計都服從相同分佈,可以考慮在每個樣本上減去資料的統計平均值(逐樣本計算,即分別計算各樣本的均值,然後各樣本減去其對應的均值)。自然影像具有平穩的性質,所以這種歸一化方法也是比較常用的。對自然影像應用PCA演算法時候,通常也會這樣處理,參考以下連結:
http://deeplearning.stanford.edu/wiki/index.php/PCA
注意:通常這種方法只用於灰度影像,因為彩色影像不同色彩通道中的畫素並不都存在平穩特性。此外,對於教程這部分內容還有點疑惑,“對影像資料應用PCA演算法”這部分內容上面講的是標準的PCA處理方法(各維度去均值),而下面給的公式卻是單獨處理每個影像塊(逐樣本去均值)。
(3)特徵標準化(Feature Standardization)
特徵標準化的目的是使資料集中所有特徵都具有零均值和單位方差,即資料的每一個維度具有零均值和單位方差,這也是比較常見的一種歸一化方法,比如使用SVM時候也要進行類似處理。在實際應用中,特徵標準化的具體做法是:首先計算每一個維度上資料的均值(使用全體資料計算),之後在每一個維度上都減去該均值。下一步便是在資料的每一維度上除以該維度上資料的標準差。
例如X是一個訓練樣本集,包含m個訓練樣本且每個訓練樣本的維數是n。應用特徵標準化時先計算各行資料的均值
,然後樣本集X減去該均值得到零均值化後的樣本集XX。之後XX的各行除以該行資料的標準差就會得到特徵標準化後的樣本。
總結:以上有三種方法,具體預處理時候到底該如何選擇預處理方法呢?一般可以根據自己的需要來選擇(或者說資料型別)。
若影像是自然灰度影像,由於灰度影像具有平穩特性,通常可選擇第二種方法,即移除直流分量(逐樣本移除直流分量後還可以繼續逐樣本除以各樣本的標準差,不過這一步通常不做,因為其平穩特性)。
若影像是自然彩色影像,由於色彩通道間並不存在平穩特性,因此通常對資料進行特徵縮放(使畫素值位於 [0,1] 區間)。然後再進行PCA/ZCA白化等操作,在白化前需進行特徵分量均值歸零(即使特徵的每一個維度具有零均值,通常不需要除以各維度資料的標準差,因為各維度標準差很接近,可以對上文中的X進行驗證)。在UFLDL教程的練習中(linear decoder)採用的是這種方法,而在有些論文中,也會採用第二種方法(逐樣本去均值和除以標準差),如論文“An Analysis of Single-Layer Networks in Unsupervised Feature Learning”,這樣在後續白化處理時是不是還需要再對各維度進行零均值化(因為計算協方差矩陣時需要這一步),論文裡這點沒說明。因此應用時建議根據練習中的方法來處理。
若影像是遙感影像,可採用linear decoder這個練習中的處理方法。
PCA/ZCA(zero-phase component analysis)白化。資料歸一化後的一個處理步驟就是資料白化。關於白化的基本知識可參考教程:
http://deeplearning.stanford.edu/wiki/index.php/Whitening
在進行 PCA/ZCA 白化時,首先使特徵零均值化是很有必要的, 這一步需要在計算協方差矩陣前完成(計算協方差矩陣前的必要處理)。
總結:其實資料歸一化和白化可以合併成一部分,即資料白化。因為白化前肯定需要進行一些必要的資料歸一化,比如計算協方差矩陣前需進行特徵零均值化操作。
此外關於預處理這部分內容,還可以參考部落格:
http://www.cnblogs.com/tornadomeet/archive/2013/04/12/3016319.html
相關文章
- 深度學習--資料預處理深度學習
- 深度學習——資料預處理篇深度學習
- 深度學習煉丹-資料預處理和增強深度學習
- 【資料處理】使用深度學習預測未來銷量深度學習
- C#中的深度學習(二):預處理識別硬幣的資料集C#深度學習
- 深度學習(6)——預處理Preprocessing深度學習
- 深度學習煉丹-資料處理和增強深度學習
- Python深度學習(處理文字資料)--學習筆記(十二)Python深度學習筆記
- 如何用深度學習處理結構化資料?深度學習
- 資料預處理方法彙總
- 深度學習、自然語言處理和表徵方法深度學習自然語言處理
- 《Python機器學習手冊:從資料預處理到深度學習》Python機器學習深度學習
- 拯救深度學習:標註資料不足下的深度學習方法深度學習
- 【Tensorflow_DL_Note3】深度學習中的資料處理及其視覺化深度學習視覺化
- sklearn中常用資料預處理方法
- 深度學習浪潮中的自然語言處理技術深度學習自然語言處理
- 深度學習 preprocess 預處理圖片方式去 pytorch 化深度學習PyTorch
- 資料預處理
- 《深度學習進階:自然語言處理》中的網址深度學習自然語言處理
- 深度學習(一)深度學習學習資料深度學習
- 資料預處理的形式
- ML.NET 3.0 增強了深度學習和資料處理能力深度學習
- 資料預處理-資料清理
- 資料分析--資料預處理
- 資料預處理 demo
- 基於圖深度學習的自然語言處理方法和應用深度學習自然語言處理
- 深度學習資料深度學習
- 機器學習/深度學習/自然語言處理學習路線機器學習深度學習自然語言處理
- SpringMVC入門學習---資料的處理SpringMVC
- 我的overlay(附加資料)處理再學習
- 【深度學習】深度解讀:深度學習在IoT大資料和流分析中的應用深度學習大資料
- Spark如何與深度學習框架協作,處理非結構化資料Spark深度學習框架
- 計算機視覺實戰的深度學習實戰二:影像預處理計算機視覺深度學習
- 深度學習中的優化方法(二)深度學習優化
- 深度學習中的優化方法(一)深度學習優化
- 資料預處理-資料歸約
- 資料預處理–資料降維
- 深度學習之影像處理與分析(二)深度學習