我对重新参数化技巧如何工作感到困惑。在本文中显示它非常简单。你学习了两个向量 和 ,从中采样,然后你的潜在向量将是(其中是元素乘积。):
但是当我查看 VAE 的 TensorFlow 教程代码时,它不仅仅是一个简单的。代码是这样的:
def reparameterize(self, mean, logvar):
eps = tf.random.normal(shape=mean.shape)
return eps * tf.exp(logvar * .5) + mean
这表明了这一点:
这两个不一样,我很困惑,
- 首先为什么它学习方差的对数(正如变量的名称所暗示的那样)而不是仅仅学习方差。
- 二、为什么要乘以0.5?
- 最后,哪一个是正确的重新参数化技巧(如果它们不同)?