天天看點

【deep learning學習筆記】Autoencoder

繼續學習deep learning,看yusugomori的code,看到裡面DA(Denoising Autoencoders)和SDA(Stacked Denoising Autoencoders)的code,與RBM非常像。心裡有個問題,autoencoder和RBM有什麼差別和聯系?又上網上找了些資料(前面轉載那兩篇),學習了一下。下面記一下筆記。

1. autoencoder是多層神經網絡,其中輸入層和輸出層表示相同的含義,具有相同的節點數,如圖:

【deep learning學習筆記】Autoencoder

autoencode學習的是一個輸入輸出相同的“恒等函數”。

2. 從1中可以看到,autoencoder學習的還是輸入的特征表示。

3. 不過輸入和輸出相同,使得這個網絡的輸出沒有任何意義。autoencoder的意義在于學習的(通常是節點數更少的)中間coder層(最中間的那一層),這一層是輸入向量的良好表示。這個過程起到了“降維”的作用。

4. 當autoencoder隻有一個隐含層的時候,其原理相當于主成分分析(PCA)

5. 當autoencoder有多個隐含層的時候,每兩層之間可以用RBM來pre-training,最後由BP來調整最終權值

6. 網絡權重更新公式很容易用求偏導數的方法推導出來,算法是梯度下降法。

7. denoising autoencoder是autoencoder的一個變種,與autoencoder不同的是,denoising autoencoder在輸入的過程中加入了噪聲資訊,進而讓autoencoder能夠學習這種噪聲。

8. denoising autoencoder與RBM非常像:

(1)參數一樣:隐含層偏置、顯示層偏置、網絡權重

(2)作用一樣:都是輸入的另一種(壓縮)表示

(3)過程類似:都有reconstruct,并且都是reconstruct與input的差别,越小越好

9. denoising autoencoder與RBM的差別:

背後原理就不說了哈(RBM是能量函數),差別在于訓練準則。RBM是隐含層“産生”顯示層的機率(通常用log表示),denoising autoencoder是輸入分布與reconstruct分布的KL距離。所用的訓練方法,前者是CD-k,後者是梯度下降。

10. 再補充一下,RBM固定隻有兩層;autoencoder,可以有多層,并且這些多層網絡可以由标準的bp算法來更新網絡權重和偏置,與标準神經網絡不同的是,autoencoder的輸入層和最終的輸出層是“同一層”,不僅僅是節點數目、輸出相同,而是完完全全的“同一層”,這也會影響到這一層相關的權值更新方式。總之,輸入與輸出是同一層,在此基礎上,再由輸入與輸出的差别構造準則函數,再求各個參數的偏導數,再用bp方式更新各個權重......

dl