Variational Autoencoders
について学んだ。学びきれていませんが:
https://towardsdatascience.com/understanding-variational-autoencoders-vaes-f70510919f73
アイディアとしては、ただ素直に
- 観測値
- 次元削減したベクトル
- 復元値
となるようなエンコーダ・デコーダを推定するのではなく、ベイズ推定のモデル
を表現するようなエンコーダ・デコーダを推定する、というところ。
これに加えて、事前確率として「次元削減したベクトル値が本来従うべき確率分布」を与えることで、次元削減された空間がコンパクトかつ連続的な空間になる(記事中では「無意味な出力が生成されえない」と表現されている)ように拘束してやることができる。
デコーダの再現精度(復元値分布の分散)をハイパーパラメータとしていじってやることで、再現の正確性と次元削減空間の連続性のトレードオフを調整してやることができる(というかこの部分が一番大変そう)。
この人の記事は、表現が難しいけれどコンセプトをきちんと教えてくれていてよい気がする。
8月22日追記
TensorFlowを用いたVAEの実装チュートリアルは、以下のものが比較的わかりやすそう:
こちらはPyTorchを用いたバージョン: