深度學習之自編碼器AutoEncoder

什麼是自編碼器(AutoEncoder)

深度學習之自編碼器AutoEncoder

自編碼器(AutoEncoder),顧名思義,使用自身的高階特徵來編碼自己,它本質上也是一種神經網絡,輸入和輸出一致,藉助稀疏編碼的思想,使用稀疏的高階特徵重新組合來重構自己。作為一種自監督的學習算法,主要用於數據的降維或者特徵的抽取。

自編碼器的種類

自編碼器(autoencoder)是神經網絡的一種,經過訓練後能嘗試將輸入複製到輸出。該網絡可以看作由兩部分組成:一個由函數 h = f(x) 表示的編碼器和一個生成重構的解碼器 r = g(h)。如果一個自編碼器只是簡單地學會將處處設置為 g(f(x)) = x,那麼這個自編碼器就沒什麼特別的用處。相反,我們不應該將自編碼器設計成輸入到輸出完全相等。這通常需要向自編碼器強加一些約束,使它只能近似地複製,並只能複製與訓練數據相似的輸入。這些約束強制模型考慮輸入數據的哪些部分需要被優先複製,因此它往往能學習到數據的有用特性。

降維限制

限制中間隱層的節點數量,使得其節點數量小於輸入/輸出節點的數量,這就相當於增加了一個降維的過程。由於隱層節點數小雨輸入節點數,那隻能學習數據中最重要的特徵,將不太相關的特徵去除。如果再給隱層的權重增加一個L1正則化,則可以根據懲罰係數控制隱含節點的稀疏程度,懲罰係數越大,學到的組合特徵越稀疏,非零權重的特徵數量越少。

加入噪聲

由於數據加入了噪聲,只有神經網絡能夠將噪聲除去,才能復原數據,所以也達到了防止輸入輸出完全相同的情況。最常用的噪聲是高斯噪聲(Additive Gaussian Noise, AGN)。隨機遮擋的噪聲(Masking Noise)也可以,這種情況下,圖像中的一部分像素被置0,模型需要從其他像素的結構推測出這些遮擋的像素是什麼,因此依然可以提取出高階特徵。

自編碼器在深度學習中的應用

在深度學習中,AutoEncoder可用於在訓練階段開始前,確定權重矩陣W的初始值。神經網絡中的權重矩陣在對權重初始化時,並不知道初始的權重值在訓練時會起到怎樣的作用,也不知道在訓練過程中權重會怎樣的變化。因此一種較好的思路是,利用初始化生成的權重矩陣進行編碼時,我們希望編碼後的數據能夠較好的保留原始數據的主要特徵。那麼,如何衡量碼後的數據是否保留了較完整的信息呢?答案是:如果編碼後的數據能夠較為容易地通過解碼恢復成原始數據,我們則認為W較好的保留了數據信息。

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

深度學習之自編碼器AutoEncoder

AutoEncoder自身也是一個神經網絡,它的整個計算過程可以看作是對輸入數據的壓縮編碼,將高維的原始數據用低維的向量表示,使壓縮後的低維向量能保留輸入數據的典型特徵,從而能夠較為方便的恢復原始數據。

深度學習之自編碼器AutoEncoder

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

深度學習之自編碼器AutoEncoder


分享到:


相關文章: