📝
合成データアルゴリズム VAE

はじめに
Deep Learningベースの生成モデルにおいて代表的なアルゴリズムといえば、Generative Adversarial Networks(GAN) [1] 、Variational Auto-Encoder(VAE)[2]、Flow[3] などがありますがその中で VAE について解説します。
VAE論文[2]ではSGVB(Stochastic Gradient Variational Bayes)という推定量を導入して、それを用いた認識モデルの最適化手法としてAEVB(Auto-Encoding Variational Bayes)を提案しています。その応用としてVAE(Variational Auto-Encoder)を例示しています。そのためまずはSGVB推定量の解説をします。 オートエンコーダーとの関係についても適宜補足します。
潜在変数モデル
SGVB推定量を定義するにあたって潜在変数モデルの説明からはじめます。この記事で潜在変数モデルとは、観測可能変数を表す確率変数と潜在変数を表す確率変数およびそれらの同時確率分布からなる確率モデルのこととします。またパラメータを持つ場合はと書くことにします。
潜在変数モデルでは観測データに最も適合するパラメータを求めることや、事後分布を近似する確率分布を求めるのが応用上重要な関心事になります。
オートエンコーダとの関係1
オートエンコーダの観点からは観測可能変数を入出力データだと見なします。例えば画像のオートエンコーダを考えたい場合はは画像データになります。そして潜在変数は入出力データを変換して得られるコードだと見なします。
上記のように見ると事後分布を近似するは確率的なエンコーダのモデルと見なせます。なぜなら入力データが与えられるとコードの確率分布が得られるためです。同様にコードから出力データの確率分布が得られるため、は確率的なデコーダのモデルだと見なせます。
通常のオートエンコーダと違う点はエンコーダ・デコーダの出力が決まったひとつの値ではなく確率分布になることのみです。VAEの実装でエンコーダ・デコーダの出力をなぜ確率的にするのかと疑問に思ったことがある方もいるかもしませんが、裏側には以下で説明するような理論的背景があります。
SGVBは以下のような状況を想定しています。
- 周辺分布 の計算が困難である。したがって事後分布 などの計算も困難である。
- データ量が多くてバッチ最適化のコストがかかりすぎる。
上記のような状況ではEMアルゴリズムや平均場近似の変分ベイズ法などの、古典的な確率モデルのパラメータ最適化手法は使えません。SGVB推定量はこのような場合にも効率よく事後分布の推定をおこなうための道具だと言えます。
SGVB推定量とAEVBアルゴリズム
観測データが得られたとします。我々の目的は観測データと最も適合するパラメータを求めることです。モデルの適合度を測る指標として尤度という量があります。尤度は
によって定義される量です。またこれの対数を取った対数尤度
もよく利用されます。 しかし周辺分布の計算が困難な場合には尤度を直接計算することはできません。そこで潜在変数モデルでよく用いられるEvidence Lower Boundという量を導入します。
Evidence Lower Bound
確率変数の同時分布ををする。また をその周辺分布とする。このとき任意の確率分布について
が成立する。ただしはカルバック・ライブラー情報量である。は以上なので
が成立する。上式の右辺をELBO(Evidence Lower Bound)という。
ELBOは対数尤度の下限なのでELBOが大きいほどモデルによく適合していると見なされます。したがって以下では直接尤度の評価をする代わりに ELBO を最大化することを考えます。ここでを確率分布 ののときのELBOとして定義します。つまり
となります。また観測データに対して
と定めます。(3)式を少し変形すると
よって
とも書くことができます。
オートエンコーダとの関係2
オートエンコーダの観点からは(5)式の右辺第一項は入力に対する再構成誤差、第二項は正則化項と解釈することができます。
の最大化が目的なので第一項についてはをに近づけることが目的になります。また積分範囲を見るとの確率分布はです。ここで「オートエンコーダとの関係1」を思い出すと、は確率的エンコーダでは確率的デコーダと捉えられるのでした。すると「をに近づける」=「をエンコードしたをデコードすると再びになる確率をに近づける」ということになるので第一項を再構成誤差と解釈できることがわかります。
第二項についてはが非負値を取るのでの最大化のためにははに近づくのが望ましいです。そのため事前分布と事後分布の差はカルバック・ライブラー距離にしたがって近づくようになります。この意味で正則化項として機能することが期待できます。
一旦(3)式に戻りましょう。ここにはによる積分が出てきているので確率分布がになるようなサンプリングをとして
とすればこれはELBOの推定量になります。また(5)式を用いると
となりこれもELBOの推定量になります。これらの(6)式および(7)式をSGVB推定量といいます。またバッチサイズのミニバッチに対して
とするとの推定量になりこれもSGVB推定量と呼びます。ただしはかとします。バッチサイズが十分大きい場合はデータポイント毎の潜在変数のサンプリング数はとすることが多いです。ここで定義したSGVB推定量を用いた以下のような学習プロセスをAEVBアルゴリズムと呼びます。
AEVBアルゴリズム
- を初期化する.
- が収束するまで以下を繰り返す.
- ミニバッチをデータからサンプリングする.
- に基づいてを改善する.
- を出力する.
Variational Auto-Encoder
いよいよ上で導入したSGVB推定量およびAEVBアルゴリズムを用いてVAEを構成します。
潜在変数の事前分布はとします。ただしは潜在変数の次元と同じ次元の標準正規分布です。事後分布を近似する確率モデルは
とします。ただしこれらは一例であって必ずしも正規分布を使う必要はないです。またはパラメータ付きの関数であっては潜在変数の平均を表す次元ベクトル、は標準偏差を表すの対角行列です。これらはニューラルネットワークでの実装を想定しています。正規分布の標準化からのサンプリングは
とすればよいです。
Reparametrization Trick
VAE論文[2]ではのサンプリングを微分可能な関数とパラメータを持たない乱数によってと表現することをreparametrization trickと呼んでいます。
本来サンプリングのようなランダムな操作は微分不可能などころか数学的な関数ですらないですが、ランダム性をパラメータを持たない部分に押し付けることで学習が可能な仕組みを実現しています。
SGVB推定量をとして計算すると
となります。再構成誤差の部分は、入出力データがバイナリのときは負のバイナリクロスエントロピー
連続値のときは
によって表現します。もちろんこれらにも他の確率モデルを用いてもよいです。エンコーダと同様にはニューラルネットワークでの実装を想定しています。
画像データの再構成誤差
画像サイズをとして再構成データはに値をとります。これをベルヌーイ分布として確率分布だと思うことができます。つまりに値をとる確率分布であって番目の要素がになる確率がであるような確率分布と見なします。仮にがバイナリ(すなわちではなくに値を取る)だとするととなります。これをがに値をとるようなバイナリでない場合にも拡張することで、画像データの再構成誤差にバイナリクロスエントロピーを利用することがあります。
モデルのアーキテクチャを図示すると以下のようになります。割とシンプルな構成ですね。このニューラルネットワークに対して負のSGVB推定量を損失関数として学習させればVAEが実現できます。VAEを試してみたい方は[7]のような実装例があります。

結果
ここではVAE論文[2]で紹介されていた他手法との比較結果について解説していきます。
Evidence Lower Bound
VAE論文[2]では以下の手法と比較しています。
- wake-sleepアルゴリズム[4]
縦軸がELBO(Evidence Lower Bound)で先述の通りこの値が大きいほどモデルはよくフィットしていると見なされます。AEVBの方がより高いELBOを達成していることがわかります。
![VAE論文[2]のFig2より引用。Evidence Lower Boundの比較。Nzは潜在変数の次元である。](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/acompany-engineer/e5cdf67b-57d6-4d0a-984e-d39e719ea97f/2be12c9e510b644f169311e3998b6e80.png)
周辺尤度
VAE論文[2]では以下の手法と比較しています。
- wake-sleepアルゴリズム[4]
- MCEM[5]
縦軸は周辺尤度です。トレーニングセットが小さい()と大きい()の場合で三つの手法を比較しています。ここでもAEVBがより早く高い値を達成しています。
![VAE論文[2]のFig3より引用。周辺尤度の比較。](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/acompany-engineer/a8dd1212-bb64-46fb-ba8d-e3fb08ff9a3a/bd6214fb11ba0e8320ab05121b9f9bb3.png)
可視化
可視化はFrey FaceとMNISTデータセットで学習させたモデルに対しておこなっています。次は2次元の潜在変数を持つ生成モデルの可視化です。潜在変数について連続的に画像が変化している様子が見てとれます。
![VAE論文[2]のFig 4より引用。AEVBで学習した2次元の潜在変数を持つ生成モデルの可視化。](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/acompany-engineer/48b67fdd-f5b0-4348-9ef8-7efe495a2a3b/3e7db240d4c9c59ee34498cfe4c1f54c.png)
次は様々な次元の潜在変数空間をもつ生成モデルに対して、ランダムに潜在変数をサンプリングして画像を生成した結果を100個づつ可視化しています。たまに数字に見えない画像もありますが概ね手書き文字のような画像を生成できていることがわかると思います。
![VAE論文[2]のFig5より引用。異なる次元の潜在変数を持つ生成モデルの可視化。](https://s3.ap-northeast-1.amazonaws.com/wraptas-prod/acompany-engineer/408da39d-6485-44b5-a183-e2fd11a9ff06/9a5e986d984988e5419efb9defc7c44e.png)
まとめ
本記事ではVAEとその理論的背景について紹介しました。以下に要点をまとめます。
- SGVB推定量は事後分布や周辺分布の計算が困難でありデータサイズが大きい場合にもEvidence Lower Boundの効率的な推定が可能である。
- SGVB推定量は確率勾配法を用いて最適化することができる。 SGVB推定量を用いた最適化アルゴリズムをAEVBアルゴリズムという。
- VAEとはAEVBアルゴリズムをAuto-Encoderに応用したもので、生成モデルとして利用することができる。
参考文献
[1] GAN論文 : Goodfellow, Ian, et al. "Generative adversarial networks." Communications of the ACM 63.11 (2020): 139-144.
[2] VAE論文 : Kingma, Diederik P., and Max Welling. "Auto-encoding variational bayes." arXiv preprint arXiv:1312.6114 (2013).
[3] Flow論文 : Dinh, Laurent, David Krueger, and Yoshua Bengio. "Nice: Non-linear independent components estimation." arXiv preprint arXiv:1410.8516 (2014).
[4] Hinton, Geoffrey E., et al. "The" wake-sleep" algorithm for unsupervised neural networks." Science 268.5214 (1995): 1158-1161.
[5] Duane, Simon, et al. "Hybrid monte carlo." Physics letters B 195.2 (1987): 216-222.
[6] VAE解説 : https://academ-aid.com/ml/vae