# VAE(変分オートエンコーダ) > [!note] 別ページとの違い: 本ページはVAE一般(潜在変数モデル・ELBO・変数変換トリックによる標準的な定式化)を扱う。[[変分損失性オートエンコーダ]](VLAE)は、VAEの潜在変数と自己回帰デコーダーの間で情報を明示的に分担させる派生モデルを扱う別概念であり、本ページはその基礎にあたる。 ## 定義 VAE(Variational autoencoder、変分自己符号化器)は、線形モデルを使った[[有向グラフィカルモデル|潜在変数モデ]]ルをニューラルネットワークによる非線形変換へ拡張した深層生成モデルである。ニューラルネットワークで構成される符号化器(encoder)が認識モデルq(z|x;φ)を、復号化器(decoder)が生成モデルp(x|z;θ)を推定し、学習時は両者を、データ生成時には復号化器のみを使う。生成過程は、潜在変数z〜𝒩(0,I)をサンプリングし、復号化器でzから平均μと分散σを出力、x〜𝒩(μ,σ)からデータをサンプリングするという2段階から成る。同時分布p(x,z;θ)=p(x|z;θ)p(z)は無数のp(x|z)p(z)の混合分布とみなせ、正規分布p(x|z)を無数に組み合わせることで全体として複雑な分布を表現できる。「変分」は学習に使う変分法(汎関数の最大化・最小化を扱う手法)に、「自己符号化器」はデータを符号化した後に元のデータへ復号化する構造に由来する。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.2) ## ELBOによる最尤推定 VAEは[[最尤推定]]で学習するが、対数尤度L(θ)=Σᵢ log∫p(x|z;θ)p(z)dzは潜在変数の周辺化積分を含み直接計算できず、単純なモンテカルロ近似も不偏推定にならない(潜在変数モデル一般に共通する問題)。VAEはJensenの不等式を用いて対数尤度の下限であるELBO(Evidence lower bound)を導出する。 $l(\theta)_{ELBO}=\int_z q(z|x)\log\frac{p(x|z;\theta)p(z)}{q(z|x)}dz$ ELBOは条件付き対数尤度の期待値とKLダイバージェンスの差 $l_{ELBO}=\mathbb{E}_{q(z|x)}[\log p(x|z;\theta)]-KL(q(z|x)\|p(z))$ に分解でき、対数尤度とELBOの差は $KL(q(z|x)\|p(z|x))$(認識モデルと真の事後分布とのKLダイバージェンス)に一致する。したがってELBOを最大化すると、認識モデルq(z|x)は真の事後分布p(z|x)へ近づきながら、対数尤度も同時に最大化される。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.2) この「良い生成のために良い認識をする」というアイディアは、1995年にPeter DayanとGeoffrey Hintonらが提唱したWake-sleepアルゴリズム・Helmholtz Machineに遡る。VAEはサンプルごとに別々の認識モデルを用意する従来の変分法と異なり、一つのニューラルネットワークq(z|x;φ)で全サンプルの認識モデルを表す**償却化推論(amortized inference)**を用いる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.2) ## 変数変換トリック(reparameterization trick) 復号化器パラメータθについての勾配は誤差逆伝播法で容易に求まるが、符号化器パラメータφについての勾配は、確率分布q(z|x;φ)自体がφに依存するため期待値の形で表せず、通常のモンテカルロ推定ができない。VAEは**変数変換トリック(reparameterization trick、Pathwise Derivativeとも呼ばれる)**z=μ(x;φ)+εσ(x;φ)(ε〜𝒩(0,I))を用いてこれを解決する。この変換により期待値をとる分布がp(ε)(φに依存しない)へ移り、φへの依存が条件付き確率の条件部分に移動するため、モンテカルロ推定で勾配の不偏推定量が計算できるようになる。この計算グラフ全体は自己符号化器とみなせ、「変分自己符号化器」の名の由来になっている。変数変換トリックは強化学習で使われるREINFORCEなど他の不偏推定手法より勾配推定の分散が小さい場合が多く、各サンプルについてzを一つしかサンプリングしなくても学習できる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.2) ## IWAE(Importance weighted autoencoder) VAEの改良手法として、認識モデルq(z|x)からz₁,...,zₖを複数サンプリングし、重み $w_i=p(x,z_i)/q(z_i|x)$ で重み付けした $\mathcal{L}_k(x)$ を最大化するIWAEがある。$\mathcal{L}_k$ はk=1のときELBOと一致し、kを増やすほど対数尤度のより良い(タイトな)下限を与えることが示されている。サンプリング数kを増やすことで、VAEより対数尤度が高い生成モデルを学習できることが実験的に確認されている。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.2) ## VAEとGAN・拡散モデルとの違い VAEはデータを直接生成せず、正規分布のパラメータ(平均μと分散σ)を生成してから最後にノイズを加える。これにより尤度は評価できるが、生成が本質的に「ぼやける」傾向を持つ。[[GAN(敵対的生成ネットワーク)]]は最尤推定を使わず尤度評価を必要としないため、決定的な関数のみでデータを生成でき、シャープな出力が得られる。一方[[拡散モデル]]はVAEと同じくELBO最大化で最尤推定を実現する潜在変数モデルだが、拡散過程(認識モデルに相当)を学習しない固定モデルとして使う点、非常に多くのステップに共有パラメータのモデルを使う点でVAEと異なる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.2, §3.3, §3.6) ## 横断的知見 - **VAEの「潜在符号に何を残すか」という設計問題は、本ページが扱う標準VAEでは陰に混合分布の複雑さへ委ねられているが、[[変分損失性オートエンコーダ]](VLAE)はこれを自己回帰デコーダーの受容野という形で明示的に制御する**: 本ページの標準VAEは、復号化器p(x|z;θ)を正規分布の平均・分散を出力するネットワークとして扱うため、潜在変数zに「データ全体を要約する情報」がどこまで載るかは学習結果に委ねられる。[[変分損失性オートエンコーダ]]は同じELBO最大化の枠組みの上に立ちながら、復号化器を自己回帰モデル(PixelCNN)に置き換え、その受容野を制御することでデコーダーが表現できる局所情報と潜在符号が担うべき大域情報を明示的に分担させる。両者を突き合わせると、VAEの「符号化器・復号化器」という抽象化は、復号化器の構造(正規分布 対 自己回帰)次第で潜在変数の情報内容が大きく変わるという設計自由度を持つことがわかる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] §3.2, [[変分損失性オートエンコーダ]]の定義節) ## 未解決の問い - 変数変換トリックがREINFORCEより分散が小さい理由は本章では「わかっている」とだけ述べられ、定量的な比較(分散の式による導出)は示されない。どの条件下でこの優位性が崩れるか。 - IWAEのタイトな下限は対数尤度改善に有効だが、kを増やすことの計算コストと改善量のトレードオフは本章では扱われない。 - VAEと[[拡散モデル]]はどちらもELBO最大化に基づく潜在変数モデルであるが、拡散モデルが多ステップ化によって達成する生成品質の向上を、VAEのアーキテクチャ側の改良(IWAEなど)だけでどこまで再現できるか。 ## 関連 - source: [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 3 深層生成モデル]] - concept: [[GAN(敵対的生成ネットワーク)]](最尤推定を使わない対照的な生成モデル) / [[拡散モデル]](同じくELBO最大化を使う潜在変数モデル) / [[変分損失性オートエンコーダ]](自己回帰デコーダーとの統合) / [[最尤推定]] / [[有向グラフィカルモデル]](p(x,z)=p(x|z)p(z)という因子分解) / [[主成分分析]](線形版の潜在変数モデル) ## 出典 - 岡野原大輔, 『ディープラーニングを支える技術〈2〉 ニューラルネットワーク最大の謎』, 技術評論社, 2022, 第3章, §3.2.