神經網路模型的資料預處理

如果要使用 AutoKeras 這個深度學習的框架,對於資料集的預處理是非常重要的。現有的許多資料集為了學習方便,在下載時往往已經有人幫你預處理完畢,讓學習的過程中不用再去處理瑣碎繁瑣的預處理,整理下面幾種常見的資料預處理方法。

為什麼資料正規化 Normalization 會讓模型的表現較好 ?

神經網路模型的學習、修正的演算法是透過梯度來更新權重參數,如果輸入的數值較小可以更快速地來讓模型更新權重,輸入的數值如果很大、學習率又低的話,訓練的速度會變得很慢。

一般而言會希望數值介於 0 – 1 之間,而這也就是正規化資料的目的。

將數值縮放到 0~1 之間,這個過程就是正規化,許多 AutoKeras 的模型會自己執行這個步驟,例如圖像與結構化資料模型。

資料向量化 Vectorization

神經網路模型並無法直接處理文字、圖像或者是聲音。 再送入模型之前往往需要經過向量化 Vectorization 的處理,讓資料變成是張量 Tensor 的形式以方便計算與處理。

向量化將原始輸入資料轉成浮點數向量,例如一張圖片原本是 500 * 500 px 的彩色圖片,會先將這個圖片做預處理,轉成三個 RGB 的浮點數矩陣,而這些矩陣內的數值原本 0-255 的數值正規化後 0-1之間數值的矩陣,一共有三個當作是一組的向量資料。

資料編碼 Encoding

有些時候資料集中的變數是類別變數,像是國家的名稱、顏色這類沒有數值代表的分類資料,需要先把這些資料轉換成對應的數值 ( ex. 0, 1, 2, … ) 才可以讓模型進行訓練。

常用的 Encoding 方式有 One hot encoding、Label encoding

One hot encoding

One hot encoding 邏輯為將類別拆成多個行(column),每個列中的數值由1、0替代,當某一列的資料存在的該行的類別則顯示1,反則顯示0。

缺值處理

資料集常常有缺少某些值的情況發生,一般的做法是以 0 去填補缺值,因為 0 本身就已經是不顯著的值,一旦神經網路模型學習到0代表缺值,之後便會忽略它。

需要注意的是,如果資料集中以特殊方式表示缺值(ex. NAN、No Value、-1),那麼需要先針對這些文字或數值進行處理,可以先移除他或者直接填補成缺值的形式: 0。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *