この記事の作成にあたって
情報系学部学生のsunです。この記事はVAEを抽象的に捉えることを目標としております。
コードや数字に頼らず、言葉のみでまとめてみようと思います。
間違いがあれば指摘していってください!
VAE
1.中身
VAEの中身はこのようになってます。
前記事(VAEとEMアルゴリズムの違いについて)より画像を持ってきましたが、数式には触れません。
文字と動きを見返すためにはってます。
これらの役割について具体例を出してみましょう。
2.具体例
皆さんは、美味しい物を食べた時、もしくは飲んだ時、この料理のレシピが知りたいなぁと考えたことはありますか?
それが美味しければ美味しいほど「再現」をしたくなりますよね!
何の話かわからない人もいるかもしれませんが、この再現こそVAEの目的と言っても過言ではないんです。
実際にカレーを例にあらわしてみたいと思います。
エンコーダー
カレーを食べて、レシピを推測することがエンコーダーの役割です。
料理全般言えることですが、レシピはかなり複雑なので、食べた味をこの動きだけで再現することはエンコーダーだけでは難しいです。
そこでデコーダーを使います。
デコーダー
エンコーダで推測したレシピを実際に作ってみること(再構成すること)がデコーダーの役割です。
平均・分散
もちろん、具材の種類やそれを入れる量などを考えるとレシピ自体のバリエーションはかなりあるとおもいます。
その中でも標準的なレシピを平均
そのレシピがどれだけばらつくかを分散とします。
カレーだと辛さや、甘さや、具材で別れたりしますよね。
これらのレシピのバリエーションがあればあるほどばらつきは大きくなっていき、元のカレーを再現することが難しくなってます。
損失関数について
VAEは二つの誤差を足し合わせた形を損失関数として扱います。
つまり、誤差が少なくなればなるほど元のカレーの味に近づくことがわかりますね。
KLダイバージェンスについて
この平均が0分散が1に従うようにする役割があります。
極端なばらつきをなくすという役割があります。
要するに変なレシピになることを防止する役割を待ってます。
再構成誤差について
デコーダーの役割で再構成をしたカレーと、元々食べたカレーの味を比較して、誤差を出します。
つまり、これが小さいと再現が上手く行ってることになります。
バックプロパゲーションについて
損失を最小化するようにエンコーダーとデコーダーのパラメータが更新されます。
これによって、潜在変数が正規分布つまり、極端にならないような動きをし、デコーダーが入力データを再構築する能力が向上します。
これらの動きにより、画像生成したり、異常を検知したりできるわけです。
最後に
今回は一般的に理解が難しく、説明も難しいVAEについてできるだけ簡単に説明してみました。
できるだけ噛み砕いて書いたため、必要なものや、逆に不必要なものもあるとは思いますが、皆さんの機械学習のことを知る初めの一歩として伝えられたらなと思います。