单位为高斯的KL损失


10

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

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

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

Answers:


7

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