콘텐츠로 이동

diffusion 모델은 "처음부터 데이터를 직접 만들자"라고 달려들지 않습니다. 대신 먼저 데이터를 아주 쉬운 분포인 노이즈로 보내는 과정을 만들고, 그다음 그 과정을 거꾸로 되돌리는 법을 배웁니다. 이 강의에서는 왜 이런 우회가 필요한지, score가 어떤 방향 정보를 담는지, 그리고 diffusion이 왜 여러 단계로 생성하는지를 순서대로 설명합니다.

먼저 알아둘 말

  • 확률과정: 시간이 흐르면서 상태가 확률적으로 변하는 과정이다.
  • 노이즈: 원래 구조를 흐리게 만드는 무작위 변화다.
  • forward process: 데이터에 노이즈를 조금씩 더하는 과정이다.
  • reverse process: 노이즈에서 다시 데이터 쪽으로 돌아오는 과정이다.
  • 밀도: 어떤 값 주변에 데이터가 얼마나 많이 모여 있는지를 나타내는 양이다.
  • score: 밀도가 커지는 방향을 알려 주는 기울기다.
  • score matching: 모델이 score를 맞히도록 학습하는 방법이다.
  • diffusion model: 작은 노이즈 단계의 역과정을 배워 샘플을 생성하는 모델이다.

이 강의에서 답할 질문

  • 왜 데이터를 일부러 망가뜨리는 과정이 생성에 도움이 되는가?
  • forward process와 reverse process는 각각 무엇을 맡는가?
  • score는 왜 "어디로 가야 하는가"를 알려 주는 나침반이 되는가?
  • diffusion은 왜 한 번에 복원하지 않고 여러 단계로 움직이는가?

먼저 떠올릴 장면

  • 선명한 사진에 아주 약한 잡음을 한 번 넣으면 아직 원래 모양이 꽤 남아 있습니다.
  • 그런데 그 작업을 계속 반복하면, 결국 사진의 구조는 사라지고 거의 순수한 잡음만 남습니다.
  • 이제 거꾸로 생각하면, 그 잡음에서 출발해 아주 조금씩 "덜 시끄러운 쪽"으로 움직이는 방법만 알면 다시 사진에 가까워질 수 있을 것 같습니다.

생각의 순서

  1. 먼저 생성 문제를 왜 직접 풀기 어려운지 봅니다.
  2. 그다음 데이터를 노이즈로 보내는 쉬운 방향을 만듭니다.
  3. 이어서 역방향이 곧 생성이라는 점을 설명합니다.
  4. 역방향에 필요한 방향 정보를 score로 해석합니다.
  5. 마지막으로 diffusion이 왜 작은 단계들의 반복으로 구성되는지 정리합니다.

본문

생성모델의 목표는 데이터 분포

$$ p_{\text{data}}(x) $$

에서 새로운 샘플을 만드는 것입니다. 하지만 실제 데이터 분포는 매우 복잡합니다. 이미지라면 픽셀 차원도 높고, 자연스러운 이미지가 놓이는 영역도 아주 복잡합니다. 그래서 diffusion은 처음부터 이 복잡한 분포를 한 번에 직접 다루려 하지 않습니다.

핵심 전략은 "어려운 분포를 쉬운 분포로 보내는 방향부터 만들자"입니다. 이 쉬운 방향이 forward process입니다. 시작점은 원래 데이터

$$ x_0 $$

이고, 매 단계마다 작은 가우시안 노이즈를 더해 점점 구조를 흐립니다. 한 단계는 보통 다음처럼 적습니다.

$$ q(x_t \mid x_{t-1}) = \mathcal{N}!\bigl(\sqrt{1-\beta_t}\,x_{t-1},\, \beta_t I\bigr) $$

여기서

$$ \beta_t $$

는 이번 단계에서 얼마나 노이즈를 넣을지를 정하는 값입니다. 이 과정을 충분히 오래 반복하면

$$ x_T $$

는 거의 순수한 가우시안 노이즈가 됩니다. 즉 시작은 복잡한 데이터였지만, 끝은 매우 다루기 쉬운 분포가 됩니다.

왜 이 방향이 쉬운가를 생각해 보면 답이 분명합니다. 데이터를 망가뜨리는 일은 보통 쉽습니다. 선명한 이미지에 잡음을 넣는 규칙은 간단하게 정의할 수 있기 때문입니다. 반대로 순수한 노이즈에서 자연스러운 이미지를 바로 만들어 내는 일은 훨씬 어렵습니다. diffusion은 쉬운 방향을 먼저 확실히 정의한 뒤, 어려운 방향을 학습으로 해결합니다.

이제 생성은 reverse process가 됩니다. 즉 거의 순수한 노이즈

$$ x_T $$

에서 출발해, 조금씩 덜 시끄러운 상태

$$ x_{T-1}, x_{T-2}, \dots $$

를 거쳐 데이터

$$ x_0 $$

쪽으로 돌아오는 것입니다. 문제는 역방향이 forward를 그냥 거꾸로 읽는다고 자동으로 생기지 않는다는 점입니다. 지금 상태에서 "어느 방향으로 가야 더 데이터다운 상태가 되는가"를 알아야 합니다.

바로 이 방향 정보를 주는 것이 score입니다. score는 다음처럼 적습니다.

$$ \nabla_x \log p(x) $$

이 식은 현재 위치

$$ x $$

에서 로그밀도가 가장 빨리 증가하는 방향을 뜻합니다. 쉽게 말하면 "데이터가 더 있을 법한 쪽이 어디인가?"를 알려 주는 화살표입니다. 노이즈 한가운데에 있을 때도, 이 화살표를 알 수 있다면 데이터가 많은 쪽으로 조금씩 움직일 수 있습니다.

score matching은 모델이 바로 이 화살표를 예측하도록 학습하는 방법입니다. diffusion에서는 각 시간

$$ t $$

마다 현재 샘플이 얼마나 노이즈에 섞여 있는지 알고 있으므로, 모델이 그 상태에서의 score나 노이즈를 예측하도록 학습할 수 있습니다. 그러면 reverse process는 "한 번에 정답 이미지를 복원하는 문제"가 아니라, "현재 상태에서 조금 더 데이터다운 방향으로 이동하는 문제"가 됩니다.

이 점이 diffusion의 가장 큰 장점입니다. 큰 복원을 한 번에 하려면 매우 복잡한 함수를 배워야 하지만, 작은 이동을 반복하는 문제는 상대적으로 더 안정적입니다. 즉 diffusion은 어려운 생성 문제를 많은 개수의 쉬운 지역 문제로 분해합니다.

확률과정이라는 말도 이 맥락에서 이해할 수 있습니다. diffusion은 시간이 흐르면서 상태가 바뀌는 확률과정을 사용합니다. forward process는 데이터에서 노이즈로 가는 확률과정이고, reverse process는 노이즈에서 데이터로 돌아오는 확률과정입니다. 생성은 결국 "적절한 역확률과정을 배우는 일"이라고 볼 수 있습니다.

그래서 diffusion 모델은 처음 보면 우회처럼 보이지만, 사실은 아주 실용적인 전략입니다. 직접 생성 대신 "노이즈를 조금씩 걷어 내는 일"로 문제를 바꾸면, 복잡한 데이터 분포를 다루는 일이 훨씬 안정적으로 바뀝니다. 최근 diffusion 기반 생성모델이 강한 이유도 바로 여기에 있습니다.

예제

  1. 노이즈를 먼저 넣는 이유 문제: 왜 복잡한 데이터에서 바로 샘플을 만들지 않고, 먼저 forward process를 정의하는가? 풀이: 데이터를 쉬운 노이즈 분포로 보내면 시작점이 명확해지고, 어려운 생성 문제를 역방향의 작은 단계들로 나눌 수 있기 때문이다. 해설: diffusion은 직접 생성보다 "쉬운 분포에서 되돌아오기"를 선택한 전략이다.

  2. score의 역할 문제: score는 생성 과정에서 어떤 정보를 제공하는가? 풀이: 현재 상태에서 어느 방향으로 움직이면 데이터 밀도가 더 커지는지를 알려 준다. 해설: reverse process는 이 방향 정보를 이용해 노이즈를 조금씩 걷어 낸다.

  3. 여러 단계를 쓰는 이유 문제: diffusion이 한 번에 복원하지 않고 여러 단계를 쓰는 이유는 무엇인가? 풀이: 작은 변화의 역과정은 상대적으로 배우기 쉽고, 복잡한 생성 문제를 안정적인 지역 문제들로 나눌 수 있기 때문이다. 해설: 어려운 문제를 한 번에 풀지 않고, 미세한 복원들의 연속으로 바꾼다고 볼 수 있다.

스스로 점검

연습 문제

  1. 확률과정을 이 강의 맥락에서 어떻게 이해해야 하는지 설명하라.
  2. forward process가 데이터를 어떤 상태로 보내는지 설명하라.
  3. score를 자연어로 풀어 설명하라.
  4. diffusion이 생성 문제를 어떻게 다시 표현하는지 정리하라.

복습 질문

  1. diffusion에서 시작점이 쉬운 이유는 무엇인가?
  2. reverse process는 무엇을 반복하는 과정인가?
  3. score matching은 모델에게 무엇을 배우게 하는가?

체크포인트

  1. forward process와 reverse process의 역할을 구분할 수 있다.
  2. score가 방향 정보라는 점을 설명할 수 있다.
  3. diffusion이 왜 다단계 생성 방식인지 설명할 수 있다.
  4. 노이즈에서 데이터로 되돌아오는 논리를 말할 수 있다.