2017-03-04 65 views
1

在原始的自動編碼變分貝葉斯paper中,作者描述了2.4節中的「重新參數化技巧」。訣竅是將你的潛在狀態z分解成可學習的均值和西格瑪(由編碼器學習)並添加高斯噪聲。然後,您從z中採樣數據點(基本上可以生成編碼圖像),並讓解碼器將編碼數據點映射回原始圖像。解釋變分自動編碼器高斯參數化

我有一個很難得到這是多麼奇怪。有人可以解釋一下潛變量模型,具體如下:

  1. 爲什麼我們假設潛伏態是高斯?
  2. 高斯可以如何生成圖像?
  3. Backprop如何破壞編碼器學習高斯函數而不是未知的非線性函數?

下面是TensorFlow中here的潛在模型的示例實現。

...neural net code maps input to hidden layers z_mean and z_log_sigma 

self.z_mean, self.z_log_sigma_sq = \ 
self._recognition_network(network_weights["weights_recog"], 
          network_weights["biases_recog"]) 

# Draw one sample z from Gaussian distribution 
n_z = self.network_architecture["n_z"] 
eps = tf.random_normal((self.batch_size, n_z), 0, 1, 
          dtype=tf.float32) 
# z = mu + sigma*epsilon 
self.z = tf.add(self.z_mean, 
       tf.mul(tf.sqrt(tf.exp(self.z_log_sigma_sq)), eps)) 

...neural net code maps z to output 

回答

1
  1. 他們不是假設編碼器的激活遵循高斯分佈,他們正在執行的可能的解決方案的選擇高斯類似於一個。

  2. 圖像是從解碼激活/特徵產生的,激活分佈類似於高斯。

  3. 它們將激活分佈和高斯分佈之間的KL散度最小化。

+0

謝謝,我認爲當時我寫了這個問題,我錯過了KL最小化的重要性。 – vega