こんにちは、技術開発の三浦です。
最近色々なところでテキストから画像を生成するAIが話題になっています。色々なAIが発表されていますが、その中で私にとって、特に印象に残っているのが"Stable Diffusion"です。この技術の中核にあるのが"Latent Diffusion Model"で、このベースになっているのが"Diffusion Probablistic Model(Diffusion Model)"です。"Diffusion Model"は2015年の論文に登場しているのですが、2020年の論文でシンプルな損失関数による学習手法が提案され、CIFAR10データセットにおける画像生成の精度指標(FID)でStyleGAN2を上回り、LSUN 256x256データセットではProgressiveGANと同じくらい高品質な画像を生成することに成功しています。
今回"Diffusion Model"について調べるため、2020年に発表された「Denoising Diffusion Models」という論文を調べてみました。Tensorflowの実装がGithubに上がっており、それと比較しながらどんな技術なのか調べて、分かったことをまとめてみたいと思います。
今回読んだ論文
- Denoising Diffusion Probabilistic Models
- Jonathan Ho, Ajay Jain, Pieter Abbeel
- Submitted on 19 Jun 2020 (v1), last revised 16 Dec 2020
- https://arxiv.org/abs/2006.11239
Github
Diffusion Modelとは
"Diffusion Model"はデータの分布に潜在変数の存在を仮定した生成モデルです。潜在変数の間にはマルコフ連鎖の関係が仮定されていて、 を観測データ、 を潜在変数とすると、以下のような関係が仮定されています。
上の式の は"Diffusion Model"において、"reverse process"と呼ばれています。標準正規分布に従うノイズ からスタートし、現在の潜在変数の値と 時点 をパラメータで決まる関数(モデル)に入力することによって得られる平均と分散で定まる正規分布に従い、次の潜在変数が生成される。これを と繰り返すことで観測データが生成されることを表しています。分散はモデルに推計させることも出来ますが、定数にして固定してしまっても問題がないようです。論文においてもは定数にして固定してしまい、平均を推計対象として取り扱っています。
潜在変数の数はハイパーパラメータです。ある程度大きくする必要があるようで論文の中では が設定されていました。
"Diffusion Model"ではさらに逆向きのマルコフ連鎖の関係が仮定されています。こちらは各潜在変数は観測データ から徐々に正規分布に従うノイズを加えて生成されることを表しています。
は"diffusion process"または"forward process"と呼ばれています。 はごとにあらかじめ設定しておく定数です。が小さい時は小さく取り、に近づくほど大きくなるようにします。論文では, が設定されていました。
これらをまとめると、論文に掲載されている以下の図になります。
"diffusion"は"拡散"や"発散"を意味しますが、元の画像に徐々にノイズを加え、最終的に標準正規分布に従うノイズになる様子を表現しているようです。
損失関数
"Diffusion Model"はこのようなマルコフ連鎖で定義されたモデルですが、このモデルを決定するために先ほどの"reverse process"の式に出てきた を推計する必要があります。
まず"diffusion process"に沿って考えると、条件付き分布はと、を使って計算できるによって以下の様に表すことが出来ます。
このことから、を使ってと表すことが出来ます。一方"reverse process"に沿って考えた場合、正規分布の平均 は以下のような式を満たす必要があります。
はからを推計する関数(モデル)です。言い換えるとをこの条件を満たすように学習できれば、欲しかったを得ることが出来ます。
このことを用いれば損失関数は以下のようなシンプルな形になることが述べられています。
はの一様分布に従う変数として捉えています。
学習アルゴリズムと画像生成アルゴリズム
先ほどの損失関数を最小化する をニューラルネットワークで推計出来るようにすることが学習の目標になります。を推計するネットワークとして"U-Net"というネットワーク構造が使われています。学習アルゴリズム、画像生成アルゴリズムは以下の様になります。
画像生成アルゴリズムの方は、標準正規分布のノイズに対して徐々にノイズを取り除いていき、画像を生成する流れになっています。
2つの画像の特徴を持った画像の生成
"Diffusion Model"では、画像の生成過程が細かく分かれています。そのため画像がどのように生成されるのかを追跡することが出来ますし、どこかのタイミングで人為的に介入することも出来ます。たとえば のどこかのタイミングで意図的にデータを挿入したら、最終的にどのような画像が生成されるのでしょうか。
論文では"diffusion process"によって画像を潜在空間に写すことが出来ると捉え、潜在空間上で重みを付けて合成したデータを"reverse process"によって元の画像空間に戻した時の画像の評価を行っています。単純に2つの画像を画像空間上で合成するとちぐはぐな画像になってしまいますが、潜在空間上で合成し、"reverse process"を通じて画像空間に写すことでノイズが除去され、自然な合成画像が生成出来ることを示しています。
こういう結果を見ると、「じゃあこんな操作を加えたらどうなるんだろう」とワクワクします。おそらくこの辺りの"人がコントロールしやすい"特徴が、"Diffusion Model"の面白いところなのだと思います。
まとめ
今回は"Denoising Diffusion Probabilistic Models"という論文を読んで、最近画像生成の領域で高い精度を上げ、テキストから画像を生成するAIにも活用されている"Diffusion Model"について調べてみたことをまとめてみました。とても面白い技術だな、と思いました。今度は自分でも動かしてみて、どんな画像がどのような過程で生成されるのかを実験して確かめてみたいと思います!