Score-based Generative Modeling by Diffusion Process


1. Intro to Generative Models

Examples of Generative Model:

  • (1) Autoencoder (AE) ( + VAE )

  • (2) GAN

  • (3) Normalizing Flows
  • (4) SCORE-BASED GENERATIVE MODELS


figure2


2. Limitations of Generative Models

a) Categories of Generative Models

[1] Likelihood-based : Autoencoder (AE) ( + VAE ), Normalizing Flows

[2] GAN-based : GAN


b) Limitations

[1] Likelihood-based

  • need specific architecture ( less flexible )
    • ex) Autoregressive model, Flow model
  • VAE: Surrogate loss ( ex. ELBO )


[2] GAN-based: unstable training


3. Generative Modeling by Estimating Gradients of the Data Distribution

(1) Score

Score

= (1) Gradient of (2) Log likelihood of Data

= \(\nabla_{\mathbf{x}} \log p(\mathbf{x})\).


주의할 점:

  • parameter에 대한 score가 아니다 : \(-\nabla_\theta \log (\mathcal{L}(\theta))\) ……… (X)
  • data에 대한 score 이다! : \(\nabla_{\mathbf{x}} \log p_{\text {data }}(\mathbf{x})\) ……….(O)


(2) Score Matching

전체 data에 대한 score를 계산은 불가능!

주어진 data에 대한 score를 계산하고, 전체 data에 대해 추정해야

\(\rightarrow\) need Score Estimator

( = 임의의 data에 대해 score를 추정하는 모델 )


Score Estimator, \(\mathbf{s}_\theta(x)\)

  • score estimator = score을 추정하는 모델

  • score matching = score estimator를 학습하는 방법

  • score matching의 objective function:

    • \(\mathcal{L}_\theta=\mathbb{E}_{p_{\text {data }}}\left\|\mathbf{s}_\theta(\mathbf{x})-\nabla_{\mathbf{x}} \log p_{\text {data }}(\mathbf{x})\right\|_2^2\).

      ( = (1) 실제 score & (2) 추정 score 간의 MSE )


Question)

\(p_{\text {data }}(\mathbf{x})\) 를 모르는데, (1) 실제 score는 어떻게 알지?


Answer)

위의 Loss function을, \(p_{\mathrm{data}}(\mathbf{x})\)에 의존하지 않도록 수식 유도 가능!

  • (before) \(\mathcal{L}_\theta=\mathbb{E}_{p_{\text {data }}}\left\|\mathbf{s}_\theta(\mathbf{x})-\nabla_{\mathbf{x}} \log p_{\text {data }}(\mathbf{x})\right\|_2^2\)
  • (after) \(\mathcal{L}_\theta=\mathbb{E}_{p_{\text {data }}(\mathbf{x})}\left[\operatorname{tr}\left(\nabla_{\mathbf{x}} \mathbf{s}_\theta(\mathbf{x})\right)+\frac{1}{2}\left\|\mathbf{s}_\theta(\mathbf{x})\right\|_2^2\right]\)


Problem?

문제점: \(\nabla_{\mathbf{x}} \mathbf{s}_\theta(\mathbf{x})\)에 대한 계산이 high-dim 상황에서 쉽지 않다!

해결책: DENOISING score matching


(3) Denoising Score Matching

(a) 아이디어: \(\operatorname{tr}\left(\nabla_{\mathbf{x}} \mathbf{s}_\theta(\mathbf{x})\right)\)에 대한 계산을 피하자!

(b) 핵심:

  • 원본 data에 대한 score를 계산 (X)
  • perturbed data에 대해 score 계산 (O)

(c) 방법:

  • 미리 정의된 noise 분포 \(q_\sigma(\tilde{\mathbf{x}} \mid \mathbf{x})\) 를 이용
  • perturbed data distn:
    • \(q_\sigma(\tilde{\mathbf{x}}) \triangleq \int q_\sigma(\tilde{\mathbf{x}} \mid \mathbf{x}) p_{d a t a}(\mathbf{x}) \mathrm{d} \mathbf{x}\).


Loss function:

  • (before) \(\mathcal{L}_\theta=\mathbb{E}_{p_{\text {data }}(\mathbf{x})}\left[\operatorname{tr}\left(\nabla_{\mathbf{x}} \mathbf{s}_\theta(\mathbf{x})\right)+\frac{1}{2}\left\|\mathbf{s}_\theta(\mathbf{x})\right\|_2^2\right]\)
  • (after) \(\mathcal{L}_\theta=\mathbb{E}_{q_\sigma(\tilde{\mathbf{x}} \mid \mathbf{x}) p_{\text {data }}}\left[\left\|\mathbf{s}_\theta(\tilde{\mathbf{x}})-\nabla_{\tilde{\mathbf{x}}} \log q_\sigma(\tilde{\mathbf{x}} \mid \mathbf{x})\right\|_2^2\right]\)


한 줄 요약 : 원본 data distn 대신 perturbed data distn 사용하자!!

( perturbed data distn에 대한 density는 직접 계산 가능하므로! )


(4) Sampling with Langevin Dynamics

Training & Inference ( = Generating )

  • Training : by Score Matching
  • Inference : by Sampling


최적 parameter 찾기 ( = SGD )

  • \(\theta_t=\theta_{t-1}-\eta \nabla_\theta \mathcal{L}(x ; \theta)\).


최적 data 찾기 ( = Sampling with Langevin Dynamics )

  • \(\tilde{\mathbf{x}}_t=\tilde{\mathbf{x}}_{t-1}+\frac{\epsilon}{2} \nabla_{\mathbf{x}} \log p\left(\tilde{\mathbf{x}}_{t-1}\right)+\sqrt{\epsilon} \mathbf{z}_t, \quad \text { where } \mathbf{z}_t \sim \mathcal{N}(0, I)\).
    • 앞서 학습한 score estimator를 사용해서 \(\nabla_{\mathbf{x}} \log p\left(\tilde{\mathbf{x}}_{t-1}\right)\)를 구함.
    • \(\mathbf{z}_t\) : add RANDOMNESS


(5) Denoising Score Matching with Langevin Dynamics (SMLD)

앞선 두 가지를 합친 것을 SMLD라고 한다!

  • (3) Denoising Score Matching ( = Training )
  • (4) Sampling with Langevin Dynamics ( = Inference )


Noise Conditional Score Network

  • based on SMLD

  • data를 다양한 noise로 변환

    & 변환된 data의 score를 추정!

  • score network vs. NOISE CONDITIONAL score network

    • score network
      • \(\mathbf{s}_\theta(\mathbf{x}) \approx \nabla_{\mathbf{x}} \log q(\mathbf{x})\).
    • NOISE CONDITIONAL score network
      • \(\mathbf{s}_\theta(\mathbf{x}, \sigma) \approx \nabla_{\mathbf{x}} \log q_\sigma(\mathbf{x})\).


4. Denoising Diffusion Probabilistic Modeling (DDPM)

SMLD ( Noise Conditional Score Network )

  • step 1) data distn을 noise distn으로 변환
  • step 2) noise distn으로부터 data 복원


DDPM : SMLD + Discrete Markov Chain

  • 데이터의 noise add / remove 과정이 Discrete Markov Chain으로 표현된다.

figure2


(1) Forward Process ( = ADD nosie )

ONE-step

  • \(p\left(\mathbf{x}_i \mid \mathbf{x}_{i-1}\right)=\mathcal{N}\left(\mathbf{x}_i ; \sqrt{1-\beta_i} \mathbf{x}_{x-i}, \beta_i \mathbf{I}\right)\).
    • \(\beta\) : 0.0001 to 0.02

MULTI-step

  • \(p_{\alpha_i}\left(\mathbf{x}_i \mid \mathbf{x}_0\right)=\mathcal{N}\left(\mathbf{x}_i ; \sqrt{\alpha_i} \mathbf{x}_0,\left(1-\alpha_i\right) \mathbf{I}\right), \quad \text { where } \alpha_i \triangleq \prod_{j=1}^i\left(1-\beta_j\right)\).


(2) Backward Process ( = REMOVE noise )

( forward: Gaussian \(\rightarrow\) backward: Gaussian )

ONE-step

  • \(p_\theta\left(\mathbf{x}_{i-1} \mid \mathbf{x}_i\right)=\mathcal{N}\left(\mathbf{x}_{i-1} ; \frac{1}{\sqrt{1-\beta_i}}\left(\mathbf{x}_i+\beta_i \mathbf{s}_\theta\left(\mathbf{x}_i, i\right)\right), \beta_i, \mathbf{I}\right)\),


아래는 같은 표현!

  • Sampling 한다
  • 새로운 데이터를 생성한다

  • Noise에서 시작해서 Backward Process를 여러 번 반복한다
    • \(\mathbf{x}_{i-1}=\frac{1}{\sqrt{1-\beta_i}}\left(\mathbf{x}_i+\beta_i \mathbf{s}_{\theta^*}\left(\mathbf{x}_i, i\right)\right)+\sqrt{\beta_i} \mathbf{z}_i, \quad i=N, N-1, \ldots, 1\).


Ancestral Sampling

= 미리 정의한 conditional distn로 구성된 \(\prod_{i=1}^N p_\theta\left(\mathbf{x}_{i-1} \mid \mathbf{x}_i\right)\)로 데이터를 샘플링


DDPM & SGLD

= Score-based Generative Model

( \(\because\) 둘 다 data의 score를 간접적으로 추정! )


5. Score-based Generative Modeling through SDEs

DDPM & SGLD의 핵심

  • data를 (여러 scale의) noise로 변환
  • noise로부터 data를 복원


Noise의 scale = forward step의 횟수에 따라 결정!

  • step \(\uparrow\) : noise \(\uparrow\)
  • step \(\downarrow\) : noise \(\downarrow\)


Question) What if noise scale이 무한히 정밀??

\(\rightarrow\) Stochastic Differential Equations (SDE) 관점

  • Noise를 time variable로 취급!
  • (1) SDE : data 분포에 noise를 조금씩 더함
  • (2) Reverse-time SDE : noise 분포에서 noise를 조금씩 제거함


(1) SDE

DE (Differential Equation, 미분방정식)

  • \(f\) 를 모를 때, \(\nabla f\) 와 \(f(a)\) 를 사용해서 \(f\)를 추정!

SDE (Stochastic Differential Equation, 확률 미분방정식)

  • DE + Stochastic Process


(2) Perturbing Data with SDEs

Notation

  • time variable: \(t \in[0, T]\)

  • 초기값 ( = data 분포 ) : \(\mathbf{x}(0) \sim p_0\)
  • 변환된 데이터 ( = noise 분포 ) : \(\mathbf{x}(T) \sim p_T\)

  • time variable에 대한 데이터 : \(\left\{\mathbf{x}(t)_{t=0}^T\right\}\)

    ( 즉, time variable \(t\)에 따라 data가 update된다! = Diffusion Process )

    • data가 변화하는 정도 = \(\mathrm{d} \mathbf{x}\)


Diffusion Process

\(\mathrm{d} \mathbf{x}=\mathbf{f}(\mathbf{x}, t) d t+g(t) \mathrm{d} \mathbf{w}\).

  • \(f(\cdot, t): \mathbb{R}^d \rightarrow \mathbb{R}^d\) : \(x(t)\) 의 drift coefficient
    • \(\mathbf{x}\) 에 따른 함수값
  • \(g(\cdot): \mathbb{R} \rightarrow \mathbb{R}\) : diffusion coefficient
    • 해당 함수값에 얼마큼 noise를 부여할 지
    • \(\mathbf{w}\) : Standard Winer Process ( for randomness )


(3) Generating Samples by Reversing the SDE

https://blog.si-analytics.ai/49