幾種Autoencoder的深入理解和思考


 

最近一直做用autoencoder解決句子編碼的問題,一般來說,見得比較多的就是下面幾種autoencoder

  • sparse autoencoder
  • denoising autoencoder
  • variational autoencoder(VAE)

其實如果理解deep belief network的話,各種autoencoder可以很好的理解,下面總結一下我對這幾種autoencoder以及DBN的理解

1: autoencoder

輸入一列向量或者一個矩陣x,經過單層或者多層full connected network, encode成一個向量z,再由這個向量z還原成輸入的向量x,也是通過全連接層,

然后自定義loss函數,可以用歐式距離或者cross entropy,通過BP訓練;

2:denoising autoencoder 

autoencoder + dropout

3: sparse autoencoder

autoencoder + L0_normalization(sparsity penalty)

4: variational autoencoder

跟autoencoder沒太大關系,引入hidden state,最大化p(x),即實際的x在這套體系出現的概率,采用KL divergence的方法,將目標轉換成最大化兩部分,見下圖

右邊的第一部分為decoder的誤差, 第二部分為z的先驗分布(標准高斯分布)和z的后驗分布之間的kl divergence;

從代碼的角度來講,把x通過全連接或者其他網絡映射成一個均值u和一個方差v,Gaussian(u, v)即是Q(z/x), 然后根據這個分布sample出一個hidden state, 根據這個hidden state來來通過神經網絡映射成x的預測值x_predict, 比較x和x_predict作為第一部分的loss, 當然這個只是右邊第一個式子的估計值,大概是因為用mcmc很麻煩>_<

5:deep belief network

要理解這個首先得理解restricted boltzmann machine, 比較麻煩,下班了,有時間再寫;

 

 

附: monte carlo simulation algorithm

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM