1. Question
VAE(Variational Autoencoder)とAE(Autoencoder)の違いは? というQuestionに対して,管理人なりに答えを書く.
元の「AutoEncoderに対して,VAEはどういった違いがあるのか」というVAEの提案時に生まれた差分の話を,短くAnswerとしてまとめた記事となっている.
1.1 関連書籍
- 生成 Deep Learning ― 絵を描き、物語や音楽を作り、ゲームをプレイする David Foster , オライリージャパン, 2020
- 3.2 オートエンコーダ (p72)
- 3.4 変分オートエンコーダの作成 (p86)
- 3.5 VAEを使った顔生成 (p95)
- 深層学習 改訂第2版 (機械学習プロフェッショナルシリーズ) 岡谷貴之,講談社,2022.
- 12.2 節 自己符号化器
- 12.3 変分自己符号化器(VAE) (p296)
- Advanced Deep Learning with TensorFlow 2 and Keras: Apply DL, GANs, VAEs, deep RL, unsupervised learning, object detection and segmentation, and more, 2nd Edition
- 8章「VAE (VAE,CVAE,β-VAE の詳しい解説と,Keras実装)」
- 物体検出とGAN、オートエンコーダー、画像処理入門 PyTorch/TensorFlow2による発展的・実装ディープラーニング チーム・カルポ、秀和システム,2021.
- Probablistic Machine Learning : An Introduction Kevin Patrick Murphy , MIT press, 2022.
- 20.3 Autoencoders
- 20.3.1 Bottleneck autoencoders
- 20.3.2 Denoising autoencoders
- 20.3.3 Contractive autoencoders
- 20.3 Autoencoders
2. Answer
「VAEのAEに対する基本的な違い」は,主に以下の2点がある:
- (2.1節) ネットワーク中間部の「潜在表現(ボトルネック層)」が,低次元空間上の確率変数化されている.特にガウス分布(やその発展として混合ガウス分布)などを,確率分布として用いることが多い.
- (2.2節) 学習時に,潜在確率変数のパラメータも推論する「潜在確率変数(グラフィカル)モデル」構造のモデルとなっている.よって,その潜在変数もどうじに学習できるように,変分ベイズ法を用いる
以下の各サブ節で,上記2点の違いについて,もう少しかみ砕いてそれぞれ見ておきたい.ただし,2.1節でも述べるが,「もつれほどき(disentanglement)昨日のある無し」は,少し発展的なも技術なので,割愛する
※ β-VAEの記事を書いて以降は,ここに3つ目の違いとして追加するかもしれない.
2.1 [違い1]: VAEでは,潜在表現が,ガウス分布などで確率変数化されている.
図1のように,オートエンコーダの中間層(ボトルネック層)は,全結合層+活性化層の出力結果の「低次元ベクトル」や,畳み込み層+活性化層を通った出力結果の「3階のテンソル(H × W × C)」など「実数表現」であった.
入力画像と同じように,出力画像が再構成できるように,(各種の)自乗誤差的なロス$\mathcal{L}_{\text{recon}} $を用いて,オートエンコーダ(Encoder-Decoder構造)のパラメータは学習される.
この基本形式は,オートエンコーダの発展型であるDenoising Autoencoder やSparse Autoencoderなどでも,基本的に同じである.
これに対して,変分オートエンコーダ(図2)では,潜在変数$\bm{z}$が,ガウス分布として確率分布化されいる.潜在変数(ベクトルやテンソル)が,実数ではなく「確率分布」に変わっていることがVAEのAEに対する違いである.
別の言い方をすると,学習データの分布が「低次元空間の確率分布として勝手に学習される」ので,デコーダ部分の生成モデルを,(人間が)解釈しやすくなったとも言える.
※ ボトルネックの低次元確率分布化により,もつれほどき(Disentanglement)の効果も得られ、β-VAEの登場にも繋がる.ただ,この記事でおさえたい標準事項2つの違いよりは,発展的な話であるゆえ省略.
ここで,VAEのエンコーダ・デコーダ構造を,3つの部品に分解した解釈を簡単にだけ復習しておく:
- エンコーダ(図2 緑):
- 潜在変数値の,入力からの条件付き推論を担当.
- 潜在変数表現(図2 赤):
- 低次元の「多次元ガウス分布」からサンプリングされたベクトル (※).
- デコーダ(図2 青):
- 潜在変数からの生成モデル(もとい再構成)を担当.
※ Reparametrization Trickの都合で,決定的変数であり,確率分布で表現されているがランダム変数ではない事に注意
2.2 [違い2]: VAEは,潜在変数付(確率)グラフィカルモデルなので,変分ベイズを用いて,潜在変数自体も同時に学習する.
VAEは,表向きはディープニューラルネットワーク構造(図2)として学習・テストを行うが,それと同時に内部が「潜在変数付き確率グラフィカルモデル」としてもモデリングされている(図3).
潜在変数付き確率グラフィカルモデルの他の例としては,ディープラーニングブーム直前の時期に,自然言語処理界隈で流行っていた LDA(Latent Dirichlet Allocation)や,同じくその当時にコンピュータビジョンで流行っていたDeformable Part Modelsで使用されていたLatent SVM などが挙げられる.また,系列ラベリングで用いられていたConditional Random Fields(に潜在変数の遷移を追加したもの)も,潜在変数付き確率グラフィカルモデルの1種である.
VAEでは,変分ベイズ法として立式されたAutoencoding Variational Bayes(AEBV)を用いた最適化により,(学習前は未知の)潜在変数も,データだけから教師なし学習する.
KLダイバージェンスを用いた類似度ロス項を,正則化項として追加したVAE用の「合成ロス($\mathcal{L}_{\text{recon}}+\mathcal{L}_{\text{KL}}$)」を用いて,変分推論(variational inference)を行いながら(1) エンコーダとデコーダのパラメータと,(2) 潜在ガウス分布のパラメータの,両方を同時学習する.
従来の普通のオートエンコーダでは,中間層(ボトルネック)に「グラフィカルモデルの潜在変数」としての過程などはないので,単にEnd-to-EndでSGD学習するだけであった.以上が2つめの違いである.
そして,VAEのEncoder-Decoderが,End-to-End学習ができるのは,再パラメータ化トリック(Reparametrization Trick)によって,ボトルネック部分も決定論的変数に差し替えて,$\eta$をEncoder-Decoderの外側に出しているおかげであった(図-4 b).これを行わない「中間潜在変数がランダム変数のままの構造(図-4 a)」だと,エンコーダとデコーダの間で,サンプリングによる一旦停止が必要であり,End-to-End化ができない.
テスト時には,この$\eta$だけは,$\eta \mathcal{N}(0,) $とサンプリングする(詳しい立式などは,元論文と参考書籍や,VAEの記事を参照のこと).
3. VAE と AE の違いのまとめ
以上,AEに対するVAEの基本的な違いとして,「(2.1節) 潜在変数が確率分布化されている」 と「(2.2節) 潜在変数も変分ベイズ(for 潜在変数付き確率グラフィカルモデル)で同時に学習する」の2点があることを述べた.