추론 속도가 매우 느리지만, 현존하는 생성 모델 중 가장 높은 수준의 데이터 품질을 보여준다. 아래 수식을 보면 알겠지만 forward process는 markov chain 형태이다.
Diffusion Model은 데이터에 점진적으로 노이즈를 추가하는 Forward Process와 그 노이즈를 점진적으로 제거하여 데이터를 복원하는 Reverse Process를 학습하는 생성 모델이다.
Forward Process는 실제 데이터 $x_0$에 점진적으로 Gaussian Noise를 추가하여 데이터가 Noise로 변해가는 수학적 경로를 제공한다.
훈련 과정
$x_0 → x_1 → \cdots → x_T$
모델
$\displaystyle q(x_t|x_{t-1}) = N(x_t; \sqrt{1-\beta_t}x_{t-1}, \beta_t I)$
Noise Schedule은 각 step에서 추가되는 noise의 크기이다. 이를 활용하여 Forward Process를 매번 순차적으로 계산할 필요 없이 $x_0$에서 바로 $x_t$를 만들 수 있다.
$\alpha_t = 1-\beta_t$
$\displaystyle \bar{\alpha}t = \prod{s=1}^t \alpha_s$
$\displaystyle \therefore x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon$
Reverse Process는 Noise 상태에서 점진적으로 Noise를 제거하며 원본 데이터 분포에 속하는 새로운 데이터를 생성한다.
생성 과정
$x_T → x_{T-1} → \cdots → x_0$
모델
$p_{\theta}(x_{t-1}|x_t) = N(x_{t-1}; \mu_{\theta}(x_t, t), \Sigma_{\theta}(x_t, t))$
Diffusion Model의 Loss Function은 다양하게 존재하지만, 가장 간단한 Loss Function은 Noise에 대한 MSE Loss이다.