解释变分自动编码器高斯参数化

时间:2017-03-04 00:49:19

标签: tensorflow autoencoder

在原始的Auto-Encoding Variational Bayes paper中,作者描述了"重新参数化技巧"在第2.4节中。诀窍是将潜在状态z分解为可学习的均值和sigma(由编码器学习)并添加高斯噪声。然后从z中采样数据点(基本上生成编码图像)并让解码器将编码的数据点映射回原始图像。

我很难知道这有多奇怪。有人可以对潜在变量模型进行更多解释,特别是:

  1. 为什么我们假设潜在状态是高斯?
  2. 高斯如何生成图像?
  3. backprop如何破坏编码器以学习高斯函数而不是未知的非线性函数?
  4. 以下是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 个答案:

答案 0 :(得分:2)

  1. 他们并没有假设编码器的激活遵循高斯分布,他们强制要求可能的解决方案选择类似于高斯分布的高斯。

  2. 图像是通过解码激活/特征生成的,激活的分布类似于高斯。

  3. 他们将激活分布和高斯分布之间的KL差异降至最低。