参考:https://www.youtube.com/watch?v=iv-5mZ_9CPY
CLIP
2021年2月、OpenAIはCLIPという新しいモデルアーキテクチャを発表しました。このモデルは4億枚の画像とキャプションのペアからなるデータセットで訓練されています。
CLIPは2つのモデルで構成されています:テキストを処理するText Encoderと画像を処理するImage Encoderです。両方のモデルは512次元のベクトル(Embedding)を出力し、同じデータペアの出力ができるだけ近くなるように学習されます。

バッチ学習の際、バッチ内のすべての画像間の類似性を活用するため、ベクトル間の類似度を計算します。

対角線上のベクトルは対応する画像とキャプションのペアで、これらの類似性を最大化します。
対角線以外はすべて対応しないペアで、これらの類似性を最小化します。
CLIPの「C」はContrastive(対比)を表し、モデルが対応するペアと対応しないペアを対比して学習することを意味します。
ベクトルの類似度を測定するためにコサイン類似度を使用します

CLIPはテキストと画像をベクトル空間に変換することしかできず、ベクトルから画像を生成することはできません。
DDPM → DDIM
GPT-3の論文が発表された数週間後、カリフォルニア大学バークレー校のチームがDenoising Diffusion Probabilistic Models(DDPM)の論文を発表しました。この論文は、拡散プロセスを利用して非常に高品質な画像を生成できることを初めて示しました。

拡散モデルの核心的なアイデアは、訓練画像に段階的にノイズを追加して完全にノイズになるまで変化させ、その後ニューラルネットワークを訓練してこのプロセスを逆転させることです。
ノイズの追加と除去は段階的に行われますが、モデルの目標は常に元の画像を復元することです。

画像生成段階でも、各ステップでランダムノイズを追加する必要があります。DDPM論文では、かなり複雑な理論を借用してこれらのアルゴリズムを導出しています。
以下では、拡散モデルを理解するための数学的に等価な方法を紹介し、DDPMアルゴリズムがなぜ効果的なのかを直感的に理解します。
訓練画像がベクトル空間でスパイラル分布を形成していると仮定します。
画像にランダムノイズを追加すると、各ピクセル値がランダムに変化することになり、これはベクトル空間での画像対応ベクトルのランダムウォークに相当します。これは物理学のブラウン運動とも類似しており、拡散モデルの名前の由来でもあります。

ベクトル空間の各点は一枚の画像を表します。

モデルの入力は、データセットの異なる開始点から見た多くの異なるランダムウォークです。モデルが行うべきことは時間を逆転させ、時刻tの位置が与えられたときに時刻t-1の位置を計算することです。

実際の論文では、モデルはウォーク全体で追加された総ノイズを予測するように訓練されます。
数学的に証明できることは、総ノイズをウォークのステップ数で割ったものが最後のステップのノイズに等しいということです。
この効果により、訓練プロセスの分散が大幅に減少し(すべて開始点を指すノイズを直接予測)、モデルがより効率的に学習できるようになります。

座標を関数fとして記述し、ランダムウォークのステップ数に対応する時間変数を渡します。

==tが1からある段階まで減少すると、逆方向のベクトル場は突然データセット中心(平均)を指すことからデータセット自体を指すように変化します==
DDPM論文に戻ると、逆拡散の各ステップでランダムノイズを追加し(モデル出力位置にランダムステップ長を追加、ステップ数の増加とともにステップ長を減少)、これを繰り返すことでデータセット自体に収束できます。


ランダムノイズを除去すると、すべての点は迅速にスパイラルの中心に移動し、その後単一の内側エッジに向かって移動し、データセット全体の多様性が失われます。しかし実際には、画像生成が完全に実際の画像の多様体に入らないため、ぼやけた非現実的な画像が生成されます。


DDPMは拡散モデルを画像生成の実用的な方法にしましたが、拡散モデルはすぐには広く採用されませんでした。
DDPMの主要な問題は、各ステップで完全な巨大なニューラルネットワークを通す必要があり、しかも多くのステップが必要だったことです。
その後、GoogleとStanfordが発表した2つの論文で、ランダムノイズを追加する必要がなく、同じ結果を得ることができることが示されました。
- DDPMの各点の運動は、特別な微分方程式「確率微分方程式」で表現でき、この方程式にはモデルベクトル場とランダム運動の2つの成分が含まれます
- Google Brainチームは、確率微分方程式と同じ分布を生成できるFokker-Planck方程式を発見しました。この方程式にはランダム成分がなく、「常微分方程式」であるため、モデルが生成するベクトル場を直接利用して画像を生成でき、ランダム摂動は不要です。この方法をDDIMと呼びます
- DDIMはモデル訓練に変更を加える必要がなく、より少ないステップで完全に決定論的な方法で高品質な画像を生成できます

DDIMはより小さなステップサイズを使用するため、軌道がスパイラル分布により良く収束します。
効果の向上
OpenAIは2022年に画像-キャプションペアを使用して拡散モデルを訓練し、CLIP画像エンコーダーの逆として機能させました。これをunCLIPと呼び、商業的にはDALI 2として知られています。

モデルはテキスト情報に基づいてノイズ除去を行うことができ、この技術を「Conditioning」と呼びます。

テキストベクトルを拡散モデルに入力する方法は複数あります。
しかし、テキスト入力「Conditioning」だけで描かれた画像は、テキストのすべての情報を含むことができません。
より強力な方法でモデルを指導する必要があります。
スパイラルの異なる部分が異なるタイプの画像を表すと仮定し、拡散モデルの訓練入力に対応するカテゴリも追加しましたが、実行時の適合度はそれほど高くなく、カテゴリに混乱が生じることがわかりました。

これは、モデルがスパイラルへの適合と対応するカテゴリへの適合という2つの情報を同時に学習しており、点をスパイラルに合わせる力が特定のカテゴリ方向への移動力を上回っているためです。
テキストと生成画像の一貫性を向上させる方法の一つに==Classifier-Free Guidance==があります。この方法は顕著な効果を示し、現在の画像・動画生成モデルの重要な部分となっています。動作方式は以下の通りです:
==最終予測 = プロンプトなし予測 + 指導強度 ×(プロンプトあり予測 - プロンプトなし予測)==
- $f(x, t)$:基本的な無条件ノイズ予測(テキストプロンプトを考慮しない)
- $f(x, t, prompt)$:テキストプロンプトありのノイズ予測
- $\alpha(f(x, t, prompt) - f(x, t))$:指導ベクトル、「プロンプトあり」と「プロンプトなし」の差異を表し、指導強度$\alpha$を乗じます

ネガティブプロンプトの手法もあります。希望する画面内容(ポジティブプロンプト)を与えるだけでなく、出現してほしくない内容をモデルに明確に伝えることもでき、動作方式はClassifier-Free Guidanceと類似しています:
- $f(x, t, prompt)$:ポジティブプロンプトで予測された結果、望む方向への生成を誘導
- $f(x, t, neg\ prompt)$:ネガティブプロンプトで予測された結果、望まない特徴を表現


