深度學習基礎:Autoencoders

Autoencoders(自動編碼機)是一種神經網路模型,它使得其輸出能還原輸入。該模型一般的用處,是拿到中間層的隱單元,得到樣本對應的表達向量。當然,如果是完完全全絕對還原,那很多時候等於模型什麼也沒學到,可能也是過擬合。所以一般會加上一些其他條件,使得模型只能近似還原其輸入,讓模型能真正學到輸入樣本的隱向量表達,防止過擬合。

Autoencoder網路結構圖

Undercomplete Autoencoders

該自動編碼機強加的條件是隱向量h的維度小於輸入樣本的維度。用較少維度的向量去表達訓練樣本,則強迫了模型去學習真正顯著的潛在因子。

如果損失函數L是平方損失同時f和g是線性的,則類似PCA。當然,encoder和decoder函數可以做得更複雜一些,這樣可以增強整個模型的表達能力。但是過猶不及,如果f和g做得太複雜,則隱向量包含的信息就可能變小,因為這個時候本質上信息都包含在f和g上,隱向量要經過一個很複雜的decoder函數才能還原回訓練樣本,這樣對應的,隱向量包含的信息就不用太多了

Regularized Autoencoders

如果隱向量的維度是大於等於其輸入樣本的維度的,則由簡單的線性代數知識可以知道,只要encoder和decoder是線性函數,則可以無損失,完美還原輸入樣本,但也沒有達到我們的目的,即學習訓練樣本的有用的隱向量表達。Regularized Autoencoders這一類模型,通過正則化手段,讓模型去具備我們需要的一些性質的同時,能學到真正有用的隱向量表達

Sparse Autoencoders

本質上就是在損失函數里加上能讓隱向量h稀疏化的正則項,比如L1

Denoising Autoencoders

本質上是說,為了讓模型學到真正有用的表達向量,把雜訊注入進訓練樣本,讓模型還原注入雜訊前的樣本情況。這樣對應模型就有了鑒別雜訊,學到樣本真正信息的能力,不會學到一個簡單的identity函數

對應損失函數為

Contractive Autoencoder

本質上是加入關於隱向量的梯度向量的L2正則,具體公式如下

個人理解是讓隱向量相對穩定,x改變的時候h不會急劇變化,這樣對應隱向量h會較為簡單,能讓隱向量學習真正有用的特徵,防止過擬合

Stacked Autoencoders

逐層訓練autoencoder然後堆疊而成。即圖a中先訓練第一個autoencoder,然後其隱層又是下一個autoencoder的輸入層,這樣可以逐層訓練,得到樣本越來越抽象的表示


推薦閱讀:

機器學習入門之邏輯回歸分類
機器學習技法筆記3:核函數SVM
【谷歌機器學習課程公開了!】Google AI 教育項目今起免費開放,完美支持中文
結合google facets進行機器學習數據可視化
Learning Explanatory Rules from Noisy Data 閱讀筆記1

TAG:深度學習DeepLearning | 機器學習 |