확산 모델의 마법, Classifier-Free Guidance (CFG) 완벽 가이드

Bean·2026년 3월 19일

인공지능

목록 보기
161/184

최근 Stable Diffusion, DALL-E 3, Midjourney 등 최신 AI 이미지 생성기들을 써보셨다면, 모델이 사용자의 프롬프트를 기가 막히게 잘 따르는 것을 보셨을 겁니다. 이 놀라운 결과물의 배경에는 Classifier-Free Guidance (CFG, 분류기 없는 가이던스)라는 핵심적인 마법의 공식이 숨어 있습니다.

이름은 조금 낯설 수 있지만, 작동 원리는 굉장히 직관적이고 우아합니다. 단계별로 아주 쉽게 파헤쳐 보겠습니다.


1. 배경: '분류기 가이던스(Classifier Guidance)'의 한계

원래 확산 모델(Diffusion Model)이 "강아지 그려줘"라는 조건에 맞춰 이미지를 생성하려면, 노이즈를 제거하는 과정에서 별도의 '이미지 분류기(Classifier)'가 필요했습니다.

분류기가 생성 중인 노이즈 이미지를 보고 "이거 강아지 방향으로 잘 가고 있네" 혹은 "아니야, 고양이 같아"라고 판단해서 기울기(Gradient) 방향을 수정해 주는 역할을 했죠.

  • 문제점: 노이즈가 낀 이미지를 잘 판별하는 분류기를 따로 학습시키는 것은 무척 까다롭고 연산 비용이 비쌌습니다. 게다가 이 과정에서 이미지가 종종 부자연스럽게 왜곡되는 현상이 발생했습니다.

2. 혁신: 분류기를 없애버리자! (CFG의 등장)

Jonathan Ho와 Tim Salimans는 "복잡하게 별도의 분류기를 쓰지 말고, 하나의 확산 모델 안에서 알아서 해결하게 만들자!"라는 혁신적인 아이디어를 냅니다.

학습(Training) 방법:
모델을 학습시킬 때, 가끔(보통 10~20% 확률로) 입력 조건(클래스 라벨이나 텍스트 프롬프트)을 빈칸(Null, \emptyset)으로 지워버립니다.
즉, 모델은 조건을 보고 생성하는 방법(ϵθ(xt,c)\epsilon_\theta(x_t, c))과 아무 조건 없이 무작위로 생성하는 방법(ϵθ(xt,)\epsilon_\theta(x_t, \emptyset)) 두 가지를 동시에 학습하게 됩니다.

3. CFG의 핵심: 생성(Inference) 단계의 수학적 외삽법

이미지를 생성할 때, CFG는 매 스텝마다 모델에게 두 번의 질문을 던집니다.

  1. 무조건부 예측: "조건 없이 그냥 아무 이미지나 만들어볼래?" ϵθ(xt,)\rightarrow \epsilon_\theta(x_t, \emptyset)
  2. 조건부 예측: "강아지(cc)를 만들어볼래?" ϵθ(xt,c)\rightarrow \epsilon_\theta(x_t, c)

그리고 이 두 예측값의 차이를 계산합니다.
차이 벡터:

(ϵθ(xt,c)ϵθ(xt,))(\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \emptyset))

이 '차이'가 의미하는 것은 바로 "일반적인 이미지에서 '강아지'라는 특성으로 향하는 방향"입니다. 마지막으로 이 방향에 가이던스 스케일(Guidance Scale, ss)이라는 가중치를 곱해서 원래의 무조건부 예측값에 더해줍니다.

ϵ^t=ϵθ(xt,)+s(ϵθ(xt,c)ϵθ(xt,))\hat{\epsilon}_t = \epsilon_\theta(x_t, \emptyset) + s \cdot (\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \emptyset))

가이던스 스케일(ss)의 역할:

  • s=1s = 1일 때: 기본 조건부 생성과 같습니다.
  • s>1s > 1일 때 (보통 4.0 ~ 7.0 사용): "강아지"라는 특성 방향으로 모델을 강제로 세게 밀어붙입니다. 결과적으로 프롬프트를 엄청나게 잘 따르게 되고, 이미지 품질(현실성, 충실도)이 비약적으로 상승합니다. (단, 너무 높이면 다양성이 감소합니다.)

4. CFG와 adaLN: 완벽한 콤비의 협업

DiT(Diffusion Transformers) 같은 최신 아키텍처를 공부하다 보면 adaLN(Adaptive Layer Norm)이라는 개념이 등장합니다. 두 가지는 완전히 다른 개념이지만, 완벽하게 짝을 이루어 동작하는 콤비입니다.

아주 쉽게 비유하자면, adaLN은 '자동차의 핸들(조향 장치)'이고, CFG는 '가속 페달(액셀)'입니다.

  • adaLN (물리적 구조 - 하드웨어적 통로):
    • 클래스 라벨이나 타임스텝 같은 '조건'을 트랜스포머 신경망 내부에 쑤셔 넣는 구조적 메커니즘입니다.
    • 자동차의 바퀴 방향을 '강아지 목적지' 쪽으로 틀어주는 핸들 역할을 합니다.
  • CFG (수학적 기술 - 소프트웨어적 알고리즘):
    • 이미 학습이 끝난 모델이 조건에 더 강하게 집착하도록 만드는 수학적 샘플링 기법입니다.
    • 핸들이 '강아지' 쪽으로 틀어져 있을 때, 그 방향으로 빠르게 질주하도록 가속 페달을 밟아주는 역할입니다.

5. 많은 분들이 헷갈리는 포인트: 학습 vs 생성

"CFG의 차이 계산과 스케일링은 학습할 때도 쓰이나요?"
결론부터 말씀드리면 아닙니다. 오직 이미지를 만들어내는 생성(Inference) 과정에서만 사용됩니다.

  • 학습(Training) 과정: "그냥 섞어서 가르치기만 함"
    학습할 때 모델은 차이를 계산하거나 스케일을 곱하지 않습니다. 100장의 사진 중 90장에는 "강아지"라는 조건을, 나머지 10장에는 라벨을 지운 '빈칸'을 줍니다. 모델은 그저 두 상황 모두에 적응하며 노이즈를 예측하는 훈련만 묵묵히 수행합니다.
  • 생성(Inference) 과정: "학습된 두 능력을 꺼내서 차이를 계산함"
    이미지를 뽑아낼 때 비로소 CFG의 마법이 작동합니다. 학습이 끝난 모델에게 "빈칸일 때 실력"과 "강아지 조건일 때 실력"을 동시에 요구하여 결과값을 얻고, 그 차이를 구한 뒤 스케일(ss)을 곱해 방향을 강하게 꺾어주는 연산을 수행합니다.

💡 요약

Classifier-Free Guidance는 외부 분류기의 도움 없이, 모델 스스로 "조건이 있을 때"와 "없을 때"의 차이를 극대화하여 사용자가 원하는 이미지를 정확하게 뽑아내는 혁신적인 수학적 테크닉입니다.

profile
AI developer

0개의 댓글