Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

52
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

拡散モデルに入門してみる

Last updated at Posted at 2023-06-08

はじめに

世間では生成AIのニュースで賑やかです。生成AIには、①GAN、②VAE、③Diffusion modelなどがあります。拡散モデル(Diffusion model)を知らなかったので調査しました。本記事では、③Diffusion modelについて簡単に紹介します。

image.png

What are Diffusion Models?

GANやVAEとなにがちがうの?

拡散モデルは、データからノイズ(潜在変数)への変換の逆変換と考えるところがGANやVAEと違います。拡散モデルでは、データに徐々にノイズを付加する過程(拡散過程)と、徐々にノイズを除去する過程(逆拡散過程)を考えます。拡散過程を仮定したことで、Encoderのパラメータの学習が不要になりました。

image.png

拡散モデルの長所と短所

長所

  • 2乗誤差最小化であるため最適化がシンプルである
  • 多様なデータの生成に強い
  • 理論的な背景が明確

短所

  • 生成が遅い
  • 高次元データの生成する際は、潜在変数は同じ次元であるため、次元が高くなる

変分下限(Evidence Lower Bound:ELBO)

まず、順方向の拡散過程を考えます。
x0を観測値とし、xTはガウシアンノイズとします。xtは、x0からxTの途中経過です。q(xt|xt1)は、前時刻xt1を用いてガウス分布でモデル化します。

q(xt|xt1)=N(xt;αtxt1,(1αt)I)
q(x1:T|x0)=Πt=1Tq(xt|xt1)

ここで、データに徐々にノイズを付加する過程(拡散過程)は、もはや確率分布qをパラメータϕでパラメータ化する必要がないので、Encoder側はモデル化も学習する必要もないです!

つぎに、逆方向の拡散過程を考えます。
ノイズを除去する過程(逆拡散過程)での条件付き確率pθ(xt1|xt)をどのように学習すればよいかがわかっていません。つまり、Decoder側はどのようにモデル化するか?どのように学習すればよいか?が問題として残されています。

表記を簡単にするために、p(x0:T)p(xT)を導入します。

p(x0:T)=p(xT)Πt=1Tpθ(xt1|xt)
p(xT)=N(xT;0,I)

image.png

対数尤度logp(x)が最大となるように、条件付き確率pθ(xt1|xt)のパラメータθを推定すればよさそうです。しかし、残念ながら対数尤度logp(x)を直接最大化することは困難です。そこで、対数尤度logp(x)のELBOL(x)を最大化することで、間接的に対数尤度logp(x)を最大化することを考えます。

logp(x)=logp(x0:T)dx1:T=logp(x0:T)q(x1:T|x0)q(x1:T|x0)dx1:T=logEq(x1:T|x0)[p(x0:T)q(x1:T|x0)]Eq(x1:T|x0)[logp(x0:T)q(x1:T|x0)]  (Jensen's Inequality)=L(x)

拡散モデルの学習

式変形の詳細は下記を参考にしてください。

VAEと同様にELBOL(x)を最大化することを考えます。ELBOL(x)を式変形すると、

L(x)=Eq(x1:T|x0)[logp(x0:T)q(x1:T|x0)]=Eq(x1|x0)[logpθ(x0|x1)]DKL(q(xT|x0)||p(xT))t=2TEq(xt|x0)[DKL(q(xt1|xt,x0)||pθ(xt1|xt))]

ELBOL(x)の第1項は計算でき、第2項は定数であり、第3項はdenoising matchingになっています。拡散モデルでは、第3項に着目し、パラメータθを推定します。

第3項をさらに式変形すると、

maxθDKL(q(xt1|xt,x0)||pθ(xt1|xt))=minθDKL(q(xt1|xt,x0)||pθ(xt1|xt))=minθ12σq2(1αt)21α¯t)αt[ϵ0ϵ^θ(xt,t)22]

数値実験で、係数を無視しても問題がないことがわかっているので、えいや!と無視してしまいます。

minθϵ0ϵ^θ(xt,t)22

推定したノイズϵ^θ(xt,t)とノイズϵ0が一致するように、ニューラルネットワークを学習することで、ELBOL(x)を最大化できます。間接的に、対数尤度logp(x)を最大化していることになります。

image.png

データの生成

image.png

参考文献

おわりに

ELBOL(x)の第1項を考えなくてよい理由がよくわからなかったです。

52
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

@momo10's pickup articles

momo10

@momo10(よしだ ひでき)

計測・制御・情報に興味があります。 数理工学の記事を書きます。

Linked from these articles

Comments

No comments

Let's comment your feelings that are more than good

52
48

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address