この変分オートエンコーダー チュートリアルに従っています: https://keras.io/examples/generative/vae/。
VAE の損失関数は、元の画像と再構成を比較する再構成損失と、KL 損失で構成されていることを知っています。ただし、再構成の損失と、それが画像全体 (差の二乗和) であるか、ピクセルごと (差の二乗和の平均) であるかについて少し混乱しています。私の理解では、再構成損失はピクセルごと (MSE) である必要がありますが、私が従うコード例では、MSE28 x 28
に MNIST 画像の寸法を掛けています。あれは正しいですか?さらに、これにより再構築損失項が KL 損失よりも大幅に大きくなるというのが私の仮定であり、それが望ましいかどうかはわかりません。
(28x28) による乗算を削除しようとしましたが、再構成が非常に貧弱になりました。基本的に、入力に関係なく、すべての再構成は同じように見えました。ラムダ パラメーターを使用して、kl 発散と再構築の間のトレードオフを捉えることはできますか、それとも、(正則化ペナルティを追加するのではなく) 損失が正確に導出されるため、それは正しくありません。
reconstruction_loss = tf.reduce_mean(
keras.losses.binary_crossentropy(data, reconstruction)
)
reconstruction_loss *= 28 * 28
kl_loss = 1 + z_log_var - tf.square(z_mean) - tf.exp(z_log_var)
kl_loss = tf.reduce_mean(kl_loss)
kl_loss *= -0.5
total_loss = reconstruction_loss + kl_loss