Edited at

Variational Autoencoder(VAE)で生成モデル

More than 3 years have passed since last update.

この記事はMachine Learning Advent Calender13日目の記事です。

Variational Autoencoderで生成モデルを試した結果をまとめてみます。


理論はいいからどんなのか教えてよ!


  • テストデータXから潜在変数Zを推論して( Z|X )、ZとラベルYを元にX|Z, Yを再生成するというものです。

  • 任意の潜在変数を入力することで、その潜在変数の表現でラベルYのXが生成できるというのが面白い点だと考えてます。

例えばこんな動画見てみてください。


  • MNIST

    IMAGE ALT TEXT HERE


  • SVHN

    IMAGE ALT TEXT HERE


これは学習されたモデルに対して、任意の潜在変数をランダムに入力することでラベル0-9のデータを生成した実験結果です。

見慣れたMNISTのデータですが、これはデータセットから切り抜いてきたものではなく、VAEが生成してるものです。

ある入力に対して得られた潜在変数を利用することで、その入力と似たラベルデータを生成することが可能です。

例えばこんな画像。

4.jpg

3.jpg

一番左の数字はMNISTから取ってきた画像で入力として使用します。0から9までの画像は入力Xとして使用、そこから得られた潜在変数Zを利用してX|Z, Yを生成した結果です。入力した画像のスタイルを結構真似して(太い線だったり、カーブのさせ方とか)0から9までの画像が得られてることがわかります。

論文を読んだ時僕も最初に勘違いしたのですが、0から9までの画像はMNISTから似たスタイルの画像を持ってきてるのではなく、NNが生成した画像データです。なかなか面白いっすよね。


内部理論


考えられる応用事例


  • 教師あり学習用データセット生成(半教師あり学習)


    • 正当法。



  • 学習データセットを模した新規画像の生成


    • 隠れ層に任意の値を入力することで、ある程度学習した空間を保ったまま新たな画像を生成したり。

    • が、この分野はDeepDreamStylenetのような方法のが面白いのができる気がする。



  • 時系列データへの応用


    • Variational Recurrent Autoencoderによる学習した音楽から新規音楽の生成の事例。(以前試してみたけどあまり面白い結果出なかった。)

    • 音楽以外にも文書生成とかモーションキャプチャデータとか色々使いみちはある。




いいわけ


  • 本当は別の論文読んだり、Tensorflowで試したりをしてみたかったけど時間取れず、こんな感じでお茶を濁しました。(VAEの実験は8月頃やってた。)

  • 時間管理術学びたい。


参考