🎨

潜在拡散モデルの仕組み

に公開

はじめに

2026年現在の画像生成モデルは、潜在拡散モデルをベースに進化を続けています。
この記事では、潜在拡散モデルの仕組みを、内部で使われている3つのAIモデルごとに解説します。
なお、数式は含んでおりませんが、一部数学用語を用いています。

  • CLIP
  • 拡散モデル
  • 変分オートエンコーダ

データ形式

モデルの説明に入る前に、AIモデルが扱うデータ形式について取り上げます。

ベクトル

ベクトルとは、簡単に言うと数値データです。次元ごとに数値が保持されています。
例えば、3次元空間の場合は(1, 2, 3)のように、3つの値が保持されています。

AIモデルが扱うデータは、基本的にベクトルデータです。
続いて紹介する「特徴ベクトル」と「潜在空間」も、ベクトルデータの一種となります。

特徴ベクトル

特徴ベクトルとは、入力データの特徴をベクトルとして表現したデータです。
例えば、「白い犬」という入力データがあるとします。「白い犬」というテキストは数値ではありませんが、特徴ベクトル化することで、「白い犬」の概念を表現した数値として扱うことができます。

特徴ベクトルは、数十〜数千という大量の次元数を持っています。
これは3次元で世界を見ている人間には直感的に理解することが難しく、視覚化も困難です。
加えて、次元数が多くなるほどデータサイズも大きくなり、処理時に計算リソースが必要という問題もあります。

潜在空間

特徴ベクトルの計算コストの問題を解決する方法として、次元数を削減しつつ、重要な意味をデータとして残す方法が取られています。それが潜在空間への変換です。

次元数の削減は、特徴ベクトル上の特定の次元をそのまま削除するということではなく、潜在変数を探してベクトルを再構築します。
潜在変数とは、入力データから直接観察できないものの、推測が可能な値を指します。
身近な例としては、複数のリンゴの購入日を入力データとして扱う場合、購入日がより過去のリンゴほど、傷んでいる可能性が高いなどが挙げられます。直接的に分かるのは購入日だけですが、そこからリンゴの状態を推測できます。
実際は、より複雑な潜在変数が抽出され、そのうち重要なものが潜在空間として出力されます。

特徴ベクトルも、潜在空間も、ベクトルデータということは共通しています。
潜在空間には、今後必要なベクトルデータに対する処理を軽量にするために変換されます。

構成

潜在拡散モデルの実体は、モデルを構成する3ステップを追っていくことで分かります。
各ステップには、主要な処理を実行するために既存技術のAIモデルが使われています。

  • テキストを潜在空間に変換(CLIP)
  • 画像の潜在空間を作成(拡散モデル)
    • テキストの潜在空間を参照
  • 画像の潜在空間を画像に変換(変分オートエンコーダ)

昨今のAIモデルにおいて、既存のAIモデルはコンポーネント化されて採用されています。
AIモデルを1つの関数と扱い、入力によって得られる出力を次のステップに利用します。
つまり、AIモデルは入れ子で使うことができます。

CLIP

1つ目のステップである、入力テキストのベクトル化で利用されるモデルです。
もともとはOpen AIが2021年に発表したもので、現在では他社においても採用されています。

CLIPができることは次の2つです。

  • テキストからベクトルへのエンコード
  • 画像からベクトルへのエンコード

エンコードとは、特定の形式に変換するということです。CLIPは、テキストや画像を特徴ベクトルに変換することができます。
また、出力されるベクトルデータは潜在空間となります。

目的

CLIPは、画像・テキストペアにおける汎用的なゼロショット学習の実現を目指して作られました。
ゼロショット学習とは、学習データに含まれていない未知の概念であっても、モデルが適切に識別できる振る舞いを指します。
例えば、CLIPに学習していない犬の画像を見せて、「犬の写真」というテキストとペアだと推測できるかを検証します。

潜在拡散モデルでの利用箇所

潜在拡散モデルでは、後続工程でベクトル化された入力テキストを利用したいため、CLIPのうちテキストエンコーダの機能を利用しています。
なお、入力テキストのベクトル化において、ランダム性は与えられません。入力テキストが同一であれば、出力されるベクトルも常に同一です。このような挙動は「決定論的」と呼ばれます。

仕組み

画像・テキストそれぞれを適切なベクトルに変換できるよう、各エンコーダーに学習させます。
ペアとなっている画像をベクトル化し、テキストもベクトル化したとき、両者のベクトルが近似していれば、画像から適切なテキストを推測できるようになります。

モデルの学習に使われたのは、インターネット上に存在する画像・テキストペアです。

拡散モデル

2つ目のステップでは、出力される画像の元になるベクトルを作ります。
ここで利用されるのが拡散モデルです。
「拡散モデル」という単語が実質的に「潜在拡散モデル」を指すこともありますが、ここではまず潜在空間を利用しない純粋な「拡散モデル」について記述します。

目的

拡散モデルの目的は、完全なノイズ画像から新たな画像を生成することです。

潜在拡散モデルでの利用箇所

純粋な拡散モデルを使って画像を作成するには、多くの計算コストがかかります。
この課題点の解消のため、潜在拡散モデルでは潜在空間に対して拡散モデルを使用します。

まず、完全なノイズを表現する潜在空間を作成します。作成段階では拡散モデルは使用されません。
そして、潜在空間に対して繰り返し逆拡散処理を行い、少しずつノイズを除去していきます。このとき、ステップ1で作成した入力テキストのベクトルが参照されます。
最終的に、ノイズが完全に除去され、入力テキストに沿った画像を表現する潜在空間が作られます。

仕組み

この手法は、物理学からアイディアを得ています。
水の入ったコップに、インクを1滴垂らした場面を想像してください。
コップ内の水にはインクが広がっていき、やがて水全体で均等な濃度になります。このようにインクが広がる事象を「拡散」と呼びます。

これを動画撮影し、逆再生をしてみます。すると、均等になるまで拡散したインクは、徐々に戻り、コップに入る前の状態になります。

拡散モデルは、画像加工において上記と同様のことをします。
「水」を「鮮明な画像」、「インク」を「ノイズ」と置き換えてみます。

鮮明な画像に、少しのノイズが追加されます。インクが垂らされたばかりの状態にあたります。
インクのように1地点からノイズが広がっていくのではないのですが、重要なのは「元々の状態の一部に異なるものが追加された」ことです。

インクが拡散するように、ノイズの追加を繰り返していくと、やがて鮮明な画像は完全なノイズとなります。インクが水の中で均等に拡散した状態です。
この一連の手順を録画して逆再生すれば、完全なノイズ画像が鮮明な画像に戻っていく過程を見ることができます。
つまり、完全なノイズの画像に対して「ノイズを鮮明な画像に戻す処理」を逆順で実施すれば、元の鮮明な画像に戻すことができるのです。この処理は「逆拡散」と呼ばれます。

拡散モデルは大量の鮮明な画像を完全なノイズ画像に変換し、そこから逆拡散による戻し方を学習していきます。
このときのノイズの推測には、U-Netというモデルが使われていますが、近年はDiffusion Transformerを採用する場合も出てきています。これは、テキストのベクトル化において近年の基礎となっているTransformerモデルから派生しています。

変分オートエンコーダ

最後に、潜在空間を画像に変換します。

変分オートエンコーダ(VAE)とは、入力されたデータを潜在空間化(エンコード)するモデルです。同時に、潜在空間の次元を再構築し、入力データを復元する機能(デコード)も備えています。

  • データを潜在空間に変換する(エンコード)
  • 潜在空間をデータに変換する(デコード)

後述のとおり、潜在拡散モデルで利用されるのはデコード機能のみですが、エンコード機能が特徴的なモデルのため、まずはそちらについて説明します。

変分オートエンコーダのエンコーダで扱う潜在空間は確率論的です。
入力データが同一であっても、確率に左右されるため、実行するたびにエンコードされた潜在空間は異なるものとなります。

「変分」の付かない「オートエンコーダ」というモデルも存在しており、そちらが扱う潜在空間は決定論的な固定値です。
つまり、入力データが同一であれば、常に出力される潜在空間も同一であり、潜在空間からデコードされた復元入力データも同一であるということです。
変分オートエンコーダでも、デコードは決定論的となります。

変分オートエンコーダという構造は汎用的ですが、実際には変換対象によって、内部的に使用しているAIモデルが変わってきます。
潜在拡散モデルにおいては画像と潜在空間の変換を行うため、CNNやVision Transformerなどが用いられています。

目的

変分オートエンコーダの目的は、ランダム性の介入によって、入力データから新しいデータを生成することです。

潜在拡散モデルでの利用箇所

ステップ2において、画像に変換可能な潜在空間が出力されています。
変分オートエンコーダのデコード機能に潜在空間を入力することで画像ファイルとなり、人間にも理解できる形式となります。
潜在拡散モデルは、この画像ファイルを最終的な出力とします。

仕組み

変分オートエンコーダの指標は、再構成誤差とKLダイバージェンスの2つです。

再構成誤差は、入力データをエンコードし、その出力データをデコードしたとき、どの程度入力データが復元できているかを指します。
モデルは、最終的に入力データをそのまま再構成するために学習を行っていきます。

一方、KLダイバージェンスは2つのベクトルデータの分布を比較した差を示すものです。
シンプルにいうと、入力データが理想的な潜在空間にエンコードされたか、ということを検証します。

変分オートエンコーダの目的は、入力データのエンコードにランダム性を加えて新しいデータを生成することでした。
このとき、ランダム性が加えられてなお、潜在空間としてきちんと意味を表現しているデータとなっている必要があります。これは、潜在空間の分布の差によって計測できます。

理想の分布の潜在空間とは、正規分布になっている潜在空間を指します。
入力データをエンコードした潜在空間と、正規分布の潜在空間を比較し、その分布の差が少なくなるように学習を進めていきます。

NCDC テックブログ

Discussion