VAE の数理:変分下界(ELBO)と再パラメータ化
計算できない周辺尤度を、なぜ下から押さえて学習できるのか。ELBO の導出と再パラメータ化トリックを順に追い、VAE の損失が再構成と正則化に分かれる理由まで腑に落ちます。
- 1.潜在変数モデルの周辺尤度 log p(x) は積分が解けないので直接最大化できない。そこで近似事後分布 q(z|x) を導入し、イェンセンの不等式で下界 ELBO を作って代わりに押し上げる。
- 2.ELBO は「再構成項(z からどれだけ x を戻せるか)」と「KL 正則化項(q(z|x) を事前分布 N(0,I) に寄せる)」の差に分解でき、これがそのまま VAE の損失になる。
- 3.z を q(z|x) から直接サンプリングすると勾配が通らない。z = μ + σ⊙ε(ε~N(0,I))と書き換える再パラメータ化トリックで、ランダム性を ε に追い出しμ・σへ誤差逆伝播できる。
問題設定:周辺尤度はなぜ計算できないのか
VAE(変分オートエンコーダ)は、観測データ x の裏に低次元の潜在変数 z があると仮定する生成モデルです。生成の流れは単純で、まず事前分布から z ~ p(z)(通常は標準正規分布 N(0, I))を引き、デコーダ p_θ(x|z)(ニューラルネット)で x を作ります。学習で最大化したいのは、データの周辺尤度です。
p_θ(x) = ∫ p_θ(x|z) · p(z) dz
ところがこの積分は厄介です。z は連続な高次元ベクトルで、p_θ(x|z) は非線形なニューラルネットなので、積分は解析的に解けず、全 z を数え上げることも不可能です。log p_θ(x) を直接微分して 勾配降下法 に載せる、という素直な道が最初から塞がっています。
ベイズの定理で真の事後分布 p_θ(z|x) = p_θ(x|z)·p(z) / p_θ(x) を書けますが、分母がまさに計算できない p_θ(x)。つまり「尤度が解けない」ことと「事後分布が解けない」ことは表裏一体です。VAE はこの両方を、近似分布 q を持ち込む変分推論で同時に回避します。
変分推論:近似事後分布で下から押さえる
そこで、扱いやすい近似事後分布 q_φ(z|x) を導入します。これは入力 x を受け取り、潜在分布のパラメータ(多くは正規分布の平均 μ と分散 σ²)を出力するニューラルネット——すなわちエンコーダです。狙いは、計算できない log p_θ(x) の代わりに、計算できる下界を最大化することです。
導出は log p_θ(x) に q_φ(z|x) を仕込み、イェンセンの不等式(log は凹関数)を使います。
log p_θ(x) = log ∫ p_θ(x|z)·p(z) dz
= log E_{q_φ(z|x)}[ p_θ(x|z)·p(z) / q_φ(z|x) ]
≥ E_{q_φ(z|x)}[ log( p_θ(x|z)·p(z) / q_φ(z|x) ) ] ← イェンセン
= ELBO(θ, φ; x)
この右辺が ELBO(Evidence Lower BOund, 変分下界) です。名前のとおり、対数尤度(evidence)を常に下から押さえます。なぜ下界で十分なのか——それは次の厳密な等式から分かります。
log p_θ(x) = ELBO(θ, φ; x) + KL( q_φ(z|x) ‖ p_θ(z|x) )
KL ダイバージェンスは常に 0 以上なので、log p_θ(x) ≥ ELBO が改めて確認できます。さらに重要なのは、左辺は φ に依存しないので、ELBO を φ について大きくすることは、ギャップである KL を小さくすることと同義だという点です。つまり ELBO 最大化は一石二鳥で、(1) 真の尤度の下界を押し上げつつ、(2) 近似事後 q_φ を真の事後 p_θ(z|x) へ近づけます。
ELBO の分解:再構成項と KL 正則化項
ELBO は変形すると、実装で使う見慣れた形に分かれます。
ELBO = E_{q_φ(z|x)}[ log p_θ(x|z) ] − KL( q_φ(z|x) ‖ p(z) )
└────── 再構成項 ──────┘ └──── 正則化項 ────┘
| 項 | 意味 | 役割 | 最大化が促すこと |
|---|---|---|---|
| 再構成項 E[log p_θ(x|z)] | z から x をどれだけ高い尤度で戻せるか | オートエンコーダの復元誤差に対応 | z に x の情報を残し、デコーダが x を再現する |
| KL 項 KL(q_φ(z|x) ‖ p(z)) | エンコーダ出力が事前分布 N(0,I) からどれだけ離れているか | 潜在空間を整える正則化 | q を N(0,I) に寄せ、滑らかで連続な潜在空間にする |
この2項は綱引きの関係にあります。再構成項だけなら、各 x を潜在空間の遠く離れた一点に押し込めば誤差を下げられますが、それでは潜在空間が穴だらけになり、p(z) からサンプリングしても意味のある x が出ません。KL 項がこれを引き戻し、全データの潜在表現を N(0, I) の周りに密に詰め込ませます。生成(事前分布からのサンプリング)が機能するのは、この正則化のおかげです。単なる オートエンコーダ と VAE の決定的な違いはここにあります。
q_φ(z|x) = N(μ, σ²) と p(z) = N(0, I) をどちらも正規分布に選ぶと、KL 項は積分やサンプリング不要で次の閉じた式になります(次元ごとの和)。KL = (1/2)·Σ( μ² + σ² − log σ² − 1 )。だから ELBO のうち推定が必要なのは再構成項だけで、実装が軽くなります。正規分布を選ぶ理由の一つがこの解析的な扱いやすさです。
再パラメータ化トリック:サンプリングに勾配を通す
ここで最大の難所が出ます。再構成項 E_{q_φ(z|x)}[ log p_θ(x|z) ] を計算するには、z を q_φ(z|x) からサンプリングする必要があります。ところが「乱数で z を引く」操作は微分不可能で、このままでは φ(=μ, σ)へ勾配が伝わりません。サンプリングという確率的な穴が、誤差逆伝播の経路を断ち切ってしまうのです。
解決が 再パラメータ化トリック(reparameterization trick) です。ランダム性を φ を含まない外部のノイズ ε に追い出し、z を φ の決定的な関数として書き直します。
z = μ + σ ⊙ ε, ε ~ N(0, I) (⊙ は要素ごとの積)
こうすると、ランダムなのは ε だけで、μ と σ は単なる線形変換のパラメータになります。z は μ・σ について滑らかに微分でき、∂z/∂μ = 1、∂z/∂σ = ε が素直に通ります。サンプリングは「N(0,I) から ε を引く」という、勾配と無関係の固定操作に外出しされました。
z ~ N(μ, σ²) を乱数生成器でそのまま引くと、計算グラフ上では z は μ・σ の子ノードになりません(乱数器の中で値が決まる)。誤差逆伝播は計算グラフの辺をたどって連鎖律を適用する仕組みなので、辺が切れていれば勾配は 0 になり、エンコーダは一切学習しません。再パラメータ化は z を μ・σ・ε の明示的な合成に変え、辺をつなぎ直す操作だと捉えると本質が見えます。土台の連鎖律は 誤差逆伝播の数理 を参照してください。
実際の学習では、各 x につき ε を1つ引いて z を作り、1サンプルで期待値を近似します(モンテカルロ推定)。ミニバッチで平均すれば分散は十分小さく抑えられます。順伝播と損失計算は次のようになります。
# VAE の1ステップ(負の ELBO を最小化)
mu, logvar = encoder(x) # q_φ(z|x) のパラメータ
std = exp(0.5 * logvar) # σ。log 分散で出すと σ>0 を保証でき数値も安定
eps = randn_like(std) # ε ~ N(0, I)。勾配を通さない外部ノイズ
z = mu + std * eps # 再パラメータ化。ここが勾配の通り道
x_hat = decoder(z) # p_θ(x|z)
recon = reconstruction_loss(x_hat, x) # −再構成項(BCE や MSE)
kl = -0.5 * sum(1 + logvar - mu**2 - std**2) # KL 項(解析式)
loss = recon + kl # = −ELBO。これを最小化
loss.backward() # μ, σ, デコーダへ勾配が流れる
logvar(log σ²)を出力させるのは実装上の定番です。指数を取れば必ず正になり σ > 0 の制約を自然に満たし、KL の log σ² 項も素直に書けます。再構成損失は出力の性質で選び、画素を {0,1} のベルヌーイと見るなら交差エントロピー(BCE)、連続値なら二乗誤差(MSE)が log p_θ(x|z) に対応します。
まとめ:3つの式が VAE を支える
VAE の数理は、結局この3点に集約されます。
| 論点 | 中身 | 押さえどころ |
|---|---|---|
| なぜ ELBO か | log p(x) ≥ ELBO(イェンセン不等式) | 周辺尤度の積分が解けないので下界を代わりに最大化。ギャップは KL(q‖真の事後) |
| ELBO の中身 | 再構成項 − KL(q_φ(z|x)‖p(z)) | 復元と正則化の綱引き。KL があるから p(z) からの生成が機能する |
| 再パラメータ化 | z = μ + σ⊙ε, ε~N(0,I) | ランダム性を ε に外出しし、μ・σへ勾配を通す。サンプリングを微分可能にする鍵 |
「解けない尤度を、解ける下界に置き換えて押し上げる」——これが変分推論の核であり、ELBO はその下界そのものです。そして再パラメータ化トリックが、確率的な潜在変数モデルを通常の ニューラルネットワーク と同じく勾配で学習可能にしました。同じ ELBO と再パラメータ化の発想は拡散モデルにも受け継がれており、連続時間版として整理した 拡散モデルの数理 と読み比べると、両者が同じ変分推論の枠組みの上に立っていることが見えてきます。
AI/機械学習 Article
VAE の数理:変分下界(ELBO)と再パラメータ化を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
VAE
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 5
導入後に効く点
ELBO は「再構成項(z からどれだけ x を戻せるか)」と「KL 正則化項(q(z|x) を事前分布 N(0,I) に寄せる)」の差に分解でき、これがそのまま VAE の損失になる。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 5
判断チェックリスト
- 自社の用途が「VAE / 生成AI」に近いか確認する。
- 強みである「潜在変数モデルの周辺尤度 log p(x) は積分が解けないので直接最大化できない。そこで近似事後分布 q(z|x) を導入し、イェンセンの不等式で下界 ELBO を作って代わりに押し上げる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。