2
单位为高斯的KL损失
我一直在执行VAE,并且在网上注意到简化的单变量高斯KL散度的两种不同实现。原始发散按照这里是 如果我们假设我们事先是单位高斯即μ2=0和σ2=1,这简化向下 ķ大号升ö小号小号=-日志(σ1)+σ 2 1 +μ 2 1ķ大号升Ø 小号小号= 日志(σ2σ1个)+ σ21个+ (μ1个- μ2)22个σ22− 12KLloss=log(σ2σ1)+σ12+(μ1−μ2)22σ22−12 KL_{loss}=\log(\frac{\sigma_2}{\sigma_1})+\frac{\sigma_1^2+(\mu_1-\mu_2)^2}{2\sigma^2_2}-\frac{1}{2} μ2= 0μ2=0\mu_2=0σ2= 1σ2=1\sigma_2=1 这就是我的困惑所在。尽管我发现上述实现有一些晦涩的github仓库,但我更常用的是:ķ大号升Ø 小号小号= - 日志(σ1个)+ σ21个+ μ21个2− 12KLloss=−log(σ1)+σ12+μ122−12 KL_{loss}=-\log(\sigma_1)+\frac{\sigma_1^2+\mu_1^2}{2}-\frac{1}{2} ķ大号升Ø 小号小号= - 12(2 日志(σ1个)- σ21个- μ21个+ 1 )KLloss=−12(2log(σ1)−σ12−μ12+1) KL_{loss}=-\frac{1}{2}(2\log(\sigma_1)-\sigma_1^2-\mu_1^2+1) = - 12(日志(σ1个)- σ1个- μ21个+ 1 )=−12(log(σ1)−σ1−μ12+1) =-\frac{1}{2}(\log(\sigma_1)-\sigma_1-\mu^2_1+1) 例如在官方Keras自动编码器教程中。我的问题是,这两者之间我想念什么?主要区别是在对数项上降低因子2,而不是对方差求平方。从分析上讲,我成功地使用了后者,以获取其价值。在此先感谢您的帮助!