在原始的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
答案 0 :(得分:2)
他们并没有假设编码器的激活遵循高斯分布,他们强制要求可能的解决方案选择类似于高斯分布的高斯。
图像是通过解码激活/特征生成的,激活的分布类似于高斯。
他们将激活分布和高斯分布之间的KL差异降至最低。