VAE(変分オートエンコーダ)入門ガイド:概要・ELBO・再パラメータ化・基本構成と実践的応用

VAE とは — 概要と直感

VAE(Variational Autoencoder、変分オートエンコーダ)は、確率的生成モデルとニューラルネットワークによる潜在変数モデルを組み合わせた手法です。2013年にKingma と Welling が提案して以降、画像・音声・テキストの生成、潜在表現学習、異常検知、分子設計など幅広い応用が生まれました。VAE の本質は「観測データ x を低次元の潜在変数 z を介して生成する確率モデルを学習し、同時にその潜在変数の事後分布を近似する」点にあります。

基本構成:エンコーダ(推論網)とデコーダ(生成網)

VAE は主に二つのネットワークで構成されます。

  • エンコーダ qφ(z|x):観測 x から潜在変数 z の近似事後分布を出力するネットワーク(推論モデル)。通常、平均 μ(x) と対数分散 log σ^2(x) を出力し、正規分布 N(μ, diag(σ^2)) を仮定することが多いです。
  • デコーダ pθ(x|z):潜在変数 z から観測 x を生成する条件付き分布を出力するネットワーク(生成モデル)。画像なら Bernoulli(0-1)やガウス分布を仮定することが一般的です。

変分推論と ELBO(変分下界)

真の対数尤度 log pθ(x) を直接最大化することは難しいため、変分下界(ELBO)を最大化します。ELBO は次の形で表されます:

log pθ(x) ≥ E_{z∼qφ(z|x)}[log pθ(x|z)] − KL(qφ(z|x) || p(z))

左の期待項は「再構成項」(観測を潜在からどれだけ再現できるか)、右の KL 項は「正則化項」であり、推論分布 qφ を事前分布 p(z)(通常 N(0,I))に近づけます。学習は ELBO の負を損失として最小化することで行われ、これは実際には「再構成誤差 + KL 発散」に分解されます。

再パラメータ化トリック(Reparameterization trick)

qφ(z|x) からのサンプリングは微分を阻害しますが、再パラメータ化トリックにより勾配伝播が可能になります。ガウス分布の場合、z = μ(x) + σ(x) ⊙ ε(ε ∼ N(0,I))と表し、μ, σ を通じて勾配を伝えることができます。これが VAE を深層学習の枠組みで効率的に学習可能にした重要な技術です。

損失関数の実装上の注意

実装では再構成誤差の形(負ログ尤度の選択)に注意が必要です。二値画像には Bernoulli(クロスエントロピー)が適し、連続値の画素には平均二乗誤差(ガウス仮定に基づく負対数尤度)が使われます。さらに KL 項は解析的に計算可能な場合が多く、総合的な損失は次のようになります:

Loss = −E_{qφ(z|x)}[log pθ(x|z)] + KL(qφ(z|x) || p(z))

典型的な問題点と改善手法

  • 生成画像のぼやけ(blurriness):ガウスデコーダやピクセル単位の平均的な損失が原因で、生成サンプルが平均化されぼやけることがあります。VAE 単体よりも GAN と組み合わせる(VAE-GAN)ことで鮮明さを改善する試みが多いです。
  • ポスターリオ崩壊(posterior collapse):強力なデコーダ(特にオート回帰デコーダ)を使うと、qφ(z|x) が事前分布に一致してしまい潜在変数が意味を持たなくなる現象。KL 重み付け(β-VAE)、逐次ウォーミングアップ(KL weight warm-up)、構造の制約などで対処します。
  • 近似事後の表現力不足:単純なガウス近似では複雑な真の事後を表現しきれない場合があります。Normalizing Flows(フロー)やIAF(Inverse Autoregressive Flow)で qφ をより柔軟にする手法が提案されています。

代表的な拡張と派生モデル

  • β-VAE:ELBO の KL 項に重み β をかけることで、潜在因子の独立性・解釈性を促進(Higgins et al.)。
  • Conditional VAE (CVAE):ラベル y を条件として与えることで、条件付き生成が可能(条件付き生成や翻訳に応用)。
  • VAE + Normalizing Flows:近似事後を可逆変換の列で豊かにすることで表現力を向上。
  • Importance-Weighted Autoencoder (IWAE):複数のサンプルで重要度サンプリングを行い、より厳密な下界を得る手法(Burda et al.)。
  • VQ-VAE:離散潜在表現を使うことで、連続ガウス潜在の欠点を回避するアプローチ(van den Oord et al.)。

評価指標と解析

VAE の良し悪しを評価する指標はいくつかあります。

  • ELBO / 対数尤度推定:学習時に直接最適化する指標。ただしサンプル品質との相関は完璧ではありません。
  • サンプル品質指標(FID):生成画像の人間的品質を評価する指標。GAN 系の比較でよく用いられます。
  • 再構成誤差:入力を復元する能力の指標。過学習や表現力の問題を示唆します。
  • 潜在空間の解析:潜在次元の操作(補間、潜在ベクトルの線形操作)で意味的な変化が得られるかを観察します。

実用上のハイパーパラメータと設計上の選択

  • 潜在次元数:小さすぎると表現不足、大きすぎると何も学ばない(=事前に近づく)問題が起きます。タスクに応じて検証が必要です。
  • 事前分布 p(z):標準正規がデフォルトですが、複数モードや階層的先行分布を入れることで生成の多様性を改善できます。
  • デコーダの尤度モデル:画像なら Bernoulli、Laplace、Gaussian、ピクセル依存モデル(autoregressive)など選択肢があります。データ特性に依存します。
  • 重み初期化・最適化:Adam 等を使うのが一般的。KL ウォーミング(初期エポックでは KL の重みを小さくする)で安定化することがあります。

代表的な応用例

  • 画像生成と編集(潜在空間操作で属性変化)
  • 異常検知(正常データで学習した VAE の再構成誤差で異常を検出)
  • 半教師あり学習(潜在表現を分類器に利用)
  • 分子設計や薬剤候補生成(潜在空間を探索して新分子を生成)
  • 音声合成や表現学習(特徴抽出用途)

実装の流れ(概要)

典型的な PyTorch/TensorFlow 実装の流れ:

  • エンコーダネットワークで μ(x), logσ^2(x) を出力
  • 再パラメータ化で z をサンプリング(z = μ + σ * ε)
  • デコーダで pθ(x|z) のパラメータを出力し、再構成損失を計算
  • KL(解析解がある場合は解析式)を計算し、総合損失を最小化
  • 学習後は z ∼ p(z) からデコーダでサンプルを生成、またはエンコーダで潜在表現を抽出

まとめ:VAE の位置づけと現実的な選択

VAE は「確率的で解釈性のある潜在表現」を効率的に学習できる強力なフレームワークです。一方で生成品質(特に画像の鮮明さ)や近似事後の表現力といった課題があり、実務では VAE 単体だけでなくGAN、フロー、離散潜在(VQ)などと組み合わせられることが多いです。タスクに応じて損失設計、事前分布、潜在次元、デコーダの尤度選択などを慎重に調整することが成功の鍵になります。

参考文献