見出し画像

VAE(変分オートエンコーダ)を理解しよう!生成AIがどのように画像を作っているのか?

前回の記事ではCNN(畳み込みニューラルネットワーク)について説明しましたね。今回は、その続きとしてVAE(Variational Autoencoder:変分オートエンコーダ)というモデルについてお話しします。

「生成AI」というと、画像生成モデルが特に注目されることが多いですが、その裏側でどのような技術が使われているかを知ると、AIに対する理解が深まります。さっそく、VAEがどんなものかを見ていきましょう!

VAEとは?

VAEは「データを確率分布として表現し、新たなデータを生成するモデル」です。画像生成や異常検知などに使われる手法で、オートエンコーダ(Autoencoder)を確率的なモデルに拡張したものです。

オートエンコーダとの違い

  • オートエンコーダ:入力データを「特徴ベクトル」に圧縮し、同じ情報をもとに再構築するモデル。

  • VAE(変分オートエンコーダ):入力データを「確率分布」として扱うことで、画像生成の際に新しいデータを生成可能にします。

VAEには以下の2つの機能があります。

  1. 新しい画像を生成する:入力画像から抽出した潜在変数を使い、新しい画像を生成できます。

  2. 入力画像に基づく再構築と調整:損失関数の調整によって、生成された画像が入力画像に近づくようにモデルを最適化します。

VAEの流れ

(1) 入力データをエンコーダに入力

画像をエンコーダに入力すると、その画像の特徴を数値として取り出します。具体的には「平均(μ)」と「標準偏差(σ2)」の2つの値です。

(2) 確率分布の作成

エンコーダが出力した「平均」と「標準偏差」を使って、正規分布を作成します。この分布は「画像の特徴がどのくらいの範囲でばらつくか」を表しています。

(3) 潜在変数のサンプリング

作成された確率分布からランダムに数値を取り出します。この取り出した値を「潜在変数(z)」と呼び、データ生成のために使います。

補足:再パラメータ化トリック

通常、ランダムなサンプリングはニューラルネットワーク内では微分できません。そこで「再パラメータ化トリック」という方法を使い、確率的な処理を微分可能な計算式に変換します。

再パラメータ化トリックの数式は次のようになります:

z=μ+σ⋅ϵ

ϵ:標準正規分布からランダムに取り出した値(平均0、分散1)

(4) デコーダによる再構築

エンコーダから渡された「潜在変数」を受け取ったデコーダは、これをもとに新しい画像を生成します。生成された画像は、入力された画像に「似ているけれど少し異なる」ものになります。

損失関数の役割

VAEの学習を進めるうえで重要な「損失関数」について説明します。VAEの損失関数は以下の2つの誤差を組み合わせたものです。

(1) 再構築誤差

入力画像と生成された画像の違いを測定する項目です。これにより、生成された画像が元の画像にどれだけ似ているかを評価します。一般的に平均二乗誤差(MSE)が使用されます。

(2) KLダイバージェンス

エンコーダが出力する確率分布が、理想の標準正規分布(平均0、分散1)にどれだけ近いかを測る項目です。この項目により、潜在空間が「滑らかな分布」になります。

損失関数全体は次のようになります:

LVAE​=Eq(zx)​[logp(xz)]−DKL​(q(zx)∣∣p(z))

  • 第1項:再構築誤差(生成した画像と入力画像の類似度を測定)

  • 第2項:KLダイバージェンス(潜在空間を標準正規分布に近づける)

この損失関数を最小化することで、「元の画像に近い画像を生成する能力」と「潜在空間を理想的な分布に近づける能力」を同時に高めています。


4. VAEの応用例

VAEはさまざまな場面で活用されています。

  • 画像生成:手書き数字の生成、顔画像の生成など。

  • 異常検知:正常なデータから外れる画像を異常として検出。

  • データ補間:2つの異なる画像間を滑らかに補間した画像の生成。


5. まとめ

VAEは、入力画像を圧縮して潜在変数という「数値ベクトル」に変換し、そこから確率的にデータを生成するモデルです。再構築誤差とKLダイバージェンスという2つの要素を損失関数で調整しながら、理想的な分布に近づけることで「多様なデータ生成」を可能にしています。

VAEには主に以下の2つの機能があります:

  1. 新しい画像を生成する:潜在変数を用いて入力画像に似た、新しい画像を生成します。

  2. 入力画像に基づく再構築と調整:損失関数を最適化し、生成された画像が入力画像に近づくようにモデルを調整します。

このように、VAEは「画像生成」と「再構築のための調整」という2つの役割を担い、生成モデルとして多様な応用が可能です。

次回は、さらに高度な生成モデルである「GAN(Generative Adversarial Network)」についても触れていこうと思います。

もしこの記事が参考になったら、ぜひ「スキ」やコメントで感想を教えていただければ幸いです。

いいなと思ったら応援しよう!