我想我理解自動編碼變分貝葉斯的論文。我正在閱讀一些實現本文的tensorflow代碼。但我不明白他們在這些守則中的損失功能。由於許多代碼都是用相同的方式編寫的,可能我錯了。爲什麼許多實現中的變分自動編碼器的損失與紙張有相反的跡象?
的問題是這樣的。以下等式來自AEVB paper。 損失函數就像這個等式。這個方程可以分爲兩個:正則化項和重構項。因此,變得
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的符號與本文中的等式相反。有很多這樣的代碼。我認爲我錯了,但我不知道什麼是錯的。你能解釋爲什麼它應該是這樣嗎?