Classifier-Free Diffusion Guidance (NeurIPS 2021)

“Classifier-Free Diffusion Guidance”는 조건부 생성(conditional generation) Diffusion Model을 개선한 논문입니다. 이 논문이 발표되기 이전, 특정 클래스의 이미지를 생성하도록 모델을 유도하는 일반적인 방법은 별도의 이미지 분류기(Classifier)를 활용하는 ‘Classifier Guidance’였습니다. 이 방식은 효과적이었으나, Diffusion Model 외에 노이즈 낀 이미지를 분류하는 모델을 추가로 학습해야 하는 복잡한 파이프라인이 필요했습니다.

Jonothan Ho 그리고 Tim Salimans는 이러한 문제를 해결하기 위해 분류기 없이도 동일한 guidance 효과를 얻는 방법을 제안합니다. 이번 글에서는 이 논문이 제안하는 방법과 그 수학적 원리에 대해 분석을 해보고자 합니다.


기존 Classifer Guided Diffusion Model에 대한 문제 제기

이 논문이 등장하기 전, 디퓨전 모델이 특정 클래스(예: 고양이)의 이미지를 더 잘 생성하도록 만드는 대표적인 방법은 Classifier Guidance였습니다. 이름 그대로, 잘 훈련된 별도의 이미지 분류기(Classifier)를 가이드로 활용하는 방식이었습니다. 생성 과정 중간에 있는 노이즈 낀 이미지를 분류기에게 보여주고, “이 이미지가 ‘고양이’처럼 보이려면 어느 방향으로 개선해야 할까?”라고 물어보는 것과 같습니다. 분류기는 이미지의 특정 부분을 수정하면 ‘고양이’일 확률이 높아진다고 알려주고, 디퓨전 모델은 이 조언을 참고하여 이미지를 생성합니다.

이 방법은 효과적이었지만 학습 파이프라인이 복잡하고 학습하기 어렵다고 저자는 지적합니다. 먼저 분류기를 사용하기 위해서는 디퓨전 모델 외에, 노이즈 낀 이미지를 잘 분류하는 분류기를 별도로 학습해야 했습니다. 또한 이 분류기는 깨끗한 이미지가 아닌, 생성 과정 중의 노이즈 낀 이미지를 보고 판단해야 하므로, 일반적인 사전 학습된 분류기를 그대로 사용할 수 없었습니다.

Classifier-Free Diffusion Guidance는 바로 이 문제를 해결하기 위해 “별도의 분류기 없이 분류기 guidance의 효과를 얻을 수는 없을까?”라는 질문에서 출발합니다. 그리고 이 논문은 디퓨전 모델 자기 자신의 정보를 활용하여 스스로를 안내(guide)하는 아이디어를 제시합니다.


배경지식: Diffusion Model 작동 방식

논문을 이해하기 위해서는 Diffusion Model에 대한 이해가 선행되어야만 합니다. 처음 Denoising Diffusion Probailistic Models (DDPM)에서 소개한 바에 의하면, 2가지 주요 process에 의해 모델이 학습됩니다.

1. 순방향 프로세스 (Forward Process): 이미지에 노이즈 추가하기

디퓨전 모델의 학습은 원본 이미지 $x$에 점진적으로 노이즈를 추가하는 순방향 프로세스에서 시작합니다. 이 과정은 $z_{\lambda}$라는 노이즈가 섞인 이미지를 만들어냅니다. 여기서 $\lambda$는 노이즈 레벨을 나타내며, 신호 대 잡음비(Signal-to-Noise Ratio, SNR)의 로그 값으로 해석됩니다. $\lambda$가 작을수록 노이즈가 많고(SNR이 낮음), 클수록 원본에 가깝습니다(SNR이 높음).

alt text

시간(또는 노이즈 레벨) $\lambda$에서의 노이즈 낀 이미지 $z_{\lambda}$는 다음과 같은 정규분포를 따릅니다.

\[q(z_{\lambda} \mid x) = \mathcal{N}(\alpha_{\lambda}x, \sigma_{\lambda}^{2}I)\]

여기서 각 항의 의미는 다음과 같습니다.

  • $z_{\lambda}$: 노이즈 레벨 $\lambda$에서의 이미지
  • $x$: 원본 이미지
  • $\alpha_{\lambda}$: 신호(원본 이미지)의 스케일. $\alpha_{\lambda}^{2} = 1 / (1+e^{-\lambda})$로 정의되며, $\lambda$가 커질수록 1에 가까워집니다.
  • $\sigma_{\lambda}$: 노이즈의 스케일. $\sigma_{\lambda}^{2} = 1 - \alpha_{\lambda}^{2}$로 정의되며, $\lambda$가 커질수록 0에 가까워집니다.

이 식은 $z_{\lambda} = \alpha_{\lambda}x + \sigma_{\lambda}\epsilon$ (단, $\epsilon \sim \mathcal{N}(0, I)$) 형태로 표현할 수 있습니다. 즉, 원본 이미지 $x$의 신호를 약간 줄이고($\alpha_{\lambda}x$) 거기에 표준정규분포 노이즈 $\epsilon$을 더해($\sigma_{\lambda}\epsilon$) 노이즈 낀 이미지 $z_{\lambda}$를 만드는 과정입니다.

[참고] 소량의 노이즈를 추가하는 Forward (Diffusion) 과정 Forward process는 마르코프 연쇄(Markov Process)의 성질을 가지며, 현재 상태 $z_\lambda$는 바로 이전 상태 $z_{\lambda'}$에 노이즈를 추가하여 만들어집니다. 이를 수식으로 표현하면 다음과 같습니다. 먼저, 두 노이즈 레벨 $\lambda$와 $\lambda'$ ($\lambda < \lambda'$)에서 노이즈가 추가된 이미지는 다음과 같이 정의됩니다. $$ z_\lambda = \alpha_\lambda x + \sigma_\lambda \epsilon, \qquad z_{\lambda'} = \alpha_{\lambda'} x + \sigma_{\lambda'} \epsilon $$ 여기서 $\epsilon \sim \mathcal{N}(0, I)$는 동일한 노이즈를 사용합니다. 이제 $z_{\lambda'}$ 식을 $x$에 대해 정리하면, $x = (z_{\lambda'} - \sigma_{\lambda'}\epsilon) / \alpha_{\lambda'}$이 됩니다. 이를 $z_\lambda$ 정의식에 대입하면 다음과 같이 전개됩니다. $$ \begin{align*} z_{\lambda} &= \alpha_{\lambda} \left( \frac{z_{\lambda'} - \sigma_{\lambda'}\epsilon}{\alpha_{\lambda'}} \right) + \sigma_{\lambda}\epsilon \\ &= \frac{\alpha_{\lambda}}{\alpha_{\lambda'}} z_{\lambda'} - \frac{\alpha_{\lambda}\sigma_{\lambda'}}{\alpha_{\lambda'}} \epsilon + \sigma_{\lambda}\epsilon \\ &= \frac{\alpha_{\lambda}}{\alpha_{\lambda'}} z_{\lambda'} + \left( \sigma_{\lambda} - \frac{\alpha_{\lambda}\sigma_{\lambda'}}{\alpha_{\lambda'}} \right) \epsilon. \end{align*} $$ 논문에서는 항상 분산을 1로 유지하기 위해 다음 관계를 사용합니다: $\sigma^2 = 1 - \alpha^2.$ 이를 이용하면 조건부 분산 $\sigma^2_{\lambda \mid \lambda'}$를 다음과 같이 표현할 수 있습니다. $$ \begin{align*} 1 &= \left( \frac{\alpha_\lambda}{\alpha_{\lambda'}} \right)^2 \mathrm{Var}(z_{\lambda'}) + \sigma^2_{\lambda \mid \lambda'} \\ \Rightarrow \quad \sigma^2_{\lambda \mid \lambda'} &= 1 - \left( \frac{\alpha_\lambda}{\alpha_{\lambda'}} \right)^2 \\ &= \left( 1 - e^{\lambda - \lambda'} \right) \sigma_\lambda^2. \end{align*} $$ 따라서 Forward process는 다음과 같은 정규분포로 모델링됩니다. (논문 Eq. 2) $$ q(z_{\lambda} \mid z_{\lambda'}) = \mathcal{N}\left( \left( \frac{\alpha_{\lambda}}{\alpha_{\lambda'}} \right) z_{\lambda'}, \ \sigma^2_{\lambda \mid \lambda'} I \right), \qquad \text{where } \lambda < \lambda', \quad \sigma^2_{\lambda \mid \lambda'} = \left(1 - e^{\lambda - \lambda'}\right)\sigma^2_{\lambda}. $$

2. 역방향 프로세스 (Reverse Process)와 Score-Based 모델링

이미지 생성은 순방향 프로세스의 정반대, 즉 완전한 노이즈 $z_{\lambda_{min}}$에서 시작하여 점차 노이즈를 제거해 원본 이미지 $x$를 복원하는 과정입니다. 이 역방향 프로세스를 모델링하는 것이 디퓨전 모델의 목적입니다.

모델은 각 단계에서 $z_{\lambda}$가 주어졌을 때, 이전 단계의 이미지 $z_{\lambda’}$ (단, $\lambda < \lambda’$)를 예측해야 합니다. 이론적으로 이 예측은 데이터 분포의 score, 즉 로그 밀도 함수의 그래디언트($\nabla_{z_{\lambda}}\log p(z_{\lambda})$)를 추정함으로써 가능합니다. 이것이 바로 ‘Score-Based’ 모델링의 핵심입니다. 논문에서는 이 score를 직접 추정하는 대신, score와 비례 관계에 있는 노이즈 $\epsilon$을 예측하는 방식을 사용합니다. 둘 사이의 관계는 다음과 같습니다.

\[\epsilon_{\theta}(z_{\lambda}) \approx - \sigma_{\lambda} \nabla_{z_{\lambda}}\log p(z_{\lambda})\]

여기서 $\epsilon_{\theta}(z_{\lambda})$는 신경망 모델이 예측한 노이즈를 의미합니다. 모델은 훈련 데이터의 실제 노이즈 $\epsilon$과 모델이 예측한 노이즈 $\epsilon_{\theta}(z_{\lambda})$ 사이의 L2 손실을 최소화하도록 학습됩니다.

\[L = \mathbb{E}_{\epsilon,\lambda}[\| \epsilon_{\theta}(z_{\lambda}) - \epsilon \|_{2}^{2}]\]

따라서, 잘 훈련된 모델 $\epsilon_{\theta}(z_{\lambda})$는 주어진 노이즈 이미지 $z_{\lambda}$에서 원본으로 돌아가기 위해 제거해야 할 노이즈의 방향과 크기에 대한 최적의 추정치를 제공합니다.


제안하는 방법론 (Proposed Method)

이제 본론으로 들어가, Classifier-Free Guidance가 수학적으로 어떻게 구현되는지 살펴보겠습니다. 먼저 비교를 위해 기존의 Classifier Guidance를 수학적으로 이해하고, 이를 바탕으로 Classifier-Free Guidance의 원리를 유도해 보겠습니다.

기존 방식, Classifier Guidance

Classifier Guidance는 조건부 노이즈 예측기 $\epsilon_{\theta}(z_{\lambda}, c)$의 예측 결과를 별도의 분류기 그래디언트를 이용해 보정합니다. 수정된 노이즈 예측 $\tilde{\epsilon}_{\theta}(z_{\lambda},c)$는 다음과 같이 계산됩니다. (Classifier의 그래디언트를 결합)

\[\tilde{\epsilon}_{\theta}(z_{\lambda},c) = \epsilon_{\theta}(z_{\lambda},c) - w\sigma_{\lambda}\nabla_{z_{\lambda}}\log p_{\theta}(c \mid z_{\lambda})\]

각 항의 의미는 다음과 같습니다.

  • $\epsilon_{\theta}(z_{\lambda},c)$: 클래스 $c$가 주어졌을 때 디퓨전 모델이 예측한 기본 노이즈
  • $p_{\theta}(c \mid z_{\lambda})$: 파라미터 $\theta$를 갖는 별도의 이미지 분류기
  • $\nabla_{z_{\lambda}}\log p_{\theta}(c \mid z_{\lambda})$: 분류기의 그래디언트 (클래스 $c$에 속하려면 $z_\lambda$를 어떻게 수정해야하는가?)
  • $w$: 가이던스 강도(guidance strength)를 조절하는 하이퍼파라미터

결론적으로, 이 수식은 “디퓨전 모델이 제안하는 기본 방향($\epsilon_{\theta}$)에 더해, 분류기가 알려주는 ‘클래스 $c$처럼 보이는’ 방향으로 이미지를 추가로 수정하라”는 의미를 가집니다.


Classifier의 그래디언트를 대체하는 방법?

Classifier-Free Guidance의 목표는 분류기의 그래디언트 항($\nabla_{z_{\lambda}}\log p_{\theta}(c \mid z_{\lambda})$)을 분류기 없이 만들어내는 것입니다. 연구진은 베이즈 정리를 이용해 분류기를 ‘암시적(implicit)’으로 나타낼 수 있다고 말합니다. 먼저 익히 잘 알고 있는 조건부 확률에 대한 베이즈 정리는 다음과 같습니다.

\[p(c\mid z_{\lambda}) = \frac{p(z_{\lambda} \mid c)p(c)}{p(z_{\lambda})}\]

여기서 양변에 로그를 취하면 다음과 같습니다.

\[\log p(c \mid z_{\lambda}) = \log p(z_{\lambda} \mid c) + \log p(c) - \log p(z_{\lambda})\]

이제 이 식의 그래디언트를 $z_{\lambda}$에 대해 구하면, $p(c)$는 $z_{\lambda}$와 무관하므로 사라집니다.

\[\nabla_{z_{\lambda}}\log p(c\mid z_{\lambda}) = \nabla_{z_{\lambda}}\log p(z_{\lambda}\mid c) - \nabla_{z_{\lambda}}\log p(z_{\lambda})\]

이것이 바로 암시적 분류기의 그래디언트입니다. 즉, “조건부 데이터 분포의 score”에서 “비조건부 데이터 분포의 score”를 뺀 값입니다. 앞서 배경지식에서 score와 노이즈 예측치 사이의 관계($\nabla_{z_{\lambda}}\log p(z_{\lambda}) \approx -\epsilon(z_{\lambda})/ \sigma_{\lambda}$)를 살펴보았습니다. 이 관계를 위 식의 각 항에 적용하면 다음과 같이 근사할 수 있습니다.

\[\begin{aligned} \nabla_{z_{\lambda}}\log p(c \mid z_{\lambda}) &\approx \left(-\frac{\epsilon^{*}(z_{\lambda},c)}{\sigma_{\lambda}}\right) - \left(-\frac{\epsilon^{*}(z_{\lambda})}{\sigma_{\lambda}}\right) \\ &= -\frac{1}{\sigma_{\lambda}} \left( \epsilon^{*}(z_{\lambda},c) - \epsilon^{*}(z_{\lambda}) \right) \end{aligned}\]

여기서 $\epsilon^{\ast}$는 이론적인 최적의 노이즈 예측을 의미합니다. 이 결과는 별도의 분류기 없이, 디퓨전 모델이 학습하는 두 종류의 노이즈 예측치(조건부 예측 $\epsilon^{\ast}(z_{\lambda},c)$와 비조건부 예측 $\epsilon^{\ast}(z_{\lambda})$)의 차이만으로 분류기 그래디언트와 유사한 항을 만들어낼 수 있음을 보여줍니다.


새로운 방식, Classifier-Free Guidance

이제 위에서 유도한 암시적 분류기 그래디언트를 원래의 Classifier Guidance 수식에 대입해 보겠습니다.

원래 수식:

\[\tilde{\epsilon}_{\theta} = \epsilon_{\theta}(c) - w\sigma_{\lambda}\nabla_{z_{\lambda}}\log p (c \mid z_{\lambda})\]

유도한 항 대입:

\[\begin{aligned} \tilde{\epsilon}^{*}(z_{\lambda},c) &= \epsilon^{*}(z_{\lambda},c) - w\sigma_{\lambda} \left( -\frac{1}{\sigma_{\lambda}} \left( \epsilon^{*}(z_{\lambda},c) - \epsilon^{*}(z_{\lambda}) \right) \right) \\ &= \epsilon^{*}(z_{\lambda},c) + w \left( \epsilon^{*}(z_{\lambda},c) - \epsilon^{*}(z_{\lambda}) \right) \\ &= (1+w)\epsilon^{*}(z_{\lambda},c) - w\epsilon^{*}(z_{\lambda}) \end{aligned}\]

이론적인 최적의 예측 $\epsilon^*$ 대신, 우리가 훈련시킨 신경망 모델의 예측 $\epsilon_{\theta}$를 사용하면 최종적인 Classifier-Free Guidance 수식이 완성됩니다.

\[\tilde{\epsilon}_{\theta}(z_{\lambda},c) = (1+w)\epsilon_{\theta}(z_{\lambda},c) - w\epsilon_{\theta}(z_{\lambda})\]

이 수식은 “비조건부 예측치($\epsilon_{\theta}(z_{\lambda})$)를 기준점으로 삼아, 조건부 예측치($\epsilon_{\theta}(z_{\lambda},c)$) 방향으로 $w$만큼 더 나아가라”는 매우 직관적인 의미를 가집니다. 학습 과정에서는 일정 확률($p=0.2$)로 조건($c$)을 누락시켜 하나의 모델이 $\epsilon_{\theta}(z_{\lambda},c)$와 $\epsilon_{\theta}(z_{\lambda})$를 모두 예측할 수 있도록 학습합니다.


실험 및 결과

연구진은 제안한 방법의 효과를 검증하기 위해 대규모 이미지 데이터셋인 ImageNet에서 실험을 진행했습니다. 이미지 품질을 평가하기 위해 두 가지 대표적인 지표를 사용했습니다.

  • FID (Fréchet Inception Distance): 생성된 이미지와 실제 이미지의 분포가 얼마나 유사한지를 측정합니다. (낮을수록 좋음)
  • IS (Inception Score): 생성된 이미지가 얼마나 선명하고 특정 사물로 인식될 수 있는지, 그리고 얼마나 다양한 클래스의 이미지를 생성하는지를 측정합니다. (높을수록 좋음)

이 두 지표는 보통 하나가 좋아지면 다른 하나가 나빠지는 트레이드오프(trade-off) 관계를 가집니다. 예를 들어, 매우 똑같이 생긴 고품질 허스키 이미지만 계속 생성한다면 FID는 낮아지겠지만 다양성이 부족해져 IS도 낮아질 수 있습니다.

Figure 1


가이던스 강도(w)에 따른 변화

w를 0에서 점차 높이면, IS는 꾸준히 증가하여 이미지의 선명도와 클래스 정체성이 강화되는 것을 볼 수 있습니다. 반면 FID는 w가 0.3일 때 2.43으로 가장 낮은 값(가장 좋은 품질)을 기록한 후, w가 더 커지자 다시 증가하는 경향을 보입니다.

이는 적절한 수준의 가이던스는 이미지의 사실적인 품질(FID)을 크게 향상시키지만, 과도한 가이던스는 오히려 다양성을 해치고 특정 클래스의 특징만 과장하여 부자연스러운 이미지(높은 FID)를 만들 수 있음을 보여줍니다. 사용자는 이 트레이드오프를 이해하고 목적에 맞게 w 값을 조절할 수 있습니다.

Table 2


결론

Classifier-Free Diffusion Guidance는 디퓨전 모델의 품질과 제어를 별도의 분류기 없이도 가능하다는 것을 증명해낸 논문입니다. 기존 Classifier가 주는 확률 분포식을 베이즈 정리를 통해 풀어내어 조건부 디퓨전 그리고 비조건부 디퓨전 결과의 결합으로 동일한 결과를 얻어낼 수 있음을 보였습니다.

하지만 논문에서 언급한 한 가지 단점은 샘플링 속도입니다. 매 단계마다 조건부, 비조건부 예측을 위해 모델을 두 번 실행해야 하므로, 가이던스가 없을 때보다 시간이 더 오래 걸립니다. 연구진은 향후 모델 아키텍처 변경 등을 통해 이 문제를 완화할 수 있을 것이라고 제안했습니다.

Written by

Jongmoon Ryu

Passionate about speech synthesis and algorithms, with an open mind toward data-driven technologies.

Start the conversation