Re Reference AI

アーキテクチャ

VAEとは

Variational Autoencoder / 変分オートエンコーダ

データを確率分布として潜在空間へ圧縮し、そこからのサンプリングで新しいデータを生成できるオートエンコーダ

生成AIオートエンコーダ

ひとことで言うと

データの特徴を「あいまいさ」ごと圧縮しておき、そこから少しずつ違う新しいデータを作り出せるようにした仕組み。

概要

VAE(変分オートエンコーダ)は、通常のオートエンコーダを拡張し、入力データを1点のベクトルではなく確率分布(平均と分散)として潜在空間へ圧縮するEncoderと、その分布からサンプリングした点を元のデータへ復元するDecoderで構成される生成モデル。 潜在空間を確率分布として学習することで、学習データに存在しない潜在空間上の点をサンプリングしてDecoderに通しても、自然なデータを生成できるようになる。 学習では、入力の復元誤差に加えて、潜在空間の分布があらかじめ定めた標準正規分布に近づくよう制約するKLダイバージェンス項を損失関数に含め、両者のバランスを取りながら最適化する。 GANほど鮮明な画像を生成する能力では劣るとされる一方、学習が安定しており、潜在空間が滑らかに構造化されるため、データ間の補間や潜在変数の操作がしやすいという特徴を持つ。

背景

通常のオートエンコーダは入力を1つの決まったベクトルへ圧縮するため、学習データに存在しない潜在空間上の点をデコードしても、自然なデータが得られるとは限らない。 VAEは、潜在空間を確率分布として学習し、その分布を正則化することで、滑らかで生成に適した潜在空間を獲得することを目指して考案された。

歴史

2013年: KingmaとWellingが論文「Auto-Encoding Variational Bayes」でVAEを提案。 2015年以降: 画像生成、異常検知、潜在空間上でのデータ補間など、幅広い応用研究が進展。

アーキテクチャ

Encoderは入力データを受け取り、潜在変数の分布を規定する平均ベクトルと分散ベクトルを出力する。 この分布から潜在変数をサンプリングする際、勾配を伝播できるようにするReparameterization Trick(ノイズ変数を用いて確率的なサンプリング操作を微分可能な形に変形する手法)が用いられる。 Decoderはサンプリングされた潜在変数を受け取り、元のデータ空間へ復元する。 損失関数は、復元誤差(入力とDecoder出力の差)と、潜在分布を標準正規分布に近づけるKLダイバージェンス項の和として定義される。

コード例

PyTorchでのVAEのEncoder/DecoderとReparameterization Trick

import torch
import torch.nn as nn

class VAE(nn.Module):
    def __init__(self, in_dim=784, latent_dim=20):
        super().__init__()
        self.enc = nn.Linear(in_dim, 400)
        self.mu = nn.Linear(400, latent_dim)
        self.logvar = nn.Linear(400, latent_dim)
        self.dec = nn.Sequential(nn.Linear(latent_dim, 400), nn.ReLU(), nn.Linear(400, in_dim), nn.Sigmoid())

    def forward(self, x):
        h = torch.relu(self.enc(x))
        mu, logvar = self.mu(h), self.logvar(h)
        std = torch.exp(0.5 * logvar)
        z = mu + std * torch.randn_like(std)  # Reparameterization Trick
        return self.dec(z), mu, logvar

利点

  • 潜在空間が確率分布として滑らかに構造化されるため、データ間の補間や潜在変数の操作がしやすい
  • GANと比べて学習が安定しており、モード崩壊のような問題が起こりにくい
  • 尤度に基づく明確な目的関数を持つため、学習の進捗を評価しやすい

欠点

  • 生成される画像がGAN拡散モデルと比べてぼやけやすい傾向がある
  • KLダイバージェンス項と復元誤差項のバランス調整が生成品質に大きく影響する
  • 非常に複雑なデータ分布を表現する能力では、拡散モデルなど後発の手法に劣るとされる

比較

  • オートエンコーダVAEは通常のオートエンコーダを拡張し、潜在空間を確率分布として学習することで生成モデルとして使えるようにしたもの
  • GANVAEは尤度ベースの安定した学習が可能な一方、GANの方が鮮明な画像を生成しやすいとされる
  • 拡散モデル現在の高品質な画像生成では、VAEよりも拡散モデルが主流として使われることが多い

関連用語

オートエンコーダGAN拡散モデルStable Diffusion

よくある質問

VAEと通常のオートエンコーダの違いは?

通常のオートエンコーダは入力を1点の固定ベクトルへ圧縮するのに対し、VAEは入力を確率分布(平均と分散)として圧縮する。この違いにより、VAEは学習データにない潜在空間上の点からも自然なデータを生成できる。

VAEの生成画像がぼやけやすいのはなぜ?

復元誤差として画素ごとの平均的な誤差を最小化する目的関数を使うことが多く、細部の鋭さよりも平均的にもっともらしい出力が選ばれやすいため。

参考文献

関連Zenn記事