🥑

Diffusion Modelを理解するための4つのポイント

2024/07/12に公開

Diffusion model(拡散モデル、Diffusionモデル、DDPM)について学んでいきましょう。
Deep Learningの世界では、音声生成や画像生成などの様々な分野で使われている生成モデルです。
これらがどのように機能し、どのように学習されるのかを理解するために、段階的に4つのポイントを説明します。

1. Diffusion modelは物理学の非平衡熱力学から着想を得た

例えば、水の入ったグラスに絵の具を垂らしたら、徐々に広がっていき、水と完全に混ざった平衡状態に達するまで水中で拡散します。

この拡散プロセスを逆転させ、元の水の入ったグラスと絵の具に戻します。

現実の物理世界では不可能ですが、イメージとしてはこのように拡散した状態から元に戻すことができるモデルを学習します。

つまり、最初の絵の具の塊には何らかの情報が含まれており、拡散していくにつれて徐々に情報が失われます。画像生成AIでは、絵の具の塊は鮮明な画像にあたり、拡散した状態から逆方向に働かせることは、適切な画像レベルに復元することと同じです。

2. 拡散プロセスは一つ前の状態にのみ依存する

Diffusion Modelはノイズを追加することで拡散プロセスを複製し、後でこのノイズプロセスを逆方向に学習することで機能します。
ここで、ノイズはマルコフ連鎖にしたがって適用されます。

マルコフ連鎖とは何でしょうか?
マルコフ連鎖とは、現在の時点 t が前の時点 t-1 にのみ依存するイベントの連鎖です。例えば、すごろくでサイコロを振っていき、どのように進んでいくかはマルコフ連鎖と言えます。

このように拡散プロセスもシンプルに考えることで、ノイズを追加したものを後から反転するのが扱いやすくなります。

画像生成AIで考えると、各時点で画像がノイズだけになるまで少しのノイズを追加し、後からこれを反転する方法を学習します。
これにより、ノイズのみを与えられた画像から鮮明な画像を生成することができます。

3. 画像にノイズを追加する方法

ノイズには様々なものがありますが、Diffusion Modelに追加されるノイズはガウシアンノイズと呼ばれます。ガウシアンノイズとは、ガウス分布(正規分布)に従って変動するノイズです。
分布の位置と幅は変化する可能性がありますが、分布の形は同じままです。

画像にガウシアンノイズを付与することは、画像のピクセル値と確率分布の場所をわずかに変更することを意味します。
このようにガウシアンノイズは、その画像のピクセルレベルでどのようにノイズを付与するかが影響するため、マルコフ連鎖が適用できます。単なるランダムノイズではダメだったわけです。

この方法で画像にノイズを追加し、単なるノイズになるまで繰り返します。少しのノイズが何百回、何千回と繰り返されるため、最終的には数百回から数千回の長いマルコフ連鎖になります。

4. ノイズの反転または除去する方法

拡散モデルの元の画像が似るように、これらのピクセルの値を復元することを意味します。
これはニューラルネットワークを使用します。

ノイズを付与した状態から元の状態を見つけることを目標にします。
まず画像をCNNに入力し、前のステップからより鮮明な画像を生成するように依頼します。

元の論文で使用されているCNNの種類は、U-Netと呼ばれます。特徴マップの解像度を段階的に下げ、その後半分を過ぎたら徐々に解像度を上げることで処理します。

この方法でサンプリングして、元の次元に復元します。

参考

https://tech-savvy30.tistory.com/9

https://sushant-kumar.com/blog/ddpm-denoising-diffusion-probabilistic-models

https://epochabuse.com/gaussian-noise/

https://betterprogramming.pub/diffusion-models-ddpms-ddims-and-classifier-free-guidance-e07b297b2869

Discussion