生成モデルが流行っている昨今ですが、勉強してる際にまずVAEの理解の解像度を上げたくなり、理解をまとめることにしました。
生成モデルとは
生成モデルは、観測データが得られる確率分布を推定するモデル。例えば、サイコロを2回投げた時の目の和の分布を推定する場合、実際のデータから分布のパラメータθを最適化することで、データの生成過程を理解することができる。
VAEの基本概念
-
潜在変数を持つモデル
- 潜在空間に「多変量正規分布」を仮定し、そこから潜在変数をサンプリング
- ニューラルネットワーク(デコーダ)を用いて、潜在変数から観測データを生成
- GMMも同様に「潜在変数を持つ」が、GMMのような混合分布構造ではなく連続的潜在空間
-
多様体仮説に基づく設計
- 高次元データ(例:784次元のMNIST画像)が、より低次元(例:20次元)の潜在空間(多様体)上に表現されると仮定
- データの本質的特徴を低次元で捕捉し、生成やクラスタリング、補間が可能
VAEの特徴
-
連続的な潜在空間
- 潜在変数zは、多変量正規分布(通常は平均0、分散1)からサンプリングされる連続値ベクトル(GMMはカテゴリカル分布から取得される離散値を仮定している)
- 潜在空間上の近い点同士は似たデータを生成し、多様で滑らかな表現が得られる
- 潜在空間内での補間によって、新しい中間的なデータも自然に生成できる
-
確率的な生成過程
- デコーダは、潜在変数zから観測データxの確率分布のパラメータ(例えば正規分布の平均や分散、あるいはベルヌーイ分布のパラメータ)を出力
- この分布からサンプリングすることで、同じzでも生成データに多様性を持たせることができる
- モデル全体が確率的設計になっているため、ランダム性や多様性のある生成が可能
VAEの学習と推論の流れ
1. 学習時
- エンコーダによって入力データ x を潜在変数 z の分布(平均ベクトルと共分散行列)にマッピング
- その平均ベクトルと共分散ベクトルをおいた正規分布から潜在変数zをサンプリング
- そのサンプリングによりzを得て、デコーダでzからデータx_hatを再構成
- 損失関数は「再構成誤差(ELBO)」と「KLダイバージェンス(潜在分布と標準正規分布の距離)」の和
- KLダイバージェンスが潜在空間を標準正規分布に近づける正則化項として働く
2. 生成時
- 学習済みデコーダを使い、標準正規分布からサンプリングしたzをデコーダに入力
- デコーダから新規データ(例:画像)を生成
- 潜在空間上の異なるzを使うことで、多様な新規データや、z間の補間による滑らかな変化も表現可能
学習・推論実装
調べると実装コード多々出てくるのでここでは紹介のみ。
ゼロつく5本での実装がリポジトリで公開されてます。私もこれで勉強させてもらいました。
https://github.com/oreilly-japan/deep-learning-from-scratch-5/blob/main/notebooks/07_vae.ipynb
まとめ
生成モデル、具体的には拡散モデルを勉強する上でVAEの基礎部分の解像度を上げるために資料読んで学んだことをまとめてみたらかなりあっさり目になってしまった。まだ条件付きや階層型があるがまた機会があればまとめてみたいと思います。
参考文献
- ゼロから作るDeep Learning 5. https://www.oreilly.co.jp/books/9784814400591/
- Variational Autoencoder徹底解説. https://qiita.com/kenmatsu4/items/b029d697e9995d93aa24
- 龍野翔 (2016). 猫でも分かるVariational AutoEncoder. https://www.slideshare.net/slideshow/variational-autoencoder-64515581/64515581
- まつけん (2017). Variational Autoencoder徹底解説. https://qiita.com/kenmatsu4/items/b029d697e9995d93aa24