Chainer

VAE と AE の違いを調べてみた

ちょっと目を離すと、わからなくなる AI の進展

ざっくりと研究の同行を追っていたが、忙しくなるとすぐに追いつけなくなる。「まぁ、いいや」と放置していたところ、ある講義をやることになった。

準備段階で Auto Encoder のサンプルを探していたが、ほとんど見つからず。Variational Auto Encoder は見つけたけど、「Auto Encoder と Variational Auto Encoder って何が変わったんだっけ?」と疑問点をつぶすことになった。

教えて Google 先生!

ちょっと調べてみると、こんなんが出てきた。

https://www.quora.com/Whats-the-difference-between-a-Variational-Autoencoder-VAE-and-an-Autoencoder

Auto Encoder の説明を抜粋する。

autoencoders learn a “compressed representation” of input (could be image,text sequence etc.) automatically by first compressing the input (encoder) and decompressing it back (decoder) to match the original input. The learning is aided by using distance function that quantifies the information loss that occurs from the lossy compression. So learning in an autoencoder is a form of unsupervised learning (or self-supervised as some refer to it) - there is no labeled data.

Google 翻訳にかけると、こんな感じ。

オートエンコーダーは、最初に入力(エンコーダー)を圧縮し、元の入力に一致させるために元に戻す(デコーダー)ことによって、入力の「圧縮表現」(画像、テキストシーケンスなど)を自動的に学習します。学習は、非可逆圧縮から生じる情報損失を定量化する距離関数を使用することによって助けられる。したがって、オートエンコーダーで学習することは、教師なし学習(または、それを参照するように自己監督する)の一形式です。ラベル付きデータはありません。

たぶん、基底関数のようなものを作っていることに該当しそう。

他方で、VAE の説明を抜粋する。

Instead of just learning a function representing the data ( a compressed representation) like autoencders, variational autoencoders learn the parameters of a probability distribution representing the data. Since it learns to model the data, we can sample from the distribution and generate new input data samples. So it is a generative model like, for instance, GANs.

Google 翻訳にかけると、こんな感じ。

オートエンコーダーのようにデータ(圧縮された表現)を表す関数を学習するだけでなく、VAEはデータを表す確率分布のパラメーターを学習します。データをモデル化することを学ぶので、分布からサンプリングして新しい入力データサンプルを生成することができます。つまり、GANのような生成モデルです。

AE の処理にくわえて、確率分布ありき、かつ、データの分布を確率分布にフィッティングさせている、と理解。

以下、Chainer の VAE のサンプルコードを解析してみた。

クラス図にしてみた

Chainer のサンプルコードをクラス図(とロバストネス図のちゃんぽん)にしてみた。

train_vae.py.png

VAE.get_loss_func と学習・評価まわりの処理が本質的なところに見える。

  • AE は encoder から decoder で再構築する際の損失(reconstruction loss)のみで評価する
  • VAE は reconstruction loss だけでなく、KL Divergence による損失も加味する。そこではベルヌーイ分布の尤度を想定する(参考資料を見た気がするが、ロストしてしまった)。

確率分布の選択がどれだけ妥当なのか、それは扱うデータによると思う。その選択肢にどのようなものがあるか、使い分けるポイントは何か、というところが残課題として残った。

しかしながら、とりあえず目的である VAE と AE の差分はわかったので、メモとして残し、心のイシュー管理上では本件をクローズしておく。