編碼器結構介紹
編碼器延續(xù)了傳統(tǒng)自動編碼器的結構,并利用這一結構來學習數據生成分布,這讓我們可以從潛在空間中隨機抽取樣本。然后,可以使用*網絡對這些隨機樣本進行解碼,以生成*的圖像,這些圖像與網絡所訓練的圖像具有相似的特征。
收縮編碼器與前兩個自動編碼器的運行過程基本相同,但是在收縮自動編碼器中,我們不改變結構,只是在丟失函數中添加一個正則化器。這可以被看作是嶺回歸的一種神經形式。
與其字義相反的是,稀疏自動編碼器具有比輸入或輸出維度更大的潛在維度。然而,每次網絡運行時,只有很小一部分神經元會觸發(fā),這意味著網絡本質上是“稀疏”的。稀疏自動編碼器也是通過一種規(guī)則化的形式來減少網絡過度擬合的傾向,這一點與去噪自動編碼器相似。
有幾種其它類型的自動編碼器。其中常用的是去噪自動編碼器,本教程稍后會和Keras一起進行分析。這些自動編碼器在訓練前給數據添加一些白噪聲,但在訓練時會將誤差與原始圖像進行比較。這就使得網絡不會過度擬合圖像中出現的任意噪聲。稍后,將使用它來清除文檔掃描圖像中的折痕和暗黑區(qū)域。
編碼器函數用?表示,該函數將原始數據X映射到潛在空間F中(潛在空間F位于瓶頸處)。*函數用ψ表示,該函數將瓶頸處的潛在空間F映射到輸出函數。此處的輸出函數與輸入函數相同。因此,我們基本上是在一些概括的非線性壓縮之后重建原始圖像。
自動編碼器與主成分分析(PCA)密切相關。事實上,如果自動編碼器使用的激活函數在每一層中都是線性的,那么瓶頸處存在的潛在變量(網絡中小的層,即代碼)將直接對應(PCA/主成分分析)的主要組件。通常,自動編碼器中使用的激活函數是非線性的,典型的激活函數是ReLU(整流線性函數)和sigmoid/S函數。