[Diffusion] VAE에서 DDPM으로의 확장

안암동컴맹·2025년 11월 19일

Diffusion 101

목록 보기
4/10
post-thumbnail

🤗 소개

Denoising Diffusion Probabilistic Models(DDPM) (Sohl-Dickstein et al., 2015; Ho et al., 2020) 은 diffusion 모델링의 핵심을 이루는 기초적 모델이다. 개념적으로 DDPM은 VAE, HVAE와 마찬가지로 변분적(variational) 틀 안에서 작동한다. 그러나 DDPM은 이전 모델들이 직면했던 여러 어려움을 해결하는 영리한 변형을 도입한다.

이번 글에서는 VAE 이후로 generative modeling에 큰 발자취를 남긴 DDPM 에 대해 자세히 알아보고자 한다.


🌷 DDPM 파헤치기

DDPM의 핵심에는 두 개의 구분되는 확률적 과정 이 존재한다.

▶️ Forward Pass (고정된 인코더)

이 과정은 전이 커널(transition kernel) p(xixi1)p(\mathbf{x}_i\mid\mathbf{x}_{i-1})을 통해 여러 단계에 걸쳐 Gaussian noise를 주입함으로써 데이터를 점진적으로 오염시킨다.

데이터는 결국 등방성(isotropic) Gaussian 분포 로 수혐하며 사실상 순수한 노이즈 N(0,1)\mathcal{N}(\mathbf{0},\mathbf{1})가 된다. 즉, 인코더는 고정되어 있으며 학습되지 않는다.

◀️ Reverse Denoising Process (학습 가능한 디코더)

여기서는 신경망이 parameterized된 분포 pϕ(xi1xi)p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)를 통해 노이즈 오염 과정을 역으로 되돌리는 법 을 학습한다. 순수한 노이즈에서 시작해 이 과정을 반복하면 현실적인 샘플을 생성할 수 있다.

중요한 점은, 각 개별 복원 단계는 VAE처럼 전체 샘플을 한 번에 생성하는 것보다 훨씬 다루기 쉬운 문제라는 것이다.

인코더를 고정하고 점진적인 생성 경로에 학습을 집중함으로써, DDPM은 놀라울 정도의 안정성과 표현력 을 달성한다.

1️⃣ Forward 과정 – 고정된 인코더

DDPM에서 forward 과정은 학습되지 않는 고정된 연산 으로, 인코더(encoder) 역할을 수행한다. 이 과정은 여러 단계에 걸쳐 원본 데이터에 노이즈를 점진적으로 추가하여, 최종적으로 단순한 prior 분포 pprior:=N(0,1)p_\text{prior}:=\mathcal{N}(\mathbf{0},\mathbf{1})로 변환된다.

이 과정은 밑의 그림에 시각적으로 잘 나타나있다.

이제부터 이러한 단계별 열화(degradation) 과정을 형식적으로 기술해보자.

🛠️ Fixed Gaussian Transitions

Forward 과정의 각 단계는 다음과 같은 고정된 Gaussian transition kernel 에 의해 정의된다.

p(xixi1):=N(xi;1βi2xi1,βi2I)p(\mathbf{x}_i\mid\mathbf{x}_{i-1}):=\mathcal{N}(\mathbf{x}_i;\sqrt{1-\beta_i^2}\mathbf{x}_{i-1},\beta_i^2\mathbf{I})

이때 과정은 x0\mathbf{x}_0에서 시작하며, x0\mathbf{x}_0은 실제 데이터 분포 pdatap_\text{data}에서 뽑힌 샘플을 의미한다.

노이즈 스케쥴(noise schedule) {βi}i=1L\{\beta_i\}_{i=1}^L은 미리 결정된 단조 증가(monotonic increase) 하는 스케쥴이며, 각 βi(0,1)\beta_i\in(0,1)ii번째 단계에서 주입되는 Gaussian 노이즈의 분산을 조절한다.

편의상 αi:=1βi2\alpha_i:=\sqrt{1-\beta_i^2}라 정의하자. 이 정의를 이용하면 xi\mathbf{x}_i에 대한 점화식을 다음과 같이 간단하게 표현할 수 있다.

xi=αixi1+βiϵi,ϵiN(0,1)\mathbf{x}_i=\alpha_i\mathbf{x}_{i-1}+\beta_i\epsilon_i,\quad\epsilon_i\sim\mathcal{N}(\mathbf{0},\mathbf{1})

즉, 각 단계 ii에서 이전 상태 xi1\mathbf{x}_{i-1}αi\alpha_i만큼 스케일링하고, βi\beta_i만큼 스케일링된 Gaussian 노이즈를 추가하는 방식이다.

🫟 Perturbation Kernel & Prior Distribution

위 transition kernel을 반복적으로 적용하면, 원본 데이터 x0\mathbf{x}_0이 주어졌을 때 ii번째 단계의 noisy sample xi\mathbf{x}_i는 다음의 closed-form의 분포 를 갖는다.

pi(xix0)=N(xi;αˉix0,(1αˉi2)I)p_i(\mathbf{x}_i\mid\mathbf{x}_0)=\mathcal{N}\left(\mathbf{x}_i;\bar{\alpha}_i\mathbf{x}_0,(1-\bar{\alpha}_i^2)\mathbf{I}\right)

여기서 αˉi:=k=1iαk\bar{\alpha}_i:=\prod_{k=1}^i\alpha_k이다.

혹은 이 분포는 다음의 단 한 번의 샘플링 공식 으로부터도 동일하게 얻을 수 있다.

xi=αˉix0+1αˉi2ϵ,ϵN(0,1)\mathbf{x}_i=\bar{\alpha}_i\mathbf{x}_0+\sqrt{1-\bar{\alpha}_i^2}\epsilon,\quad\epsilon\sim\mathcal{N}(\mathbf{0},\mathbf{1})

이 표현은 DDPM의 forward noising이 누적된(scale-composed) 선형 변환 ++ Gaussian 노이즈 형태로 매우 단순하게 정리됨을 보여준다.

추가적으로, 위에서 언급했던 것 처럼 증가하는 노이즈 스케쥴(noise schedule) {βi}i=1L\{\beta_i\}_{i=1}^L을 가정하면, forward 과정의 주변 분포(marginal distribution) 는 다음과 같이 수렴하게 된다.

pL(xLx0)N(0,I),as Lp_L(\mathbf{x}_L\mid\mathbf{x}_0)\rightarrow\mathcal{N}(\mathbf{0},\mathbf{I}),\quad\text{as}~L\rightarrow\infty

이 사실은 prior 분포를 pprior:=N(0,I)p_\text{prior}:=\mathcal{N}(\mathbf{0},\mathbf{I})로 선택하는 것에 대한 정당성을 부여하고, 이는 데이터 x0\mathbf{x}_0에 전혀 의존하지 않는다.

2️⃣ 역방향 Denoising 과정 – 학습 가능한 디코더

DDPM의 핵심은 forward diffusion 과정이 만들어낸 통제된 degradation 과정을 역으로 되돌릴 수 있는 능력 에 있다. 구조가 없는 순수한 노이즈 xLpprior\mathbf{x}_L\sim p_\text{prior}에서 시작하여, 목표는 이 무작위성을 점진적으로 denoise 하여 단계적으로 정돈된(coherent) 의미 있는 데이터 샘플을 만들어내는 것이다.

이러한 reverse 생성 과정은 아래 그림에서도 보이듯 Markov 연쇄를 따라 진행된다.

이로부터 비롯되는 DDPM을 발전시키는 데 있어 근본적인 핵심 질문 은 다음과 같다.

xipi(xi)\mathbf{x}_i\sim p_i(\mathbf{x}_i)가 복잡한 분포임을 고려할 때 과연 이러한 reverse transition kernel p(xi1xi)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)을 정확하게 계산할 수 있는가, 혹은 최소한 효과적으로 근사할 수 있는가?

이 질문을 품은 채 이제 본격적으로 DDPM에 대해 깊게 파고들 예정인데, 원래 DDPM 논문처럼 바로 복잡한 ELBO의 수학적 유도부터 들어가진 않을 것이다. 대신 조건부 확률 을 활용해 tractable한 형태로 만드는 직관적인 관점에서 학습의 목적 함수를 살펴보고자 한다.

🎯 모델링과 학습 목표

생성 과정을 가능하게 하려면 알 수 없는 실제 reverse-transition kernel p(xi1xi)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)를 근사하는 것을 목표로 해야한다.

이를 위해 학습 가능한 매개변수 모델 pϕ(xi1xi)p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)을 도입하고, 다음의 기댓값 KL 발산 을 최소화하도록 학습시킨다.

Epi(xi)[DKL(p(xi1xi)pϕ(xi1xi))]\mathbb{E}_{p_i(\mathbf{x}_i)}\left[\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\mid\mid p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)\right]

하지만 목표 분포 p(xi1xi)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)를 직접 계산하는 것은 매우 어렵다.

Bayes' Theorem에 따르면 다음을 대신 계산해야 한다.

p(xi1xi)=p(xixi1)pi1(xi1)pi(xi)intractablep(\mathbf{x}_{i-1}\mid\mathbf{x}_i)=p(\mathbf{x}_i\mid\mathbf{x}_{i-1})\underbrace{\frac{p_{i-1}(\mathbf{x}_{i-1})}{p_i(\mathbf{x}_i)}}_\text{intractable}

주변 분포 pi1(xi1)p_{i-1}(\mathbf{x}_{i-1})pi(xi)p_i(\mathbf{x}_i)는 모두 알 수 없는 데이터 분포 pdata(x)p_\text{data}(\mathbf{x})에 대한 기댓값이며, 다음과 같이 정의된다(pi1p_{i-1}도 마찬가지).

pi(xi)=pi(xix0)pdata(x0)dx0p_i(\mathbf{x}_i)=\int p_i(\mathbf{x}_i\mid\mathbf{x}_0)p_\text{data}(\mathbf{x}_0)d\mathbf{x}_0

그러나 pdatap_\text{data}를 명시적으로 알 수 없기 때문에 이러한 적분은 해석적인(closed-form) 해가 존재하지 않는다. 최대한 샘플을 통해 근사할 수는 있지만, 정확한 density는 실제로 계산할 수 없다.

📐 조건부 확률을 통한 Intractability 극복

DDPM의 핵심 통찰 중 하나는, 이 난해한 역전이 커널을 깨끗한 데이터 샘플 x\mathbf{x}에 대한 조건부(conditional) 바꿈으로써 해결할 수 있다는 점이다. 이 미묘하지만 강력한 조작을 통해 본래 intractable 하던 커널을 수학적으로 다룰 수 있는 형태 로 바꿀 수 있다.

p(xi1xi,x)=p(xxi1)p(xi1x)p(xix)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})=p(\mathbf{x}\mid\mathbf{x}_{i-1})\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x})}{p(\mathbf{x}_i\mid\mathbf{x})}

이 식이 tractable해지는 이유는 다음 두 가지 forward 과정의 핵심 성질 덕분이다.

  1. 마르코프 성질 (Markov Property)
    Forward 노이즈 주입은 마르코프 과정이므로

    p(xixi1,x)=p(xixi1)p(\mathbf{x}_i\mid\mathbf{x}_{i-1},\mathbf{x})=p(\mathbf{x}_i\mid\mathbf{x}_{i-1})

    가 성립한다. 즉, 깨끗한 데이터 x\mathbf{x}에 조건을 걸어도 forward 분포의 구조가 변하지 않는다.

  2. 모든 분포가 Gaussian
    DDPM의 forward 과정은 모든 분포가 Gaussian이다. 따라서 위의 조건부 역전이 p(xi1xi,x)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}) 역시 Gaussian 형태를 유지 하며, closed-form인 해를 갖는다.

이러한 조건부 트릭 덕분에 원래는 풀 수 없던 marginal KL 발산을 피하고, 동일한 목적을 달성하면서도 tractable한 학습 목표로 변환할 수 있다.

정리 2.2.1 – Marginal KL 최소화와 조건부 KL 최소화의 동치

Epi(xi)[DKL(p(xi1xi)pϕ(xi1xi))]=Epdata(x)Ep(xix)[DKL(p(xi1xi,x)pϕ(xi1xi))]+C\begin{aligned} &\mathbb{E}_{p_i(\mathbf{x}_i)}\left[\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\|p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)\right] \\ =&\mathbb{E}_{p_\text{data}(\mathbf{x})}\mathbb{E}_{p(\mathbf{x}_i\mid\mathbf{x})}\left[\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})\|p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)\right]+C \\ \end{aligned}

여기서 CCϕ\phi에 무관한 상수이다. 또한, 위 등식의 최소화 식은 다음을 만족한다.

p(xi1x)=Ep(xxi)[p(xi1xi,x)]=p(xi1x),xipip^\ast(\mathbf{x}_{i-1}\mid\mathbf{x})=\mathbb{E}_{p(\mathbf{x}\mid\mathbf{x}_i)}\left[p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})\right]=p(\mathbf{x}_{i-1}\mid\mathbf{x}),\quad\mathbf{x}_i\sim p_i

📝 정리 2.2.1의 증명

위의 동치를 수학적으로 차근차근 증명해보자. 우선 위 등식의 좌변에 있는 기댓값에 x0\mathbf{x}_0를 추가한 뒤 전개해보자.

Ep(x0,xi)[DKL(p(xi1xi,x0)pϕ(xi1xi))]=p(x0,xi)DKL(p(xi1xi,x0)pϕ(xi1xi))dx0dxi\begin{aligned} &\mathbb{E}_{p(\mathbf{x}_0,\mathbf{x}_i)}\left[\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\|p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)\right] \\ =&\iint p(\mathbf{x}_0,\mathbf{x}_i)\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\|p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)d\mathbf{x}_0d\mathbf{x}_i \\ \end{aligned}

KL 발산의 정의에 의해,

DKL(p(xi1xi,x0)pϕ(xi1xi))=p(xi1xi,x0)logp(xi1xi,x0)pϕ(xi1xi)dxi1\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\|p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)=\int p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}d\mathbf{x}_{i-1}

이를 위 기댓값 전개식에 대입하면 다음을 얻을 수 있다.

p(x0,xi)p(xi1xi,x0)logp(xi1xi,x0)pϕ(xi1xi)dxi1dx0dxi\iiint p(\mathbf{x}_0,\mathbf{x}_i)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}d\mathbf{x}_{i-1}d\mathbf{x}_0d\mathbf{x}_i

확률의 연쇄법칙 p(x0,xi)=p(xi)p(x0xi)p(\mathbf{x}_0,\mathbf{x}_i)=p(\mathbf{x}_i)p(\mathbf{x}_0\mid\mathbf{x}_i)을 이용해 위 적분식을 다시 정리하면,

p(xi)p(x0xi)p(xi1xi,x0)logp(xi1xi,x0)pϕ(xi1xi)dxi1dx0dxi\int p(\mathbf{x}_i)\int p(\mathbf{x}_0\mid\mathbf{x}_i)\int p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}d\mathbf{x}_{i-1}d\mathbf{x}_0d\mathbf{x}_i

즉, 아래와 같이 중첩(nested) 기댓값 으로 정리할 수 있다.

Ep(xi)[Ep(x0xi)[Ep(xi1xi,x0)[logp(xi1xi,x0)pϕ(xi1xi)]]]\mathbb{E}_{p(\mathbf{x}_i)}\left[\mathbb{E}_{p(\mathbf{x}_0\mid\mathbf{x}_i)}\left[\mathbb{E}_{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}\left[\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}\right]\right]\right]

그 다음으로, 로그의 성질을 이용해 로그항을 다음과 같이 조작해보자.

logp(xi1xi,x0)pϕ(xi1xi)=logp(xi1xi,x0)p(xi1xi)+logp(xi1xi)pϕ(xi1xi)\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}=\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}+\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}

여기서 p(xi1xi)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)는 전체 식에 영향을 주지 않는, 새롭게 추가된 항이다.

이를 위의 중첩 기댓값에 적용하면,

Ep(xi)[Ep(x0xi)[Ep(xi1xi,x0)[logp(xi1xi,x0)p(xi1xi)]]]+Ep(xi)[Ep(x0xi)[Ep(xi1xi,x0)[logp(xi1xi)pϕ(xi1xi)]]]\begin{aligned} &\mathbb{E}_{p(\mathbf{x}_i)}\left[\mathbb{E}_{p(\mathbf{x}_0\mid\mathbf{x}_i)}\left[\mathbb{E}_{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}\left[\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}\right]\right]\right] \\ &+\mathbb{E}_{p(\mathbf{x}_i)}\left[\mathbb{E}_{p(\mathbf{x}_0\mid\mathbf{x}_i)}\left[\mathbb{E}_{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}\left[\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}\right]\right]\right] \\ \end{aligned}

여기서 두 번째 항은 x0\mathbf{x}_0와 무관하므로, 전체 확률의 법칙(law of total probability) 에 의해 다음과 같이 정리된다.

Ep(x0xi)[Ep(xi1xi,x0)[logp(xi1xi)pϕ(xi1xi)]]=Ep(xi1xi)[logp(xi1xi)pϕ(xi1xi)]\mathbb{E}_{p(\mathbf{x}_0\mid\mathbf{x}_i)}\left[\mathbb{E}_{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)}\left[\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}\right]\right]=\mathbb{E}_{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}\left[\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}\right]

마찬가지로, 중첩 기댓값의 첫 번째 항은 KL 발산에 대한 기댓값으로 정리할 수 있다.

Ep(x0xi)[DKL(p(xi1xi,x0)p(xi1xi))]\mathbb{E}_{p(\mathbf{x}_0\mid\mathbf{x}_i)}\left[\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\|p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)\right]

이를 종합하면 정리 2.2.1의 최종적인 등식을 얻을 수 있다.

Ep(x0,xi)[DKL(p(xi1xi,x0)pϕ(xi1xi))]=Ep(xi)[Ep(x0xi)[DKL(p(xi1xi,x0)p(xi1xi))]]+Ep(xi)[DKL(p(xi1xi)pϕ(xi1xi))]\begin{aligned} &\mathbb{E}_{p(\mathbf{x}_0,\mathbf{x}_i)}\left[\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\|p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)\right] \\ =&\mathbb{E}_{p(\mathbf{x}_i)}\left[\mathbb{E}_{p(\mathbf{x}_0\mid\mathbf{x}_i)}\left[\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\|p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)\right]\right] \\ \quad&+\mathbb{E}_{p(\mathbf{x}_i)}\left[\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\|p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)\right] \\ &\phantom{---------------------}\blacksquare \end{aligned}

이로써 Marginal KL과 조건부 KL이 사실상 같음을 증명하였다.

이러한 조건부화(conditioning) 를 통해 tractable한 목적 함수를 얻는 대안적 방식은 DDPM의 기초를 이루며, 이후 다루게 될 다른 강력한 diffusion 모델들과의 깊은 공통점을 드러낸다.

이 관점은 중요한 사실을 하나 알려준다. 주변(marginal) 분포들 사이의 KL 발산을 최소화하는 문제는 특정 조건부 분포들 사이의 KL 발산을 최소화하는 문제와 수학적으로 완전히 동일하다.

특히 후자의 조건부 형태는 매우 유용한데, 그 이유는 핵심이 되는 조건부 분포 p(xi1xi,x)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})가 다음과 같은 간단한 closed-form 표현을 가지기 때문이다.

보조정리 2.2.2 – 역방향 조건부 전이 커널 (Reverse Conditional Transition Kernel)
p(xi1xi,x)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})는 Gaussian 분포로써, 다음과 같은 closed-form의 형태를 가진다.

p(xi1xi,x)=N(xi1;μ(xi,x,i),σ2(i)I)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})=\mathcal{N}\left(\mathbf{x}_{i-1};\mu(\mathbf{x}_i,\mathbf{x},i),\sigma^2(i)\mathbf{I}\right)

여기서

μ(xi,x,i):=αˉi1βi21αˉi2x+(1αˉi12)αi1αˉi2xi,σ2(i):=1αˉi121αˉi2βi2\mu(\mathbf{x}_i,\mathbf{x},i):=\frac{\bar{\alpha}_{i-1}\beta^2_i}{1-\bar{\alpha}_i^2}\mathbf{x}+\frac{(1-\bar{\alpha}^2_{i-1})\alpha_i}{1-\bar{\alpha}^2_i}\mathbf{x}_i,\quad\sigma^2(i):=\frac{1-\bar{\alpha}^2_{i-1}}{1-\bar{\alpha}^2_i}\beta^2_i

3️⃣ 역방향 전이 커널의 모델링

정리 2.2.1의 gradient-level 등가성과 보조정리 2.2.2에서 제시된 역방향 조건부 분포 p(xi1xi,x)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})의 Gaussian 형태를 활용하여 DDPM은 각 역전이(역방향 전이) 분포 pϕ(xi1xi)p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i) 역시 Gaussian이라고 가정 하고 다음과 같이 parameterize 한다.

pϕ(xi1x):=N(xi1;μϕ(xi,i),σ2(i)I)p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}):=\mathcal{N}\left(\mathbf{x}_{i-1};\mu_\phi(\mathbf{x}_i,i),\sigma^2(i)\mathbf{I}\right)

여기서 μϕ(,i):RDRD\mu_\phi(\cdot,i):\mathbb{R}^D\rightarrow\mathbb{R}^Dlearnable한 mean function이며, σ2(i)>0\sigma^2(i)>0보조정리 2.2.2에서 정의된 고정된 분산이다.

추가적으로, 모든 레이어의 분포를 일치 시키기 위해 시간 단계 ii에 대해 데이터 x0pdata\mathbf{x}_0\sim p_\text{data}에 조건부로 평균된 KL 발산을 다음과 같이 정의한다.

Ldiffusion(x0;ϕ):=i=1LEp(xix0)[DKL(p(xi1xi,x0)pϕ(xi1xi))]\mathcal{L}_\text{diffusion}(\mathbf{x}_0;\phi):=\sum_{i=1}^L\mathbb{E}_{p(\mathbf{x}_i\mid\mathbf{x}_0)}\left[\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\|p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)\right]

Gaussian 형태의 두 분포와 위의 parameterization을 이용하면 이 목적함수는 closed-form의 형태를 가지며 다음과 같이 단순화된다.

Ldiffusion(x0;ϕ)=i=1L12σ2(i)μϕ(xi,i)μ(xi,x0,i)22+C\mathcal{L}_\text{diffusion}(\mathbf{x}_0;\phi)=\sum_{i=1}^L\frac{1}{2\sigma^2(i)}\|\mu_\phi(\mathbf{x}_i,i)-\mu(\mathbf{x}_i,\mathbf{x}_0,i)\|^2_2+C

이후, 데이터 분포에 대해 평균을 취하고, 최적화에 영향을 주지 않는 상수 CC를 생략하면 최종 DDPM의 학습 목표는 다음과 같다.

LDDPM(ϕ):=i=1L12σ2(i)Ex0Ep(xix0)[μϕ(xi,i)μ(xi,x0,i)22]\mathcal{L}_\text{DDPM}(\phi):=\sum_{i=1}^L\frac{1}{2\sigma^2(i)}\mathbb{E}_{\mathbf{x}_0}\mathbb{E}_{p(\mathbf{x}_ i\mid\mathbf{x}_0)}\left[\|\mu_\phi(\mathbf{x}_i,i)-\mu(\mathbf{x}_i,\mathbf{x}_0,i)\|^2_2\right]

여기서 x0pdata\mathbf{x}_0\sim p_\text{data}이다.

4️⃣ 예측과 손실 계산의 실용적인 접근

🫧 ϵ\epsilon-Prediction

일반적인 DDPM 구현에서는 위의 mean prediction parameterization을 기반으로 한 원래 손실을 직접 학습하지 않는다. 대신 동등한 재파라미터화(reparameterization)인, 흔히 ϵ\epsilon-prediction(노이즈 예측) 이라 불리는 형태를 사용한다.

DDPM의 정방향 과정에서, 노이즈 레벨 ii에서 noisy sample xip(xix)\mathbf{x}_i\sim p(\mathbf{x}_i\mid\mathbf{x})는 다음과 같이 생성된다.

xi=αˉix0+1αˉi2ϵ,x0pdata,ϵN(0,I)\mathbf{x}_i=\bar{\alpha}_i\mathbf{x}_0+\sqrt{1-\bar{\alpha}^2_i}\epsilon,\quad\mathbf{x}_0\sim p_\text{data},\quad\epsilon\sim\mathcal{N}(\mathbf{0},\mathbf{I})

이 표현을 살용하면, 앞서 등장했던 역전이 평균 μ(xi,x0,i)\mu(\mathbf{x}_i,\mathbf{x}_0,i)은 다음과 같이 다시 쓸 수 있다.

μ(xi,x0,i)=1αi(xi1αi21αˉi2ϵ)\mu(\mathbf{x}_i,\mathbf{x}_0,i)=\frac{1}{\alpha_i}\left(\mathbf{x}_i-\frac{1-\alpha_i^2}{\sqrt{1-\bar{\alpha}_i^2}}\epsilon\right)

이 식은 모델의 평균 μϕ\mu_\phi노이즈를 직접 예측하는 신경망 ϵϕ(xi,i)\epsilon_\phi(\mathbf{x}_i,i)로 parameterize 하도록 하는 동기를 제공한다.

μ(xi,x0,i)=1αi(xi1αi21αˉi2ϵϕ(xi,i)ϵ-prediction)\mu(\mathbf{x}_i,\mathbf{x}_0,i)=\frac{1}{\alpha_i}\left(\mathbf{x}_i-\frac{1-\alpha_i^2}{\sqrt{1-\bar{\alpha}_i^2}}\underbrace{\epsilon_\phi(\mathbf{x}_i,i)}_{\epsilon\text{-prediction}}\right)

이 표현을 원래 손실에 대입하면, 결과적으로 예측된 노이즈와 실제 노이즈 간의 2\ell_2 오차로 단순화된다.

μϕ(xi,i)μ(xi,x0,i)22ϵϕ(xi,i)ϵ22\|\mu_\phi(\mathbf{x}_i,i)-\mu(\mathbf{x}_i,\mathbf{x}_0,i)\|_2^2\propto\|\epsilon_\phi(\mathbf{x}_i,i)-\epsilon\|_2^2

단, 비례 상수는 timestep ii에 따라 달라진다.

직관적으로, 모델은 각 정방향 단계에서 추가된 랜덤 노이즈를 추적하는 '노이즈 탐지기(noise detective)' 역할을 한다. 오염된 샘플에서 이 노이즈를 빼면 깨끗한 데이터를 향해 한 걸음 이동하게 되며, 이를 반복하면 데이터가 순차적으로 복원 된다.

이를 통해 손실 함수를 더 단순화시킬 수 있다. Timestep에 따라 달라지는 가중치를 제거하여, 널리 사용되는 DDPM 기본 학습 손실 함수를 다음과 같이 얻을 수 있다.

Lsimple(ϕ):=EiExpdataEϵN(0,I)[ϵϕ(xi,i)ϵ22]\mathcal{L}_\text{simple}(\phi):=\mathbb{E}_i\mathbb{E}_{\mathbf{x}\sim p_\text{data}}\mathbb{E}_{\epsilon\sim\mathcal{N}(\mathbf{0},\mathbf{I})}\left[\|\epsilon_\phi(\mathbf{x}_i,i)-\epsilon\|_2^2\right]

Timestep tt마다 target noise의 분산이 항상 단위 분산(unit variance) 이므로, 위의 2\ell_2 손실은 모든 tt에 대해 동일한 스케일 을 유지한다.

이는 target이 exploding 또는 vanishing 되는 문제를 방지하며, 별도의 손실 가중치가 필요 없게 된다.

추가적으로, LDDPM\mathcal{L}_\text{DDPM}Lsimple\mathcal{L}_\text{simple}은 동일한 최적해 ϵ\epsilon^\ast를 가진다. 이는 위의 손실 식이 기본적으로 least-squares 문제로 귀결되기 때문이다.

ϵ(xi,i)=E[ϵxi],xipi\epsilon^\ast(\mathbf{x}_i,i)=\mathbb{E}[\epsilon\mid\mathbf{x}_i],\quad\mathbf{x}_i\sim p_i

🏞️ x\mathbf{x}-Prediction

또 다른 동등한 parameterization인 x\mathbf{x}-prediction클린 예측이라고도 하며, 신경망 xϕ(xi,i)\mathbf{x}_\phi(\mathbf{x}_i,i)은 노이즈 단계 ii에서 노이즈가 섞인 입력 xipi(xi)\mathbf{x}_i\sim p_i(\mathbf{x}_i)로부터 깨끗한(denoised) 샘플 을 예측하도록 훈련된다.

역전이 평균(reverse mean) 표현식에서, ground-truth 클린 샘플 x\mathbf{x}를 모델 출력 xϕ(xi,i)\mathbf{x}_\phi(\mathbf{x}_i,i)로 대체하면 다음의 모델이 된다.

μϕ(xi,i)=αˉi1βi21αˉi2xϕ(xi,i)+(1αˉi12)αi1αˉi2xi\mu_\phi(\mathbf{x}_i,i)=\frac{\bar{\alpha}_{i-1}\beta_i^2}{1-\bar{\alpha}_i^2}\mathbf{x}_\phi(\mathbf{x}_i,i)+\frac{(1-\bar{\alpha}_{i-1}^2)\alpha_i}{1-\bar{\alpha}_i^2}\mathbf{x}_i

ϵ\epsilon-prediction 공식과 유사하게, 학습 목적은 다음과 같이 표현된다.

μϕ(xi,i)μ(xi,x0,i)22xϕ(xi,i)x022,x0pdata\|\mu_\phi(\mathbf{x}_i,i)-\mu(\mathbf{x}_i,\mathbf{x}_0,i)\|_2^2\propto\|\mathbf{x}_\phi(\mathbf{x}_i,i)-\mathbf{x}_0\|_2^2,\quad\mathbf{x}_0\sim p_\text{data}

즉, 모델은 noisy 버전 xi\mathbf{x}_i로부터 원본 데이터 샘플 x0\mathbf{x}_0을 직접 예측하도록 훈련된다. 이 동등성 덕분의 mean-matching loss는 다음과 같이 정리된다.

EiEx0pdataEϵN(0,I)[ωixϕ(xi,i)x022]\mathbb{E}_i\mathbb{E}_{\mathbf{x}_0\sim p_\text{data}}\mathbb{E}_{\epsilon\sim\mathcal{N}(\mathbf{0},\mathbf{I})}\left[\omega_i\|\mathbf{x}_\phi(\mathbf{x}_i,i)-\mathbf{x}_0\|_2^2\right]

여기서 ωi\omega_i는 timestep ii에 따른 가중 함수이다.

이 손실은 최소제곱 문제 이므로, 최적해는 다음과 같다.

x(xi,i)=E[x0xi],xipi\mathbf{x}^\ast(\mathbf{x}_i,i)=\mathbb{E}[\mathbf{x}_0\mid\mathbf{x}_i],\quad\mathbf{x}_i\sim p_i

즉, 모델은 timestep ii에서 noisy한 관측 xi\mathbf{x}_i이 주어졌을 때 기댓값 형태의 깨끗한 데이터를 예측해야 한다는 의미이다.

x\mathbf{x}-prediction과 ϵ\epsilon-prediction 파라미터화는 수학적으로 동등하며, 정방향 과정으로 다음과 같이 연결된다.

xi=αˉixϕ(xi,i)+1αˉi2ϵϕ(xi,i)\mathbf{x}_i=\bar{\alpha}_i\mathbf{x}_\phi(\mathbf{x}_i,i)+\sqrt{1-\bar{\alpha}_i^2}\epsilon_\phi(\mathbf{x}_i,i)

즉, 모델이 클린 샘플 xϕ(xi,i)\mathbf{x}_\phi(\mathbf{x}_i,i)을 예측하든, 노이즈 ϵϕ(xi,i)\epsilon_\phi(\mathbf{x}_i,i)를 예측하든, 두 예측이 적절히 결합되면 정방향 노이즈 과정 아래에서 항상 동일한 xi\mathbf{x}_i를 재구성할 수 있다.

5️⃣ DDPM의 ELBO

DDPM의 ELBO를 바로 알아보기 전에 우선 DDPM의 joint generative distribution 을 알아보자.

pϕ(x0,x1:L):=pϕ(x0x1)pϕ(x1x2)pϕ(xL1xL)pprior(xL)p_\phi(\mathbf{x}_0,\mathbf{x}_{1:L}):=p_\phi(\mathbf{x}_0\mid\mathbf{x}_1)p_\phi(\mathbf{x}_1\mid\mathbf{x}_2)\cdots p_\phi(\mathbf{x}_{L-1}\mid\mathbf{x}_L)p_\text{prior}(\mathbf{x}_L)

그리고 데이터에 대한 주변 생성 모델(marginal generative model) 은 다음과 같다.

pϕ(x0):=pϕ(x0,x1:L)dx1:Lp_\phi(\mathbf{x}_0):=\int p_\phi(\mathbf{x}_0,\mathbf{x}_{1:L})d\mathbf{x}_{1:L}

사실 Ldiffusion\mathcal{L}_\text{diffusion}에 따른 DDPM 훈련은 최대우도추정(MLE)에 의해 엄밀하게 정당화된다. 즉, DDPM의 목적함수는 이전 글에서 소개된 VAE \cdot HVAE의 ELBO와 유사한 형태를 가지며, 이는 로그 가능도의 lower bound로 작동한다.

정리 2.2.3 – DDPM의 ELBO

logpϕ(x0)LELBO(x0;ϕ):=Lprior(x0)+Lrecon.(x0;ϕ)+Ldiffusion(x0;ϕ)\begin{aligned} -\log p_\phi(\mathbf{x}_0)&\le-\mathcal{L}_\text{ELBO}(\mathbf{x}_0;\phi) \\ &:=\mathcal{L}_\text{prior}(\mathbf{x}_0)+\mathcal{L}_\text{recon.}(\mathbf{x}_0;\phi)+\mathcal{L}_\text{diffusion}(\mathbf{x}_0;\phi) \\ \end{aligned}

여기서 각 항은 다음과 같이 정의된다.

Lprior(x0):=DKL(p(xLx0)pprior(xL))Lrecon.(x0;ϕ):=Ep(x1x0)[logpϕ(x0x1)]Ldiffusion(x0;ϕ):=i=1LEp(xix0)[DKL(p(xi1xi,x0)pϕ(xi1xi))]\begin{aligned} \mathcal{L}_\text{prior}(\mathbf{x}_0)&:=\mathcal{D}_\text{KL}\left(p(\mathbf{x}_L\mid\mathbf{x}_0)\|p_\text{prior}(\mathbf{x}_L)\right) \\ \mathcal{L}_\text{recon.}(\mathbf{x}_0;\phi)&:=\mathbb{E}_{p(\mathbf{x}_1\mid\mathbf{x}_0)}\left[-\log p_\phi(\mathbf{x}_0\mid\mathbf{x}_1)\right] \\ \mathcal{L}_\text{diffusion}(\mathbf{x}_0;\phi)&:=\sum_{i=1}^L\mathbb{E}_{p(\mathbf{x}_i\mid\mathbf{x}_0)}\left[\mathcal{D}_\text{KL}\left(p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x}_0)\|p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\right)\right] \end{aligned}

📝 정리 2.2.3의 증명

우선 marginal log-likelihood를 먼저 구해보자.

logpϕ(x)=logpϕ(x,x0:L)dx0dxL\log p_\phi(\mathbf{x})=\log\int\cdots\int p_\phi(\mathbf{x},\mathbf{x}_{0:L})d\mathbf{x}_0\cdots d\mathbf{x}_L

여기서 등장한 결합 분포는 다음과 같다.

pϕ(x,x0:L)=pprior(xL)i=1Lpϕ(xi1xi)pϕ(xx0)p_\phi(\mathbf{x},\mathbf{x}_{0:L})=p_\text{prior}(\mathbf{x}_L)\prod_{i=1}^L p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)\cdot p_\phi(\mathbf{x}\mid\mathbf{x}_0)

이제 변분 분포(variational distribution) p(x0:Lx)p(\mathbf{x}_{0:L}\mid\mathbf{x})를 도입하고 logpϕ(x)\log p_\phi(\mathbf{x})를 다시 서술해보자.

logpϕ(x)=logp(x0:Lx)pϕ(x,x0:L)p(x0:Lx)dx0dxL=logEp(x0:Lx)[pϕ(x,x0:L)p(x0:Lx)]\begin{aligned} \log p_\phi(\mathbf{x})&=\log\int\cdots\int p(\mathbf{x}_{0:L}\mid\mathbf{x})\frac{p_\phi(\mathbf{x},\mathbf{x}_{0:L})}{p(\mathbf{x}_{0:L}\mid\mathbf{x})}d\mathbf{x}_0\cdots d\mathbf{x}_L \\ &=\log\mathbb{E}_{p(\mathbf{x}_{0:L}\mid\mathbf{x})}\left[\frac{p_\phi(\mathbf{x},\mathbf{x}_{0:L})}{p(\mathbf{x}_{0:L}\mid\mathbf{x})}\right] \\ \end{aligned}

여기에 얀센 부등식 (logE[Z]E[logZ]\log\mathbb{E}[Z]\ge\mathbb{E}[\log Z])을 적용하면 ELBO를 얻을 수 있다.

logpϕ(x)Ep(x0:Lx)[logpϕ(x,x0:L)p(x0:Lx)]=:LELBO\log p_\phi(\mathbf{x})\ge\mathbb{E}_{p(\mathbf{x}_{0:L}\mid\mathbf{x})}\left[\log\frac{p_\phi(\mathbf{x},\mathbf{x}_{0:L})}{p(\mathbf{x}_{0:L}\mid\mathbf{x})}\right]=:\mathcal{L}_\text{ELBO}

그러므로 즉, logpϕ(x)LELBO-\log p_\phi(\mathbf{x})\le-\mathcal{L}_\text{ELBO}이다.

다음으로 변분 분포 p(x0:Lx)p(\mathbf{x}_{0:L}\mid\mathbf{x})가 다음과 같이 분해된다고 가정해보자.

p(x0:Lx)=p(xLx)i=1Lp(xi1xi,x)p(\mathbf{x}_{0:L}\mid\mathbf{x})=p(\mathbf{x}_L\mid\mathbf{x})\prod_{i=1}^Lp(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})

이제 결합 분포와 변분 분포의 전개식을 ELBO 식에 대입하면 다음과 같다.

LELBO=Ep(x0:Lx)[logpprior(xL)+i=1Llogpϕ(xi1xi)+logpϕ(xx0)logp(xLx)i=1Llogp(xi1xi,x)]\begin{aligned} \mathcal{L}_\text{ELBO}=\mathbb{E}_{p(\mathbf{x}_{0:L}\mid\mathbf{x})}[&\log p_\text{prior}(\mathbf{x}_L)+\sum_{i=1}^L\log p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)+\log p_\phi(\mathbf{x}\mid\mathbf{x}_0) \\ &-\log p(\mathbf{x}_L\mid\mathbf{x})-\sum_{i=1}^L\log p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})] \\ \end{aligned}

여기서 음의 ELBO를 구할 예정인데, 위의 각 항들을 항들의 dependency와 적절한 marginalization 적용을 통해 그룹화하여 식을 정리하면 구할 수 있다.

LELBO=Ep(x0x)[logpϕ(xx0)]+Ep(xLx)[logp(xLx)pprior(xL)]+i=1LEp(xix)[Ep(xi1xi,x)[logp(xi1xi,x)pϕ(xi1xi)]]\begin{aligned} -\mathcal{L}_\text{ELBO}=&\mathbb{E}_{p(\mathbf{x}_0\mid\mathbf{x})}[-\log p_\phi(\mathbf{x}\mid\mathbf{x}_0)]+\mathbb{E}_{p(\mathbf{x}_L\mid\mathbf{x})}\left[\log\frac{p(\mathbf{x}_L\mid\mathbf{x})}{p_\text{prior}(\mathbf{x}_L)}\right] \\ &+\sum_{i=1}^L\mathbb{E}_{p(\mathbf{x}_i\mid\mathbf{x})}\left[\mathbb{E}_{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})}\left[\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}\right]\right] \\ \end{aligned}

마지막 항은 다음의 분해(factorization)를 통해 유도하였다.

p(xi,xi1x)=p(xix)p(xi1xi,x)p(\mathbf{x}_i,\mathbf{x}_{i-1}\mid\mathbf{x})=p(\mathbf{x}_i\mid\mathbf{x})p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})

그리고 이 분해를 기댓값 항에 적용하여 위 음의 ELBO 식의 마지막 항을 얻었다.

Ep(x0:Lx)[logp(xi1xi,x)pϕ(xi1xi)]=p(xix)[p(xi1xi,x)logp(xi1xi,x)pϕ(xi1xi)dxi1]dxi=Ep(xix)[Ep(xi1xi,x)[logp(xi1xi,x)pϕ(xi1xi)]]\begin{aligned} &\mathbb{E}_{p(\mathbf{x}_{0:L}\mid\mathbf{x})}\left[\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}\right] \\ &=\int p(\mathbf{x}_i\mid\mathbf{x})\left[\int p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}d\mathbf{x}_{i-1}\right]d\mathbf{x}_i \\ &=\mathbb{E}_{p(\mathbf{x}_i\mid\mathbf{x})}\left[\mathbb{E}_{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})}\left[\log\frac{p(\mathbf{x}_{i-1}\mid\mathbf{x}_i,\mathbf{x})}{p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)}\right]\right] \\ \end{aligned}

LELBO-\mathcal{L}_\text{ELBO}식의 세 항들을 각각 Lrecon.\mathcal{L}_\text{recon.}, Lprior\mathcal{L}_\text{prior}, 그리고 Ldiffusion\mathcal{L}_\text{diffusion}으로 정의하면 정리 2.2.3에서의 ELBO 식 유도가 마무리된다. \blacksquare

DDPM의 ELBO는 다음과 같은 세 가지 구성 요소를 가진다.

  • Lprior\mathcal{L}_\text{prior}: 노이즈 스케쥴 βi{\beta_i}를 적절히 선택하면 p(x0)p(\cdot\mid\mathbf{x}_0)ppriorp_\text{prior}와 거의 같아져 이 항은 사실상 무시할 수 있을 정도로 작아진다.

  • Lrecon.\mathcal{L}_\text{recon.}: Monte Carlo 추정으로 근사하여 실용적으로 최적화할 수 있다.

  • Ldiffusion\mathcal{L}_\text{diffusion}: 각 단계 ii에서 모델의 역전이 분포 pϕ(xi1xi)p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)를 실제 분포 p(xi1xi)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)맞추는 역할을 한다.

⭐️ Remark

Diffusion 모델의 변분적 시각은 HVAE 구조와 놀라울 정도로 잘 들어맞는다.

  1. Encoder는 학습되지 않는 고정된 forward noising process 이다.
  2. 잠재변수 x1:T\mathbf{x}_{1:T}는 데이터와 동일한 차원을 가진다.
  3. 학습은 동일한 ELBO를 최대화하는 방식으로 진행된다.
  4. VAE와 달리 학습된 encoder도 없고, 레벨별 KL 항도 없다.
  5. 대신, 학습 과정이 큰 노이즈 \rightarrow 작은 노이즈로 이어지는 well-conditioned된 일련의 denoising 문제로 자연스럽게 분해된다.

6️⃣ 샘플링

ϵ\epsilon-prediction 모델 ϵϕ×(xi,i)\epsilon_{\phi^\times}(\mathbf{x}_i,i)의 학습이 끝나면, 샘플링은 아래 그림처럼 순차적으로(sequentially) 진행되며, 이제 실제 역전이 커널 대신 학습된 파라미터화된 전이분포 pϕ×(xi1xi)p_{\phi^\times}(\mathbf{x}_{i-1}\mid\mathbf{x}_i)를 사용한다. 여기서 ×\times는 파라미터가 학습되어 frozen 된 상태임을 나타낸다.

좀 더 구체적으로는, 무작위 초기값 xLpprior=N(0,1)\mathbf{x}_L\sim p_\text{prior}=\mathcal{N}(\mathbf{0},\mathbf{1})에서 출발하여 i=L,L1,,1i=L,L-1,\ldots,1 순서로 다음 규칙에 따라 반복적으로 샘플링한다.

xi11αi(xi1αi21αˉi2ϵϕ×(xi,i))μϕ×(xi,i)+σ(i)ϵi,ϵiN(0,I)\mathbf{x}_{i-1}\leftarrow\underbrace{\frac{1}{\alpha_i}\left(\mathbf{x}_i-\frac{1-\alpha_i^2}{\sqrt{1-\bar{\alpha}_i^2}}\epsilon_{\phi^\times}(\mathbf{x}_i,i)\right)}_{\mu_{\phi^\times}(\mathbf{x}_i,i)}+\sigma(i)\epsilon_i,\quad\epsilon_i\sim\mathcal{N}(\mathbf{0},\mathbf{I})

이 denoising(복원) 과정은 x0\mathbf{x}_0에 도달할 때까지 반복되며, 이 최종 x0\mathbf{x}_0새로운 클린 생성 샘플(clean generated sample) 이 된다.

📒 DDPM 샘플링에 대한 또 다른 해석

위에서 언급된 xi=αˉixϕ(xi,i)+1αˉi2ϵϕ(xi,i)\mathbf{x}_i=\bar{\alpha}_i\mathbf{x}_\phi(\mathbf{x}_i,i)+\sqrt{1-\bar{\alpha}_i^2}\epsilon_\phi(\mathbf{x}_i,i) 식에 따르면 학습된 노이즈 예측 ϵϕ×(xi,i)\epsilon_{\phi^\times}(\mathbf{x}_i,i)에 대응하는 클린 샘플 예측은 다음과 같이 쓸 수 있다.

xϕ×(xi,i)=xi1αˉi2αˉiϵϕ×(xi,i)\mathbf{x}_{\phi^\times}(\mathbf{x}_i,i)=\mathbf{x}_i-\frac{\sqrt{1-\bar{\alpha}_i^2}}{\bar{\alpha}_i}\epsilon_{\phi^\times}(\mathbf{x}_i,i)

이 표현을 위의 샘플링 규칙에 대입하면 다음과 같은 동등한 형태의 업데이트 식이 만들어진다.

xi(interpolation between xi and xϕ×)+σ(i)ϵi\mathbf{x}_i\leftarrow(\text{interpolation between }\mathbf{x}_i\text{ and }\mathbf{x}_{\phi^\times})+\sigma(i)\epsilon_i

이는 각 단계의 중심이 클린 예측 xϕ×\mathbf{x}_{\phi^\times}에 있다는 것을 의미하며, 여기에 추가적으로 σ(i)\sigma(i)로 스케일된 Gaussian 노이즈가 더해진다.

이 관점에서 DDPM 샘플링은 다음 두 과정을 번갈아 수행하는 반복적 복원 과정(iterative denoising process) 으로 볼 수 있다.

  1. 현재 noisy 입력 xi\mathbf{x}_i에서 클린 데이터 추정치 xϕ×(xi,i)\mathbf{x}_{\phi^\times}(\mathbf{x}_i,i)를 계산한다.
  2. 그 추정치를 사용해 더 적은 노이즈를 가진 xi1\mathbf{x}_{i-1}를 샘플링한다.

이 과정을 계속 반복하면, 초기 무작위 노이즈 xL\mathbf{x}_L는 점차 구조를 갖춰가고, 마침내 데이터 분포의 샘플과 가까운 x0\mathbf{x}_0을 얻게 된다.

그러나 xϕ×\mathbf{x}_{\phi^\times}가 조건부 기댓값을 최소화하는 최적의 디노이저(optimal denoiser) 로 학습되었다 하더라도, 이는 어디까지나 주어진 noisy 입력 xi\mathbf{x}_i에 대한 평균적인 샘플만을 예측할 수 있을 뿐이다.

이 때문에 특히 노이즈가 매우 큰 초기 단계에서는 심하게 훼손된 입력으로부터 세부 구조를 복원하기가 어려워 예측된 클린 샘플이 흐릿해지는(blurry) 문제가 발생한다.

이 관점에서 보면, diffusion 모델의 샘플링 과정은 높은 노이즈 \rightarrow 낮은 노이즈로 점진적으로 이동 하며 클린 신호의 추정치를 점점 더 정교하게 다듬어가는 과정이라 할 수 있다.

  • 초기 단계에서는 전체적이고 거친(global & coarse) 구조가 형성되고,
  • 후반 단계로 갈수록 세밀한 디테일(finer details) 이 추가된다.

이러한 점진적 복원 덕분에 노이즈가 제거될수록 샘플은 점점 더 현실적인 형태를 띄게 된다.

🐌 DDPM의 느린 샘플링 속도

DDPM의 샘플링은 태생적으로 느릴 수밖에 없다. 그 이유는 역전이 과정이 완전히 sequential 하고, 매 단계가 다음 단계에 직접적으로 의존 하기 때문이다.

조금 더 구체적으로는 다음과 같은 제약이 존재한다.

  1. 이론적으로는 역전이 분포를 정확히 모델링할 수 있다.
    표현력이 충분히 큰 pϕ(xi1xi)p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)는 이론적으로 진짜 역전이 분포 p(xi1xi)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i)정확하게 모사 할 수 있다.

  2. 하지만 실제 구현에서는 단일 Gaussian 근사에 의존한다.
    실제 DDPM 모델은 역전이 분포를 하나의 Gaussian으로 pϕ(xi1xi)=N(μϕ(xi,i),σ2(i)I)p_\phi(\mathbf{x}_{i-1}\mid\mathbf{x}_i)=\mathcal{N}(\mu_\phi(\mathbf{x}_i,i),\sigma^2(i)\mathbf{I})와 같이 근사한다.

    이 단일 Gaussian 가정은 구현과 학습을 단순하게 만들지만, 표현력을 크게 제한 하는 요소가 된다.

  3. 작은 β\beta에서는 문제가 없지만, 큰 β\beta에서는 한계가 드러난다.
    Forward 노이즈 스케일 βi\beta_i가 작을 때 실제 역전이 분포는 거의 Gaussian이므로 단일 Gaussian 근사가 상당히 정확하다.

    그러나 βi\beta_i가 커지면, 실제 역전이 분포는 multimodal 하거나 non-Gaussianity가 강해진다. 이 경우 단일 Gaussian으로는 그 복잡한 분포를 표현할 수 없다.

  4. 그래서 β\beta를 매우 작게 설정하고, 그 결과 단계 수가 많아진다.
    표현력을 유지하려면 각 단계의 forward 노이즈 스케일 βi\beta_i매우 작게 설정해야 한다. 그러면 각 단계의 변화폭이 너무 작아지므로 전체 과정은 수백~수천 단계로 매우 촘촘하게 쪼개진다.

즉, DDPM 샘플링이 느린 이유는 모든 스텝이 이전 스텝을 반드시 기다려야 하는 완전 순차적 구조와 그리고 정확도를 유지하기 위해 요구되는 작은 β\beta많은 timestep 때문이다.


✅ 요약

DDPM은 데이터를 점진적으로 노이즈화하는 고정된 정방향 과정과, 이를 거꾸로 복원하는 학습 가능한 역방향 과정으로 구성된 변분적 생성 모델이다.

직접 계산이 불가능한 역전이 분포 p(xi1xi)p(\mathbf{x}_{i-1}\mid\mathbf{x}_i) 를 처리하기 위해, DDPM은 깨끗한 데이터 x0\mathbf{x}_0조건부화하여 역전이 조건부 p(xi1xi,x0)p(\mathbf{x}_{i-1}\mid \mathbf{x}_i,\mathbf{x}_0)닫힌형 Gaussian 이 된다는 성질을 활용한다.

이를 통해 학습 목표는 각 단계의 조건부 분포를 KL 관점에서 맞추는 단순한 회귀 문제로 정리되며, 실용적으로는 노이즈 자체를 예측하는 ϵ\epsilon-prediction(또는 동등한 x\mathbf{x}-prediction) 방식으로 구현된다. 결과적으로 DDPM의 학습은 "각 timestep에서 노이즈를 정확히 제거하는 법" 을 학습하는 과정이 된다.

샘플 생성 시에는 표준 정규분포에서 시작하여 학습된 평균 \cdot 분산 규칙에 따라 순차적으로 노이즈를 제거하며 x0\mathbf{x}_0 으로 이동한다. 이 과정은 coarse-to-fine 구조를 가지며 안정적이지만, 모든 단계가 앞 단계에 의존하는 완전 순차적 구조 때문에 계산량이 많고(수백~수천 스텝) 샘플링 속도가 느리다는 근본적 한계를 가진다.

이러한 제약은 이후 DDIM, ODE 기반 샘플러 등 고속 생성 기법으로 발전하는 동기를 제공한다.


📄 출처

[1] Lai, Chieh-Hsin, et al. The Principles of Diffusion Models. arXiv, 24 Oct. 2025, arXiv:2510.21890.

profile
Korea Univ. Computer Science & Engineering

0개의 댓글