自編碼器及其相關模型

軒窗塵清發表於2019-06-18

  自編碼器是一種無監督的神經網路模型,其核心的作用是能夠學習到輸入資料的深層表示。

  當前自編碼器的主要應用有兩個方面:一是特徵提取;另一個是非線性降維,用於高維資料的視覺化,與流行學習關係密切。

 

自編碼器(AutoEncoder,AE):最原始的AE網路是一個三層的前饋神經網路結構,由輸入層、隱藏層和輸出層構成。

           

  對於二值神經網路,也就是輸入層的每個神經元只能取值0或1,那麼損失函式通常由交叉熵來定義;

  對於輸入神經元是一個任意實數,則永昌採用均方誤差來定義損失函式。

  

  自編碼器的核心設計是隱藏層,隱藏層的設計有兩種方式:

  1. 當隱藏層神經元個數小於輸入層神經元個數時,稱為undercomplete。該隱藏層設計使得輸入層到隱藏層的變化本質上是一種降維的操作,網路試圖以更小的維度去描述原始資料而儘量不損失資料資訊,從而得到輸入層的壓縮表示。當隱藏層的啟用函式採用線性函式時,自編碼器也稱為線性自編碼器,其效果等價於主成分分析。

  2. 當隱藏層神經元個數大於輸入層神經元個數時,稱為overcomplete。該隱藏層設計一般用於稀疏編碼器,可以獲得稀疏的特徵表示,也就是隱藏層中有大量的神經元取值為0。

 

自編碼器的相關模型:

1. 降噪自編碼器(Denoising Autoencoders,DAE):其目的是增強自編碼器的魯棒性。自編碼器的目標是期望重構後的結果輸出與輸入資料相同,也就是能夠學習到輸入層的正確資料分佈。但當輸入層資料受到噪音的影響時,可能會使得獲得的輸入資料本身就不服從原始的分佈。在這種情況下,利用自編碼器得到的結果也將是不正確的,為了解決這種由於噪音產生的資料偏差問題,提出DAE網路結構。

 

 2. 棧式自編碼器(Stacked Autoencoders,SAE):也稱為堆疊自編碼器、堆疊自編碼器等。就是將多個自編碼器進行疊加。利用上一層的隱藏層便是作為下一層的輸入,得到更抽象的表示。

 

 SAE的一個很重要的應用是通過逐層預訓練來初始化網路權重引數,從而提升深層網路的收斂速度和減緩梯度消失的影響。

SAE通過下面兩個階段作用於整個網路。

階段1:逐層預訓練:是指用過自編碼器來訓練每一層的引數,作為神經網路的初始化引數。利用逐層預訓練的方法,首先構建多個自編碼器,每一個自編碼器對應於一個隱藏層。從左到右逐層訓練每一個自編碼器,用訓練後的最優引數作為神經網路的初始化引數。如果考慮到模型的魯棒性,防止資料受噪音的影響,可以將AE變位DAE,這樣由多個DAE疊加的棧式自編碼器,也稱為棧式降噪自編碼器。

階段2:微調:經過第一步的逐層預訓練後,得到了網路權重引數更加合理的初始化估算,就可以像訓練普通的深層網路一樣,通過輸出層的損失函式,利用梯度下降等方法來迭代求解最優引數。

 

3. 稀疏編碼器:由於稀疏編碼器能夠學習到輸入的資料的稀疏特徵表示,因此當前被廣泛應用於無監督的特徵提取學習中。特點:隱藏層向量是稀疏的,儘可能多的零元素。

 

相關文章