【发布时间】:2017-03-04 00:49:18
【问题描述】:
在原始的 Auto-Encoding Variational Bayes paper 中,作者在第 2.4 节中描述了“重新参数化技巧”。诀窍是将潜在状态 z 分解为可学习的均值和 sigma(由编码器学习)并添加高斯噪声。然后你从 z 中采样一个数据点(基本上你生成一个编码图像)并让解码器将编码数据点映射回原始图像。
我很难理解这是多么奇怪。有人可以解释一下潜变量模型,具体来说:
- 为什么我们假设潜在状态是高斯的?
- 高斯如何生成图像?
- 反向传播如何破坏编码器以学习高斯函数而不是未知非线性函数?
这是 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
【问题讨论】: