Forward Diffusion Process
Forward diffusion process は、clean data x 0 x_0 x 0 に少しずつ Gaussian noise を加えていく process です。最終的には、data distribution はほぼ standard Gaussian になります。
Markov chain
DDPM では、forward process は固定された Markov chain として定義されます。
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t \mid x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t}x_{t-1}, \beta_t I) q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I )
ここで、β t \beta_t β t は noise schedule です。各 step でどれだけ noise を加えるかを決めます。
α t = 1 − β t \alpha_t = 1 - \beta_t α t = 1 − β t 、α ˉ t = ∏ s = 1 t α s \bar{\alpha}_t = \prod_{s=1}^{t}\alpha_s α ˉ t = ∏ s = 1 t α s とすると、x 0 x_0 x 0 から任意の時刻 t t t の x t x_t x t を直接 sampling できます。
q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(x_t \mid x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t}x_0, (1 - \bar{\alpha}_t)I) q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I )
したがって、次のように書けます。
x t = α ˉ t x 0 + 1 − α ˉ t ϵ , ϵ ∼ N ( 0 , I ) x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}\epsilon, \qquad \epsilon \sim \mathcal{N}(0, I) x t = α ˉ t x 0 + 1 − α ˉ t ϵ , ϵ ∼ N ( 0 , I )
Langevin dynamics との関係
Diffusion process は、noise を加えながら distribution を変化させる process であり、stochastic gradient Langevin dynamics とも関係があります。Diffusion model の reverse process は、noise を取り除きながら score に沿って data distribution へ戻る process として解釈できます。
関連ページ