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