1
在原始的自動編碼變分貝葉斯paper中,作者描述了2.4節中的「重新參數化技巧」。訣竅是將你的潛在狀態z分解成可學習的均值和西格瑪(由編碼器學習)並添加高斯噪聲。然後,您從z中採樣數據點(基本上可以生成編碼圖像),並讓解碼器將編碼數據點映射回原始圖像。解釋變分自動編碼器高斯參數化
我有一個很難得到這是多麼奇怪。有人可以解釋一下潛變量模型,具體如下:
- 爲什麼我們假設潛伏態是高斯?
- 高斯可以如何生成圖像?
- 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
謝謝,我認爲當時我寫了這個問題,我錯過了KL最小化的重要性。 – vega