单位为高斯的KL损失


10

我一直在执行VAE,并且在网上注意到简化的单变量高斯KL散度的两种不同实现。原始发散按照这里 如果我们假设我们事先是单位高斯即μ2=0σ2=1,这简化向下 ķ大号ö小号小号=-日志σ1+σ 2 1 +μ 2 1

KLloss=log(σ2σ1)+σ12+(μ1μ2)22σ2212
μ2=0σ2=1 这就是我的困惑所在。尽管我发现上述实现有一些晦涩的github仓库,但我更常用的是:
KLloss=log(σ1)+σ12+μ12212
KLloss=12(2log(σ1)σ12μ12+1)

=12(log(σ1)σ1μ12+1)
例如在官方Keras自动编码器教程中。我的问题是,这两者之间我想念什么?主要区别是在对数项上降低因子2,而不是对方差求平方。从分析上讲,我成功地使用了后者,以获取其价值。在此先感谢您的帮助!

Answers:


7

请注意,通过替换与在最后一个方程,你恢复以前的(即)。让我认为,在第一种情况下,编码器用于预测方差,而在第二种情况下,编码器用于预测标准差。σ 2 1日志σ 1- σ 12 日志σ 1- σ 2 1σ1σ12log(σ1)σ12log(σ1)σ12

两种表述都是等效的,目标不变。


μσσμσ

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.