1. 程式人生 > >深度學習:什麼是自編碼器(Autoencoder)

深度學習:什麼是自編碼器(Autoencoder)

Autoencoder

autoencoder是一種無監督的學習演算法,主要用於資料的降維或者特徵的抽取,在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣WW的初始值。

神經網路中的權重矩陣WW可看作是對輸入的資料進行特徵轉換,即先將資料編碼為另一種形式,然後在此基礎上進行一系列學習。然而,在對權重初始化時,我們並不知道初始的權重值在訓練時會起到怎樣的作用,也不知道在訓練過程中權重會怎樣的變化。因此一種較好的思路是,利用初始化生成的權重矩陣進行編碼時,我們希望編碼後的資料能夠較好的保留原始資料的主要特徵。那麼,如何衡量碼後的資料是否保留了較完整的資訊呢?答案是:如果編碼後的資料能夠較為容易地通過解碼恢復成原始資料,我們則認為W

W較好的保留了資料資訊。

例如下圖所示,將手寫數字圖片進行編碼,編碼後生成的 ϕ1ϕ1ϕ2ϕ2ϕ3ϕ3ϕ4ϕ4ϕ5ϕ5ϕ6ϕ6 較完整的保留了原始影象的典型特徵,因此可較容易地通過解碼恢復出原始影象。

圖片名稱

autoencoder通過神經網路進行預訓練,從而確定WW的初始值。其目標是讓輸入值等於輸出值。如下圖所示:首先用WW對輸入進行編碼,經過啟用函式後,再用WTWT進行解碼,從而使得h(x)xh(x)≈x。該過程可以看作是對輸入資料的壓縮編碼,將高維的原始資料用低維的向量表示,使壓縮後的低維向量能保留輸入資料的典型特徵,從而能夠較為方便的恢復原始資料。需要注意的是:這裡增加了一個約束條件,即在對資料進行編碼和解碼時,使用的是同一個引數矩陣W

W。該約束可看作是一種regularization,用於減少引數的個數,控制模型的複雜度。

圖片名稱

對於多層神經網路的引數初始化問題,我們可以依次對每一層進行autoencoder。如下圖所示,具體做法是首先按照上述方法確定第一層的權重引數,然後固定第一層的引數,對第二層的引數進行訓練,以此類推,直到得到所有權重值。

圖片名稱