Kerugian KL dengan unit Gaussian

10

Saya telah mengimplementasikan VAE dan saya perhatikan dua implementasi online berbeda dari divergensi KL gaussian univariat yang disederhanakan. Perbedaan asli sebagai per sini adalah Jika kita menganggap kami sebelumnya adalah unit gaussian yaituμ2=0danσ2=1, menyederhanakan ini ke KLloss=-log(σ1)+σ 2 1 +μ 2 1

KLloss=log(σ2σ1)+σ12+(μ1μ2)22σ2212
μ2=0σ2=1 KLloss=-1
KLloss=log(σ1)+σ12+μ12212
Dan di sinilah letak kebingungan saya. Walaupun saya telah menemukan beberapa repositori github yang tidak jelas dengan implementasi di atas, yang lebih umum saya temukan adalah:
KLloss=12(2log(σ1)σ12μ12+1)

Misalnya dalamtutorial Keras autoencoderresmi. Pertanyaan saya kemudian, apa yang saya lewatkan di antara keduanya? Perbedaan utama adalah menjatuhkan faktor 2 pada istilah log dan tidak mengkuadratkan varians. Secara analitis saya telah menggunakan yang terakhir dengan sukses, untuk apa nilainya. Terima kasih sebelumnya atas bantuannya!

=12(log(σ1)σ1μ12+1)
groovyDragon
sumber

Jawaban:

7

σ1σ12log(σ1)σ12log(σ1)σ12

Kedua formulasi itu setara dan tujuannya tidak berubah.

F. Evlangeli
sumber
μσσμσ