VAE

に公開

はじめに

概要

  • シラバス:E資格2024#2
  • オートエンコーダとVAEモデルを勉強する

キーワード

オートエンコーダ, VAE, Denoising Autoencoder,
Reparameterization Trick, 変分下限

学習内容

オートエンコーダ(Autoencoder, AE)

  • 自己教師あり学習の一種で、入力データを圧縮し再構成するニューラルネットワークである
  • 入力の特徴を自己教師的に学習し、再構成を通じて圧縮と抽象化を行うモデル
  • 入力と復元の差(誤差)を最小化するように学習する
  • よく使われる損失関数:MSE(平均二乗誤差)

構造

  • エンコーダ:入力データを「潜在空間(latent space)」と呼ばれる低次元の表現に圧縮して(次元削減)、情報量を小さくした特徴量を獲得する。例:画像 → ベクトル(特徴量)
  • デコーダ:潜在ベクトルを使って、元のデータを復元する。例:ベクトル → 元の画像の再構成


出典:
DeepAge,オートエンコーダ:抽象的な特徴を自己学習するディープラーニングの人気者(2016),https://deepage.net/deep_learning/2016/10/09/deeplearning_autoencoder.html

主な用途

用途 説明
データ圧縮 低次元の潜在変数で情報を表現
次元削減 PCAのような使い方(非線形変換が可能)
異常検知 正常なデータは復元可能だが、異常は復元しにくくなる
ノイズ除去(Denoising) ノイズを加えた入力から元のデータを復元するように学習
生成モデルの一部(VAEなど) 潜在空間からのサンプリングを通して生成も可能

Denoising Autoencoder(DAE)

  • 入力データに意図的にノイズを加えてから復元することを学習するタイプのオートエンコーダ
  • 単なるオートエンコーダよりも、よりロバストで抽象的な特徴表現を学べる
  • 通常のオートエンコーダは入力データをそのまま入力し、出力を元のデータにできるだけ近づける。DAEは入力にノイズを加えたデータをエンコーダに入れて、元の綺麗な入力を復元するように学習する。

関連モデルとの比較

モデル ノイズ 潜在分布 主な用途
Autoencoder なし 決定論的 圧縮、再構成
Denoising AE あり 決定論的 頑健な特徴抽出
Variational AE なし 確率的 生成、潜在空間操作

VAE(Variational Autoencoder)

  • 確率的な生成モデルとしての性質を持つオートエンコーダの拡張版である
  • 「潜在変数モデル」と「ベイズ推論」の考え方を取り入れ、データの生成や分布の学習に優れている
項目 通常のオートエンコーダ VAE(変分オートエンコーダ)
潜在変数 固定のベクトル 確率分布(平均と分散)で表現
データの生成 潜在ベクトルを復元 ランダムサンプリングで生成可能
潜在空間の構造 特に制約なし 連続的で滑らかな空間になる
学習目的 再構成誤差の最小化 再構成誤差+分布の整形

モデル構造

エンコーダ(推論モデル)

  • 入力xを受け取り、潜在変数𝑧の分布(平均𝜇、分散𝜎^2)を出力
  • zはガウス分布(確率分布𝒛~𝑵(𝟎,𝟏)を仮定)として考える
  • エンコーダのNNは、潜在変数𝑧の平均と分散(2~50次元)を出力する
q_\phi(z|x) = \mathcal{N}(z; \mu_\phi(x), \sigma^2_\phi(x))

Reparameterization Trick(再パラメータ化)

  • zを確率分布(通常はガウス分布)からサンプリングするが、通常のサンプリング操作は微分できないため、誤差逆伝播ができないという問題がある
  • サンプリングを「決定論的な操作に変換」して、微分可能にする
  • もともと𝑧∼\mathcal{N}(𝜇,𝜎^2)とサンプリングしていたところを固定のランダム性𝜖と、学習可能な変換(𝜇,𝜎)に分解する
z = \mu_\phi(x) + \sigma_\phi(x) \cdot \epsilon,\quad \epsilon \sim \mathcal{N}(0, 1)

μ_ϕ(x):エンコーダから得られる平均
𝜎_𝜙(𝑥):エンコーダから得られる標準偏差
ϵ:標準正規分布からのノイズ(固定)

デコーダ(生成モデル)

  • 𝑧を使って元のデータxを生成する
  • 𝑧をランダムサンプリングし、デコーダを通すことで画像を生成する
p_\theta(x|z)

学習の目的関数(損失関数)

  • 変分下限(ELBO)を最大化(=損失を最小化)する
\textbf{変分下限最大化:} \\ \mathcal{L}(\theta, \phi; x) = \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{\mathrm{KL}}(q_\phi(z|x) \parallel p(z))
  • 数式の左部:
    • Recnstruction Error(再構成誤差):𝑧を入力して出力された𝑥の分布の期待値→最大化したい
    • 入力xを再現する能力
  • 数式の右部:
    • RegularizationParameter(正則化項):𝑞(𝑧|𝑥)つまり𝑥を入力して出力(エンコード)した際の平均μ分散σの正規分布とp(z)=𝑧~\mathcal{N}(0, 1)。つまり平均0分散1の正規分布の近さ→最小化したい
\textbf{損失関数:} \\ \mathcal{L}_{\text{VAE}} = - \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] + D_{\mathrm{KL}}(q_\phi(z|x) \parallel p(z))

変分下限(Evidence Lower Bound, ELBO)

  • 近似推論と生成モデルの学習において中心的な役割を果たす
  • 生成モデルでは、観測データxに対する周辺尤度(marginal likelihood)を最大化したいが、この積分は高次元かつ非線形であることが多く、直接計算が困難である

解決策として、

  • 真の事後分布p(z∣x)を、簡単な近似分布q(z∣x)で近似する
    • 計算困難なlog𝑝(𝑥)(観測データの尤度(目標))を近似する
  • その上で、下からの近似(下限)を最大化する(ELBO)ことで、近似的に学習する

数式:
近似分布q(z∣x)を用いて、logp(x)を分解する

\begin{align} \log p_\theta(x) &= \underbrace{ \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{\mathrm{KL}}(q_\phi(z|x) \parallel p(z)) }_{\text{変分下限(ELBO)}} \\ &\quad + D_{\mathrm{KL}}(q_\phi(z|x) \parallel p_\theta(z|x)) \end{align}

強みと弱み

強み

  • 潜在空間に連続性・意味的な構造が生まれる(例:犬→猫→ライオンと滑らかに変化)
  • 新しいデータ生成が可能(潜在空間からサンプルしてデコーダに通すだけ)
  • 学習が安定しやすい(GANよりも)

弱み

  • 生成画像がややぼやける(blur)傾向あり(特に画像の場合)
  • GANほどシャープな出力が得られないことがある
GitHubで編集を提案

Discussion