diffusion 모델은 "처음부터 데이터를 직접 만들자"라고 달려들지 않습니다. 대신 먼저 데이터를 아주 쉬운 분포인 노이즈로 보내는 과정을 만들고, 그다음 그 과정을 거꾸로 되돌리는 법을 배웁니다. 이 강의에서는 왜 이런 우회가 필요한지, score가 어떤 방향 정보를 담는지, 그리고 diffusion이 왜 여러 단계로 생성하는지를 순서대로 설명합니다.
생성모델의 목표는 데이터 분포
에서 새로운 샘플을 만드는 것입니다. 하지만 실제 데이터 분포는 매우 복잡합니다. 이미지라면 픽셀 차원도 높고, 자연스러운 이미지가 놓이는 영역도 아주 복잡합니다. 그래서 diffusion은 처음부터 이 복잡한 분포를 한 번에 직접 다루려 하지 않습니다.
핵심 전략은 "어려운 분포를 쉬운 분포로 보내는 방향부터 만들자"입니다. 이 쉬운 방향이 forward process입니다. 시작점은 원래 데이터
이고, 매 단계마다 작은 가우시안 노이즈를 더해 점점 구조를 흐립니다. 한 단계는 보통 다음처럼 적습니다.
여기서
는 이번 단계에서 얼마나 노이즈를 넣을지를 정하는 값입니다. 이 과정을 충분히 오래 반복하면
는 거의 순수한 가우시안 노이즈가 됩니다. 즉 시작은 복잡한 데이터였지만, 끝은 매우 다루기 쉬운 분포가 됩니다.
왜 이 방향이 쉬운가를 생각해 보면 답이 분명합니다. 데이터를 망가뜨리는 일은 보통 쉽습니다. 선명한 이미지에 잡음을 넣는 규칙은 간단하게 정의할 수 있기 때문입니다. 반대로 순수한 노이즈에서 자연스러운 이미지를 바로 만들어 내는 일은 훨씬 어렵습니다. diffusion은 쉬운 방향을 먼저 확실히 정의한 뒤, 어려운 방향을 학습으로 해결합니다.
이제 생성은 reverse process가 됩니다. 즉 거의 순수한 노이즈
에서 출발해, 조금씩 덜 시끄러운 상태
를 거쳐 데이터
쪽으로 돌아오는 것입니다. 문제는 역방향이 forward를 그냥 거꾸로 읽는다고 자동으로 생기지 않는다는 점입니다. 지금 상태에서 "어느 방향으로 가야 더 데이터다운 상태가 되는가"를 알아야 합니다.
바로 이 방향 정보를 주는 것이 score입니다. score는 다음처럼 적습니다.
이 식은 현재 위치
에서 로그밀도가 가장 빨리 증가하는 방향을 뜻합니다. 쉽게 말하면 "데이터가 더 있을 법한 쪽이 어디인가?"를 알려 주는 화살표입니다. 노이즈 한가운데에 있을 때도, 이 화살표를 알 수 있다면 데이터가 많은 쪽으로 조금씩 움직일 수 있습니다.
score matching은 모델이 바로 이 화살표를 예측하도록 학습하는 방법입니다. diffusion에서는 각 시간
마다 현재 샘플이 얼마나 노이즈에 섞여 있는지 알고 있으므로, 모델이 그 상태에서의 score나 노이즈를 예측하도록 학습할 수 있습니다. 그러면 reverse process는 "한 번에 정답 이미지를 복원하는 문제"가 아니라, "현재 상태에서 조금 더 데이터다운 방향으로 이동하는 문제"가 됩니다.
이 점이 diffusion의 가장 큰 장점입니다. 큰 복원을 한 번에 하려면 매우 복잡한 함수를 배워야 하지만, 작은 이동을 반복하는 문제는 상대적으로 더 안정적입니다. 즉 diffusion은 어려운 생성 문제를 많은 개수의 쉬운 지역 문제로 분해합니다.
확률과정이라는 말도 이 맥락에서 이해할 수 있습니다. diffusion은 시간이 흐르면서 상태가 바뀌는 확률과정을 사용합니다. forward process는 데이터에서 노이즈로 가는 확률과정이고, reverse process는 노이즈에서 데이터로 돌아오는 확률과정입니다. 생성은 결국 "적절한 역확률과정을 배우는 일"이라고 볼 수 있습니다.
그래서 diffusion 모델은 처음 보면 우회처럼 보이지만, 사실은 아주 실용적인 전략입니다. 직접 생성 대신 "노이즈를 조금씩 걷어 내는 일"로 문제를 바꾸면, 복잡한 데이터 분포를 다루는 일이 훨씬 안정적으로 바뀝니다. 최근 diffusion 기반 생성모델이 강한 이유도 바로 여기에 있습니다.
노이즈를 먼저 넣는 이유
문제: 왜 복잡한 데이터에서 바로 샘플을 만들지 않고, 먼저 forward process를 정의하는가?
풀이: 데이터를 쉬운 노이즈 분포로 보내면 시작점이 명확해지고, 어려운 생성 문제를 역방향의 작은 단계들로 나눌 수 있기 때문이다.
해설: diffusion은 직접 생성보다 "쉬운 분포에서 되돌아오기"를 선택한 전략이다.
score의 역할
문제: score는 생성 과정에서 어떤 정보를 제공하는가?
풀이: 현재 상태에서 어느 방향으로 움직이면 데이터 밀도가 더 커지는지를 알려 준다.
해설: reverse process는 이 방향 정보를 이용해 노이즈를 조금씩 걷어 낸다.
여러 단계를 쓰는 이유
문제: diffusion이 한 번에 복원하지 않고 여러 단계를 쓰는 이유는 무엇인가?
풀이: 작은 변화의 역과정은 상대적으로 배우기 쉽고, 복잡한 생성 문제를 안정적인 지역 문제들로 나눌 수 있기 때문이다.
해설: 어려운 문제를 한 번에 풀지 않고, 미세한 복원들의 연속으로 바꾼다고 볼 수 있다.