VAEの損失関数の符号について
損失関数は最小化するものと一般には理解されていますが,VAEの損失関数は最大化するものとして扱われる場合が多いみたいです.これで混乱してしまう方がよくいます.
VAEの損失関数は対数尤度関数を変形したもので,
VAEの損失関数 = ReconstractionError - KLダイバージェンス
と定義される場合が多いです.対数尤度関数ですので最大化することが目的になります.
ただ,計算上VAEの損失関数を最小化するものと定義することも可能みたいです.
ロジスティック回帰では対数尤度関数 ln p(x)にマイナスをかけたものを損失関数としていました.
loss = - ln p(x)
この場合対数尤度関数を最大化,つまり損失関数を最小化していくのが正しくなります.
VAEではロジスティック回帰と同じようなことをしない場合が多く
対数尤度関数の符号を逆転させません.
よって
VAEの損失関数 = ReconstractionError - KLダイバージェンス
と定義される場合が多いと考えられます.
もし損失関数は最小化しないと気持ち悪い!という場合は単純に
VAEの損失関数 = -ReconstractionError + D_KL
と定義して損失関数を最小化するようにすればいいです.
参考文献
https://qiita.com/kenchin110100/items/7ceb5b8e8b21c551d69a
https://qiita.com/iss-f/items/c43b23815fc6d15ae22e
http://tkengo.github.io/blog/2016/06/04/yaruo-machine-learning5/