Diffusionモデルの解説記事をChatGPTで理解してみた

AIの論文を読みたーい!!

なんか、みんな専門用語マシマシで話してるけど、『わけわかんねえよ!!チクショー!!』ってそこのあなた!!

アホみたいに分かりますその気持ち!!!(アホ面)

ってなわけで今回は頑張って「ど素人の文系野郎」代表の私がAI関連の論文を理解してみようって企画になりまっす。

専門の方は生暖かい目で蔑んでくれると喜びます(ドM)。

ーーーーーーーーーーーーーーーーーーーーー

目標

AI関連の論文の内容を数式を含めて理解する

ーーーーーーーーーーーーーーーーーーーーー

用意するもの

・AI関連の論文or解説ページ

何でもいいです。

今回は画像生成AIで重要な役割を果たしていると言われているDiffusionモデルについて解説したサイトを理解していきます(論文じゃないんかーい)


正直、数式と文章をコピペ出来るサイトとか論文なら何でもいいです。(画像から文字抽出してもいいけど、面倒だし。)
→結局、画像から文字抽出しました。

AI関連の情報が集まっているarxivに載っている論文は基本的にコピペできるので安心ですね。

適当にTwitterとかから「この論文アツい!!!」って言われているやつを持ってきましょう。


・ChatGPT

はい、いつものやつです。

まあ多分何でもいいです。好きなLLMChatGPTとか、Bardとか,
LLaMAみたいな、お話しできるAIのこと)を使いましょう。

※きつそうな時はプロンプトをDeepLで英語化して突っ込みましょう

今回はGPT4でやります。

最近は初代の鈍足天才GPT4超高速ポンコツGPT4間の性能に落ち着いている気がします。

…何?API?素人はそんな崇高なモノ使いません。

ChatGPT登録した時点でドヤ顔もんですよ。

「俺AIのことわかってんだぜ」って。(言ってて自分の胸が苦しい。)

そもそも「自分でアプリ作ったら?」を無視した企画ですからね。

ーーーーーーーーーーーーーーーーーーーー

やり方

1.とりあえず、コピペして、解説をお願いする。

2.わかんないところを再度聞く

3.何となく分かったら自分を褒めて満足する

4.1~3を気が済むまで繰り返す。

5.飽きたら辞める

ーーーーーーーーーーーーーーーーーーーーー

やってみた


1.とりあえずコピペ

What are Diffusion Models?

Diffusion modelはとても新しいタイプの生成モデルで、どのような複雑なデータ分布でも学習することができ、なおかつその分布を解析的に評価することができます。
近年ではDiffusion modelは高精度な画像を生成でき、GANでSOTAなモデルより高い精度を達成しています。

これまでGANVAEFlowといった生成モデルについての記事を書いてきました。どれも高いクオリティの画像を生成できますが、一方でそれぞれ個々の問題を抱えていました。GANは敵対的学習の構造そのものに、学習の不安定さと多様性の欠如があります。VAEは代理的に用いているロス関数に依存しています。Flowでは、逆変換を行えるモデル構造をしていなければいけません。

Diffusion Modelは非平衡熱力学から発想を得ています。マルコフ連鎖を用いて各diffusion stepで少しずつ画像などの実データにランダムノイズを足していきます。モデルは反対にノイズから少しずつ実データに近づけていくように学習します。VAEやFlowとは異なり、学習はすべて固定されて行われ、偏在変数は元データと同じ分だけの大きさを持ちます。

https://zenn.dev/nakky/articles/09fb1804001ff8より引用


解説をお願いする

プロンプト:
これから理解したい記事を小分けにして渡していきます中学生にもわかるように解説していってください。

What are Diffusion Models? 本記事はWhat are diffusion Models?を許可を得て翻訳したものです。Diffusion Modelの日本語の記事がまったくなかったので勉強がてら、翻訳してみました。誤訳や誤植などありましたらお知らせください。 Diffusion modelはとても新しいタイプの生成モデルで、どのような複雑なデータ分布でも学習することができ、なおかつその分布を解析的に評価することができます。 近年ではDiffusion modelは高精度な画像を生成でき、GANでSOTAなモデルより高い精度を達成しています。 これまでGAN、VAE、Flowといった生成モデルについての記事を書いてきました。どれも高いクオリティの画像を生成できますが、一方でそれぞれ個々の問題を抱えていました。GANは敵対的学習の構造そのものに、学習の不安定さと多様性の欠如があります。VAEは代理的に用いているロス関数に依存しています。Flowでは、逆変換を行えるモデル構造をしていなければいけません。 Diffusion Modelは非平衡熱力学から発想を得ています。マルコフ連鎖を用いて各diffusion stepで少しずつ画像などの実データにランダムノイズを足していきます。モデルは反対にノイズから少しずつ実データに近づけていくように学習します。VAEやFlowとは異なり、学習はすべて固定されて行われ、偏在変数は元データと同じ分だけの大きさを持ちます。

回答が返ってくる

いつもありがとう!!

回答:
「Diffusion Models(拡散モデル)」とは、新しいタイプの生成モデル
のことを指します。生成モデルとは、データの分布を学習し、新しいデータを生成することができるモデルのことを指します。例えば、ある種類の画像の集合(例:猫の画像)から学習し、新たな猫の画像を生成することができます。

拡散モデルは、どんなに複雑なデータ分布でも学習することができ、その分布を解析的に評価することが可能です。これは、高精度な画像生成に特に有用で、最先端のGAN(敵対的生成ネットワーク)モデルよりも高い精度を達成しています。

これまでに、GAN、VAE(変分自己符号化器)、Flowといった生成モデルが開発されてきました。これらのモデルは高品質な画像を生成することができますが、それぞれに問題点があります。例えば、GANは学習が不安定で多様性に欠けることがあり、VAEは使用する損失関数に依存しています。また、Flowは逆変換可能なモデル構造を必要とします。

一方、拡散モデルは非平衡熱力学からインスピレーションを得ています。これは、マルコフ連鎖(一つの状態が次の状態にランダムに遷移する過程)を用いて、各拡散ステップで少しずつ実データ(例えば画像)にランダムノイズを加えていく方法です。そして、モデルはそのノイズから少しずつ実データに近づけていくように学習します。VAEやFlowとは異なり、学習はすべて固定されて行われ、潜在変数(データの抽象的な表現)は元データと同じ大きさを持ちます。

中学生にわかりやすく説明すると、拡散モデルは、まるで一枚の真っ白なキャンバスに少しずつ色を加えていき、最終的には美しい絵を描くようなものです。このモデルは、どんなに複雑な絵でも描くことができ、その絵がどのように描かれたか(つまり、データの分布)を評価することができます。これは、他の方法(GANやVAEなど)よりも優れていると言われています。

?????????


2.わかんないところを再度聞く

いやー分かんないですねえ!!!

意味が分からん!!ってなってるでしょうから、素直に聞きましょう。

プロンプト:
VAEは使用する損失関数に依存しています。また、Flowは逆変換可能なモデル構造を必要とします。

どうゆうこと?

わからなかった文章コピペ&「どうゆうこと?」でOK


回答

回答:
VAE(変分自己符号化器)とFlow(正規化フロー)は、生成モデルの一種で、それぞれ特有の特性と制約があります。

VAE(変分自己符号化器): VAEはデータの潜在的な特性を学習し、その特性から新しいデータを生成することができます。しかし、VAEの学習は特定の損失関数(ロス関数)に依存します。この損失関数は、元のデータと生成されたデータとの間の差(再構成誤差)と、潜在空間の分布が正規分布に近づくようにする正則化項(KLダイバージェンス)の二つから成り立っています。この損失関数の形状や重み付けによって、VAEの生成結果や学習の安定性が大きく影響を受けます。

Flow(正規化フロー): Flowは、データの複雑な分布をシンプルな分布(例えば正規分布)へと変換するモデルです。この変換は、逆変換も可能である必要があります。つまり、シンプルな分布からサンプリングしたデータを、元の複雑な分布に従うデータへと変換できる必要があります。この逆変換可能な条件は、モデルの設計や学習に制約をもたらします。

中学生にわかりやすく説明すると、VAEは「絵を描くためのルール(損失関数)」に従って絵を描くロボットのようなものです。ルールが変わると、描かれる絵も変わります。一方、Flowは「絵の描き方を逆にたどることができる」ロボットのようなものです。つまり、絵を見て元の白紙の状態に戻すことができます。しかし、この逆変換ができるようにするためには、特定の制約が必要となります。

ほーん!

だいぶ柔らかくなりましたね。これなら咀嚼できそうです。


3.何となく分かったら自分を褒める

褒めましょう。自分スゲー!!!!!!

4.1~3を気が済むまで繰り返す。

分からん部分は各々掘り下げて行きましょう。


数式が入っている文章でもう一回だけデモします。

Forward diffusion process

まずforward diffusion stepについて説明しましょう。ここでは実データ�xを実データ分布�qからサンプリングします。つまり�0∼�(�)x0​∼q(x)です。diffusion stepは�T回行うとします。すべてのステップで�0x0​に小さなガウシアンノイズを足していってノイズに近づいていく�1,...,��x1​,...,xT​を作成します。ステップの幅は{��∈(0,1)}�=1�{βt​∈(0,1)}t=1t​でコントロールします。

�(��∣��−1)=�(��;1−����−1,���)�(�1:�∣�0)=∏�=1��(��∣��−1)q(xt​∣xt−1​)=N(xt​;1−βt​​xt−1​,βt​I)q(x1:T​∣x0​)=t=1∏T​q(xt​∣xt−1​)

実データ�0x0​はステップが進むごとに徐々に自身の特徴を失っていきます。�→∞T→∞であるとき��xT​はガウシアンノイズそのものになります。

…..は?

文字化けしとるやないかーーーい!!!!!!!


緊急:画像から数式をLaTeX化する


これではいくら優秀なChatGPTでも混乱してしまうので、画像から数式をLaTeXのコード化(数式を文字列で示したもの)します。

調べたところ『Mathpix Snip』ってのがあったので、これを使って行きましょう。

具体的なやり方は以下を参照してください。

(補足)
※メールアドレスの登録が必要(無料で使えます)

※スマホでやるならアプリでOK(林檎、アンドロイド問わず)
→「Mathpix Snip」で検索しよう

※Windows版で入れた方で、インストールして『起動したのに出てこねぇ』じゃんコノヤロー!!!!って発狂した人はいませんか?(私です)

右下の『^』マークから出てきます。

『^』マークを押す
あったーーー!

筆者は、めでたく2時間無駄にしたので、お役立てください。


1.画像を読み込む

PCアプリ版は起動後、左上の『PC画面ボタン』を押してマウスで範囲選択しよう。
アプリ版は普通にスクショ後、画面をアップロードしよう!

https://zenn.dev/nakky/articles/09fb1804001ff8より引用


2.変換されたコードをコピーする

日本語も認識してくれるのサイコー!!

画像下の青い文字列をコピーします。(クリックでコピーされる)


3.ChatGPTに投げる

守って!ChatGPT!

プロンプト:
以下の文章について中学生にもわかるように教えてください。
数式はLaTeXのコード化されています。

Forward diffusion process まずforward diffusion stepについて説明しましょう。ここでは実データ $x$ を実デー夕分布 $q$ からサ ンプリングします。つまり $\mathbf{x}_0 \sim q(\mathbf{x})$ です。diffusion stepは $T$ 回行うとします。すべてのステッ プで $x_0$ にはなガウシアンノイズを足していつてノイズに近づいていく $x_1, \ldots, x_T$ を作成します。 ステップの幅は $\left\{\beta_t \in(0,1)\right\}_{t=1}^t$ でコントロールします。 $$ q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{1-\beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I}\right) \quad q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_0\right)=\prod_{t=1}^T q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right) $$ 実データ $x_0$ はステップが進むごとに徐々に自身の特徵を失っていきます。 $T \rightarrow \infty$ であるとき $x_T$ はガウシアンノイズそのものになります。

文明の利器ですなぁ

回答

完全にコードを理解してくれてますね

回答:

この文章は、順方向の拡散過程(Forward diffusion process)について説明しています。この過程では、元のデータに少しずつノイズを加えていくことで、データがその特徴を失い、最終的にはランダムなノイズになるまで変化します。

まず、元のデータ

0
x
0

を実データ分布

(

)
q(x) からサンプリングします。つまり、最初のデータ

0
x
(中略)
はガウスノイズそのものになります。

中学生にわかりやすく説明すると、順方向の拡散過程は「絵に少しずつ消しゴムをかけていく」過程と同じです。最初ははっきりとした絵(

0
x
0

)がありますが、消しゴムをかけるたびに絵の一部が消えていき、最終的には全てが消えて白紙(ガウスノイズ)になります。そして、消しゴムをかける力(ノイズの大きさ)は、各ステップで調整することができます。

文字化け男

4.数式についても聞いてみる

プロンプト:
数式の解説をお願いできる?

オラも数式の世界に混ぜて~!

回答

キター!

回答:
もちろんです。この数式は、順方向の拡散過程(Forward diffusion process)における各ステップでのデータの変化を表しています。


(






(中略)

の分布の積で表されます。つまり、全てのステップでのデータの分布は、前のステップのデータからのノイズの加え方の積で決まります。

中学生にわかりやすく説明すると、これらの数式は「絵に消しゴムをかける力(ノイズの大きさ)」と「消しゴムをかけた後の絵(データの分布)」の関係を表しています。そして、全てのステップでの絵の変化は、各ステップでの消しゴムのかけ方の積で決まります。

はい、文字が化け化けです
詳しく見たい人は上の画像見てね~


5.もう少し嚙み砕いてもらう

プロンプト:
数式の表現方法が理解できていないので、|の意味などについて教えてください。

数学記号ってかっこいいよねぇ

回答:

はい、神、神、ゴッド、ゴッド。


6.気が済むまで遊んでいこう!!!

数式も理解できるようになったので、後は自分の気の向くままに遊んで行きましょう!!

これであなたも天才だ!!!


まとめ

著作権の引用範囲の問題もあるので、今回はこの辺にしときます!!!

皆さんも是非遊んでみてくださいね~

見えなかった景色が見えるようになるのはとても心地いいものです。


参考文献


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?