Diffision Model에은 아래 레퍼런스에 나온 블로그와 CVPR 2022의 Tutorial on Diffusion Model (링크)에 기반해서 간략하게 설명한다. 주로 DDPM (Denoising Diffusion Probabilistic Models) 모델 (링크) 에 근거하여 설명한다.
Diffusion Model은 원본 데이터에 단계별로 noise를 추가하는 과정인 forward diffusion process와,
최종 noise에서 단계적으로 noise를 제거하여 원래 데이터로 복원하는 reverse denoising process 과정으로 구성된다.
Forward Diffusion Process
순전파는 원본 이미지인 $x_0$에 노이즈를 추가해서 Noise $x_T$을 만드는 과정이다.
Time step $t-1$에서 다음 타임스텝 $t$로 Multivariate Normal을 활용해서 noise를 추가한다.
이때, $\sqrt{1 - \beta_t} x_{t-1}$이 mean이고, $\beta_t I$가 variance matrix다.
그리고 $q(x_1, ..., x_T | x_0) = q(x_{1:T} | x_0) = \prod_{t=1}^T q(x_t | x_{t-1})$ 로 표기할 수 있다.
이는, Markov Property에 의해서 직전 값만을 참조한다고 정리할 수 있기 때문이다.
이때, $\bar{\alpha_t} = \prod_{s=1}^t (1 - \beta_s)$로 Diffusion Kernel을 새로 정의하면,
$q(x_t | x_0)$은 mean이 $\sqrt{\bar{\alpha_t}} $이고, variance가 $(1 - \bar{\alpha_t} ) I$ 행렬인 Normal 분포에서 생성된 노이즈로 정리할 수 있다.
따라서 타임스텝 $t$에서의 노이즈가 추가된 $x$인 $x_t$ = $\sqrt{(\bar{\alpha_t}} x_0 + \sqrt{(1 - \bar{\alpha_t} ) } \epsilon$으로 표현할 수 있다.
그리고 $\epsilon \sim N(0, I)$ (multivariate Gaussian).


Figure 4와 Figure 5은 위 수식을 더 자세히 설명한 슬라이드다. 위에서 언급된 $\beta_t$를 작은 상수값으로, 매 스텝마다 다른 값을 가질 수도 있지만, 학습 가능한 값이 아닌 고정된 상수다. 즉 매 스텝마다 어떤 값을 갖는다고 정해지면 그 값을 모든 학습 step 혹은 학습 epoch마다 동일하다.
Reverse Donoising Process

이 단계에서는 Noise $x_T$에서 원본 이미지인 $x_0$으로 복원한다.
$p_{\theta} (x_{t-1} | x_t )$는 학습 가능한 네트워크로 정규 분포의 mean 값이다.
Deonising Autoencoder나 U-net을 사용한다. 이때 $\theta$가 네트워크의 학습 가능한 파라미터다.
Autoencoder에 기반한 모델의 경우 ELBO를 loss 함수로 설정하고 최대화한다.

$L_T$는 $\theta$에 의존하지 않고, $L_0$은 그 값이 작으므로 생략한다.


그렇게 정리하면 Figure 8과 9의 과정을 거쳐서 $L_{\text{simple}}$의 형태로 정리할 수 있다.
이때 위 $\epsilon$은 선택된 타임 스텝 $t$에서, 원본 데이터 $x_0$에 추가하는 실제 노이즈다.
$\epsilon_\theta$는 주어진 $t, x_t, \epsilon$ 아래에서 뉴럴 네트워크로 생성한 노이즈로, 실제 노이즈 $\epsilon$를 추론하여 같은 값을 제거하여 원본으로 되돌리게 된다. 따라서 $\epsilon - \epsilon_\theta (x_t, \epsilon, t)$의 차이를 최소화하려고 한다. 그 의미가 바로 위에서 정의한 로스 $L_{\text{simple}}$다.
Diffusion Parameters

위 Figure 10에서 제시된 $\beta_t$는 forward diffusion을, $\sigma_t^2$는 reverse denoising을 제어하는 파라미터들이다.

노이즈가 추가된 timestep $t$에서의 이미지 $x_t$에 푸리에 트랜스폼을 취한 결과는 위 Figure 11과 같다.
$\bar{\alpha_t}$의 값이 1에 가까울수록 noise의 비중이 작아서 low frequency 위주다.
따라서 상대적으로 디테일을 유지한다.
반대로 $\bar{\alpha_t}$의 값이 0에 가까울수록, 즉 noise에 더 많은 비중일수록 high frequency를 지니며,
디테일이 노이즈에 침식된다.
고주파 영역의 디테일이 더 빨리 망가지고, 저주파에 해당하는 경계나 윤곽은 서서히 망가진다.
Content-Detail Tradeoff

Timestep $T$에 가까운 초기 노이즈 데이터일 수록 노이즈가 많기 때문에 큰 레벨의 윤곽을 복원하고, 뒤의 원본인 timestep 0에 가까울수록 디테일한 부분을 복원하도록 timestep 별 weights를 최적화해야한다.
Loss에 동일한 가중치를 부여하는 Simple Loss
원본에 가까울 수록 ($t$가 작을수록) 더 많은 가중치를 부여하는 Variational Lower Bound, VLB를 활용한 Loss
Min-SNR (Signal-Noise Ratio) ($\gamma$) Weighting Strategy
등의 방법들이 제시되어 있다.
튜토리얼의 뒷부분에 미분 방정식이나 Flow 모델과 연계된 항목도 있는데 나중에 공부해봐야겠다.
References:
https://velog.io/@js43o/Diffusion-Model-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-with-DDPM
https://cvpr2022-tutorial-diffusion-models.github.io/
https://github.com/AUTOMATIC1111/stable-diffusion-webui
https://developer.nvidia.com/blog/improving-diffusion-models-as-an-alternative-to-gans-part-1/
https://kyujinpy.tistory.com/123
https://deepseow.tistory.com/37
'Computer Vision > Generative Models' 카테고리의 다른 글
| Stable Diffusion (2022) 논문 리뷰 (1) | 2025.07.02 |
|---|---|
| VAE 정리 (1) | 2025.07.02 |
| Introduction to Generative Models (0) | 2024.02.26 |