-1

我想我理解自動編碼變分貝葉斯的論文。我正在閱讀一些實現本文的tensorflow代碼。但我不明白他們在這些守則中的損失功能。由於許多代碼都是用相同的方式編寫的,可能我錯了。爲什麼許多實現中的變分自動編碼器的損失與紙張有相反的跡象?

的問題是這樣的。以下等式來自AEVB paperenter image description here 損失函數就像這個等式。這個方程可以分爲兩個:正則化項和重構項。因此,變得

Loss_function = Regularization_term + Reconstruction_term 

然而,許多碼中的負符號實現這個正則化項,像

Loss_function = -Regularization_term + Reconstruction_term 

例如,在this code,第79行顯示了正則術語

KLD = -.5 * tf.reduce_sum(1. + enc_logsd - tf.pow(enc_mu, 2) - tf.exp(enc_logsd), reduction_indices=1) 

然後,它只是增加重構術語。

loss = tf.reduce_mean(KLD + BCE) 

我不明白。 KLD的符號與本文中的等式相反。有很多這樣的代碼。我認爲我錯了,但我不知道什麼是錯的。你能解釋爲什麼它應該是這樣嗎?

參考代碼:code1code2code3

回答

1

公式(10)是我們要最大限度的數似然的損失。這相當於使負對數似然(NLL)最小化。這是優化功能在實踐中的功能。請注意,Reconstruction_term已在tf.nn.sigmoid_cross_entropy_with_logits中被否定(請參閱https://github.com/tegg89/VAE-Tensorflow/blob/master/model.py#L96)。我們也需要否定Regularization_term。因此代碼執行Loss_function = -Regularization_term + -Reconstruction_term

相關問題