검색
← 모듈 로드맵

잡음 제거 확산 확률 모델 (DDPM)

논문 · 전문가 · Jonathan Ho 외 2명 · 2020 · arXiv

원제 · Denoising Diffusion Probabilistic Models

잡음을 더하는 과정을 거꾸로 되돌리며 '더해진 잡음 맞히기'로 학습해 고품질 이미지를 만든 확산 모델

먼저 알아야 할 것

정규분포와 재매개변수화KL 발산변분 하한(VAE의 ELBO)마르코프 연쇄U-Net · 합성곱 신경망

다루는 내용

이미지에 가우시안 잡음을 T=1000단계에 걸쳐 조금씩 더하는 고정된 순방향 과정과, 이를 한 걸음씩 되돌리는 학습된 역방향 과정으로 이루어진 확산 확률 모델로 고품질 이미지를 생성합니다. 역방향 평균을 더해진 잡음을 예측하는 신경망으로 매개변수화하면 변분 경계가 잡음 제거 점수 매칭과 같은 모양이 되고, 가중치를 뺀 단순 제곱 오차 L_simple로 학습할 때 표본 품질이 가장 좋았습니다. 조건 없는 CIFAR10에서 IS 9.46 · FID 3.17을 얻었고 LSUN 256x256에서는 ProgressiveGAN과 비슷한 품질을 보였습니다. 다만 로그 가능도는 다른 가능도 기반 모델보다 경쟁력이 없습니다.

초록

저자가 쓴 초록을 옮긴 것입니다.

확산 확률 모델을 이용한 고품질 이미지 합성 결과를 제시합니다. 확산 확률 모델은 비평형 열역학의 고찰에서 영감을 받은 잠재 변수 모델의 한 종류입니다. 가장 좋은 결과는 확산 확률 모델과, 랑주뱅 동역학을 쓰는 잡음 제거 점수 매칭 사이의 새로운 연결에 따라 설계한 가중 변분 경계로 학습해 얻었습니다. 또한 우리 모델은 점진적인 손실 압축 해제 방식을 자연스럽게 허용하며, 이는 자기회귀 디코딩의 일반화로 해석할 수 있습니다. 조건 없는 CIFAR10 데이터셋에서 인셉션 점수 9.46과 최고 수준(state-of-the-art)의 FID 점수 3.17을 얻었습니다. 256x256 LSUN에서는 ProgressiveGAN과 비슷한 표본 품질을 얻었습니다. 구현은 https://github.com/hojonathanho/diffusion 에 공개되어 있습니다.

해설

잡음 제거 확산 확률 모델 (DDPM)

이미지에 잡음을 조금씩 더해 완전한 잡음으로 만드는 과정을 거꾸로 되돌리도록 신경망을 학습시켜, 잡음에서 고품질 이미지를 만들어 낸 논문입니다. "더해진 잡음 맞히기"라는 단순한 손실로 당시 최고 수준의 품질을 보였습니다.

항목내용
원제Denoising Diffusion Probabilistic Models
저자Jonathan Ho, Ajay Jain, Pieter Abbeel (UC 버클리)
발표2020 · NeurIPS 2020 · arXiv 2006.11239
트랙 · 수준생성 모델 · 심화
먼저 알면 좋은 것정규분포와 재매개변수화, KL 발산, 변분 하한(VAE의 ELBO), 마르코프 연쇄, U-Net

들어가기 전에

이 해설은 아래 내용을 안다고 보고 씁니다. 처음이라면 먼저 읽고 오면 수식과 손계산을 훨씬 쉽게 따라올 수 있습니다.

한눈에 보기

  • 확산 모델이 "잡음을 더하는 고정된 순방향 과정"과 "잡음을 걷어 내는 학습된 역방향 과정" 두 개로 이루어진다는 것을 알게 됩니다.
  • 순방향 과정 덕분에 아무 시점 tt의 잡음 섞인 이미지를 한 번에 만들 수 있는 식 q(xt∣x0)q(x_t \mid x_0)를 손으로 계산해 봅니다.
  • 역방향 평균을 "더해진 잡음 ϵ\epsilon을 예측하는 신경망"으로 바꿔 쓰면, 학습 목표가 단순한 제곱 오차 LsimpleL_{\text{simple}}이 되는 과정을 따라갑니다.
  • 이 매개변수화가 잡음 제거 점수 매칭 · 랑주뱅 동역학과 같은 모양이라는 논문의 핵심 연결을 이해합니다.
  • CIFAR10 FID 3.17 같은 결과와 함께, 로그 가능도는 경쟁력이 없다는 한계도 확인합니다.

초록 (번역)

확산 확률 모델을 이용한 고품질 이미지 합성 결과를 제시합니다. 확산 확률 모델은 비평형 열역학의 고찰에서 영감을 받은 잠재 변수 모델의 한 종류입니다. 가장 좋은 결과는 확산 확률 모델과, 랑주뱅 동역학을 쓰는 잡음 제거 점수 매칭 사이의 새로운 연결에 따라 설계한 가중 변분 경계로 학습해 얻었습니다. 또한 우리 모델은 점진적인 손실 압축 해제 방식을 자연스럽게 허용하며, 이는 자기회귀 디코딩의 일반화로 해석할 수 있습니다. 조건 없는 CIFAR10 데이터셋에서 인셉션 점수 9.46과 최고 수준(state-of-the-art)의 FID 점수 3.17을 얻었습니다. 256x256 LSUN에서는 ProgressiveGAN과 비슷한 표본 품질을 얻었습니다. 구현은 github.com/hojonathanho/diffusion 에 공개되어 있습니다.

무엇을 풀었나

2020년 무렵 이미지 생성은 GAN, 자기회귀 모델, 흐름(flow) 모델, VAE가 이끌고 있었습니다. 확산 확률 모델은 2015년 Sohl-Dickstein 등이 이미 제안했지만, 논문에 따르면 정의가 간단하고 학습도 효율적인데도 고품질 표본을 만들 수 있다는 것을 보인 적이 없었습니다.

이 논문이 보인 것은 세 가지입니다.

  1. 확산 모델로도 고품질 이미지를 만들 수 있고, 때로는 다른 종류의 생성 모델보다 낫습니다.
  2. 역방향 과정을 특정한 방식("잡음 예측")으로 매개변수화하면, 학습은 여러 잡음 수준의 잡음 제거 점수 매칭과, 표본 생성은 담금질 랑주뱅 동역학과 같은 모양이 됩니다. 저자들은 이 연결을 주요 기여로 꼽습니다.
  3. 표본 생성 과정은 일종의 점진적 디코딩이며, 자기회귀 디코딩을 일반화한 것으로 볼 수 있습니다.

핵심 아이디어

1. 순방향 과정 — 잡음을 조금씩 더하기

직관 (해설용 비유): 맑은 물에 잉크를 한 방울씩 떨어뜨리는 장면을 떠올리면 됩니다. 한 방울은 티가 거의 안 나지만, 1000방울이 쌓이면 원래 물이 어땠는지 알 수 없을 만큼 흐려집니다. 순방향 과정은 이미지에 이렇게 아주 작은 가우시안 잡음을 TT번 더해 결국 순수한 잡음으로 만드는 과정입니다. 이 과정에는 학습할 것이 없습니다.

단계별로 보면:

  1. 깨끗한 이미지 x0x_0에서 시작합니다. 픽셀 값은 0~255 정수를 [−1,1][-1, 1]로 선형 변환해 둡니다.
  2. 매 단계 tt마다 이전 이미지를 1−βt\sqrt{1-\beta_t}배로 살짝 줄이고, 분산 βt\beta_t짜리 잡음을 더합니다.
  3. 줄이는 이유는 잡음을 더해도 전체 분산이 커지지 않게 하려는 것입니다.
  4. TT단계가 끝나면 xTx_T는 거의 표준정규분포 N(0,I)\mathcal{N}(0, I)와 같아집니다.

수식 (논문 식 2 · 4):

q(xt∣xt−1)=N ⁣(xt; 1−βt xt−1, βtI)q(x_t \mid x_{t-1}) = \mathcal{N}\!\left(x_t;\ \sqrt{1-\beta_t}\,x_{t-1},\ \beta_t I\right)
q(xt∣x0)=N ⁣(xt; αˉt x0, (1−αˉt)I),αt:=1−βt,αˉt:=∏s=1tαsq(x_t \mid x_0) = \mathcal{N}\!\left(x_t;\ \sqrt{\bar\alpha_t}\,x_0,\ (1-\bar\alpha_t) I\right), \qquad \alpha_t := 1-\beta_t,\quad \bar\alpha_t := \prod_{s=1}^{t}\alpha_s

기호 풀이:

기호뜻
x0x_0원래 데이터(깨끗한 이미지)
x1,…,xTx_1, \dots, x_T잡음이 점점 더 섞인 잠재 변수. 모두 데이터와 같은 차원
βt\beta_ttt단계에서 더하는 잡음의 분산(분산 일정표, variance schedule)
αt\alpha_t1−βt1-\beta_t. 한 단계에서 남는 신호 비율(분산 기준)
αˉt\bar\alpha_tα1\alpha_1부터 αt\alpha_t까지의 곱. tt단계까지 누적해서 남은 신호 비율
N(x;μ,Σ)\mathcal{N}(x; \mu, \Sigma)평균 μ\mu, 공분산 Σ\Sigma인 정규분포

두 번째 식이 핵심입니다. tt번을 차례로 더할 필요 없이, ϵ∼N(0,I)\epsilon \sim \mathcal{N}(0, I) 하나만 뽑으면 바로 xt=αˉt x0+1−αˉt ϵx_t = \sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\epsilon로 만들 수 있습니다. 그래서 학습할 때 시점 tt를 무작위로 골라 한 항씩만 최적화할 수 있습니다.

숫자로 해 보기 (해설용 — 1차원, T=2T=2짜리 장난감 설정):

β1=0.1\beta_1 = 0.1, β2=0.2\beta_2 = 0.2라고 하겠습니다(논문 값 아님).

  • α1=0.9\alpha_1 = 0.9, α2=0.8\alpha_2 = 0.8
  • αˉ1=0.9\bar\alpha_1 = 0.9, αˉ2=0.9×0.8=0.72\bar\alpha_2 = 0.9 \times 0.8 = 0.72
  • 픽셀 하나 x0=1.0x_0 = 1.0, 뽑은 잡음 ϵ=0.5\epsilon = 0.5라면
  • x2=0.72×1.0+0.28×0.5≈0.849+0.529×0.5≈0.849+0.265=1.113x_2 = \sqrt{0.72}\times 1.0 + \sqrt{0.28}\times 0.5 \approx 0.849 + 0.529\times0.5 \approx 0.849 + 0.265 = 1.113

신호 계수 0.8490.849와 잡음 계수 0.5290.529를 각각 제곱해 더하면 0.72+0.28=10.72 + 0.28 = 1입니다. 신호를 줄인 만큼 잡음을 채워 전체 분산이 1로 유지됩니다.

논문 설정에서 직접 계산해 보면 (해설용 계산): 논문은 T=1000T = 1000, βt\beta_t를 β1=10−4\beta_1 = 10^{-4}에서 βT=0.02\beta_T = 0.02까지 선형으로 늘립니다. 이 일정표로 계산하면 αˉ500≈0.079\bar\alpha_{500} \approx 0.079, αˉ1000≈4×10−5\bar\alpha_{1000} \approx 4\times10^{-5}입니다. 마지막에는 신호 계수 αˉ1000\sqrt{\bar\alpha_{1000}}이 약 0.0060.006밖에 남지 않아 사실상 순수한 잡음입니다. (이 두 숫자는 논문에 적힌 값이 아니라 논문의 일정표로 필자가 계산한 값입니다. 논문은 이때 LT≈10−5L_T \approx 10^{-5} 비트/차원이라고 보고합니다.)

왜 이렇게 했나: βt\beta_t를 데이터 크기 [−1,1][-1,1]에 비해 작게 잡은 이유를 논문은 두 가지로 듭니다. 단계마다 변화가 작아야 역방향 과정도 같은 가우시안 꼴로 근사할 수 있고, 동시에 xTx_T에서는 신호 대 잡음비를 최대한 낮춰야 시작점을 N(0,I)\mathcal{N}(0, I)로 둘 수 있습니다. 일정표는 상수 · 선형 · 이차 중에서 골랐고, 선형을 택했습니다.

2. 역방향 과정 — 잡음을 한 걸음씩 걷어 내기

직관: 잉크가 퍼진 물에서 "직전 한 방울 전"의 모습을 추측하는 일을 1000번 반복하면, 처음의 맑은 물(이미지)에 도착합니다. 한 걸음의 변화가 아주 작기 때문에, 그 한 걸음은 가우시안 하나로 충분히 표현됩니다.

단계별로 보면:

  1. 표준정규분포에서 xTx_T를 뽑습니다.
  2. 신경망이 xtx_t와 시점 tt를 보고 xt−1x_{t-1}의 평균 μθ(xt,t)\mu_\theta(x_t, t)를 냅니다.
  3. 그 평균에 작은 잡음 σtz\sigma_t z를 더해 xt−1x_{t-1}을 뽑습니다.
  4. t=1t = 1까지 반복하면 x0x_0, 즉 생성 이미지가 나옵니다.

수식 (논문 식 1):

pθ(x0:T)=p(xT)∏t=1Tpθ(xt−1∣xt),pθ(xt−1∣xt)=N ⁣(xt−1; μθ(xt,t), Σθ(xt,t))p_\theta(x_{0:T}) = p(x_T)\prod_{t=1}^{T} p_\theta(x_{t-1}\mid x_t), \qquad p_\theta(x_{t-1}\mid x_t) = \mathcal{N}\!\left(x_{t-1};\ \mu_\theta(x_t, t),\ \Sigma_\theta(x_t, t)\right)

기호 풀이:

  • p(xT)=N(xT;0,I)p(x_T) = \mathcal{N}(x_T; 0, I): 시작점(사전 분포)
  • θ\theta: 신경망의 매개변수
  • μθ\mu_\theta: 신경망이 예측하는 한 걸음 뒤의 평균
  • Σθ\Sigma_\theta: 그 분산. 논문은 이것을 학습하지 않고 σt2I\sigma_t^2 I로 고정합니다. σt2=βt\sigma_t^2 = \beta_t와 σt2=β~t=1−αˉt−11−αˉtβt\sigma_t^2 = \tilde\beta_t = \frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}\beta_t 두 가지를 실험했는데 결과가 비슷했습니다.

왜 이렇게 했나: 분산까지 학습하는 선택지도 있었지만, 논문 표 2에서 역방향 분산을 학습하면 학습이 불안정하고 표본 품질도 나빠졌습니다. 그래서 분산은 고정하고 평균만 학습합니다.

3. 학습 목표 — 변분 경계를 KL 항으로 쪼개기

직관: VAE처럼 "데이터의 음의 로그 가능도"의 상한(변분 경계)을 줄입니다. 이 상한을 시점별 조각으로 나누면, 각 조각은 "신경망의 한 걸음"과 "정답 한 걸음"을 비교하는 일이 됩니다.

단계별로 보면:

  1. 변분 경계 LL을 시점별 항 LTL_T, Lt−1L_{t-1}, L0L_0로 나눕니다(식 5).
  2. LTL_T는 xTx_T가 얼마나 표준정규분포에 가까운지입니다. βt\beta_t를 고정했으니 학습할 것이 없는 상수입니다.
  3. Lt−1L_{t-1}은 신경망의 한 걸음 pθ(xt−1∣xt)p_\theta(x_{t-1}\mid x_t)와, x0x_0를 알 때의 "정답 한 걸음" q(xt−1∣xt,x0)q(x_{t-1}\mid x_t, x_0)를 KL로 비교합니다.
  4. 이 정답 한 걸음은 x0x_0가 주어지면 닫힌 꼴의 가우시안으로 계산됩니다(식 6 · 7). 두 가우시안의 KL이므로 몬테카를로 추정 없이 공식으로 셉니다.
  5. L0L_0는 마지막에 정수 픽셀 값으로 바꾸는 이산 디코더 항입니다(식 13).

수식 (논문 식 5):

L=Eq[DKL(q(xT∣x0) ∥ p(xT))⏟LT+∑t>1DKL(q(xt−1∣xt,x0) ∥ pθ(xt−1∣xt))⏟Lt−1−log⁡pθ(x0∣x1)⏟L0]L = \mathbb{E}_q\Big[\underbrace{D_{\mathrm{KL}}\big(q(x_T\mid x_0)\,\|\,p(x_T)\big)}_{L_T} + \sum_{t>1}\underbrace{D_{\mathrm{KL}}\big(q(x_{t-1}\mid x_t, x_0)\,\|\,p_\theta(x_{t-1}\mid x_t)\big)}_{L_{t-1}} \underbrace{-\log p_\theta(x_0\mid x_1)}_{L_0}\Big]

정답 한 걸음의 평균은 다음과 같습니다(식 7).

μ~t(xt,x0)=αˉt−1 βt1−αˉt x0+αt (1−αˉt−1)1−αˉt xt\tilde\mu_t(x_t, x_0) = \frac{\sqrt{\bar\alpha_{t-1}}\,\beta_t}{1-\bar\alpha_t}\,x_0 + \frac{\sqrt{\alpha_t}\,(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}\,x_t

기호 풀이:

  • DKL(q∥p)D_{\mathrm{KL}}(q\|p): 두 분포의 차이(KL 발산)
  • q(xt−1∣xt,x0)q(x_{t-1}\mid x_t, x_0): 순방향 과정의 사후 분포. 깨끗한 원본을 알 때의 정답 한 걸음
  • μ~t\tilde\mu_t: 그 정답 한 걸음의 평균. x0x_0와 xtx_t를 섞은 값
  • Eq\mathbb{E}_q: 순방향 과정으로 만든 x1,…,xTx_1, \dots, x_T에 대한 평균

4. 핵심 전환 — 평균 대신 "더해진 잡음"을 예측하기

직관: "한 걸음 전의 이미지가 어땠을까"를 직접 맞히는 대신, "지금 이미지에 섞인 잡음이 무엇일까"를 맞히게 합니다. 잡음을 알면 그 잡음을 빼는 것으로 한 걸음 전을 계산할 수 있습니다.

단계별로 보면:

  1. xt=αˉt x0+1−αˉt ϵx_t = \sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\epsilon을 x0x_0에 대해 풀어 μ~t\tilde\mu_t에 넣습니다.
  2. 그러면 정답 평균이 xtx_t와 ϵ\epsilon만으로 표현됩니다. xtx_t는 신경망 입력이므로 이미 압니다. 모르는 것은 ϵ\epsilon뿐입니다.
  3. 그래서 신경망 ϵθ(xt,t)\epsilon_\theta(x_t, t)가 ϵ\epsilon을 예측하게 하고, 평균은 그 예측으로 계산합니다(식 11).
  4. 이렇게 바꾸면 Lt−1L_{t-1}은 "진짜 잡음과 예측 잡음의 제곱 오차"에 시점별 가중치를 곱한 꼴이 됩니다(식 12).

수식 (논문 식 11 · 12):

μθ(xt,t)=1αt(xt−βt1−αˉt ϵθ(xt,t))\mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\,\epsilon_\theta(x_t, t)\right)
Ex0,ϵ[βt22σt2 αt (1−αˉt)∥ϵ−ϵθ ⁣(αˉt x0+1−αˉt ϵ, t)∥2]\mathbb{E}_{x_0,\epsilon}\left[\frac{\beta_t^2}{2\sigma_t^2\,\alpha_t\,(1-\bar\alpha_t)}\left\|\epsilon - \epsilon_\theta\!\left(\sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\epsilon,\ t\right)\right\|^2\right]

기호 풀이:

  • ϵ\epsilon: 순방향에서 실제로 더한 표준정규 잡음(정답)
  • ϵθ(xt,t)\epsilon_\theta(x_t, t): 신경망이 예측한 잡음
  • ∥⋅∥2\|\cdot\|^2: 원소별 차이를 제곱해 더한 값
  • 앞의 분수: 시점 tt마다 달라지는 가중치

숫자로 해 보기 (해설용 — 1절의 장난감 설정 이어서):

x2≈1.113x_2 \approx 1.113에서 신경망이 잡음을 정확히 맞혀 ϵθ=0.5\epsilon_\theta = 0.5를 냈다고 하겠습니다.

  • 평균: μθ=10.8(1.113−0.20.28×0.5)≈1.118×(1.113−0.189)≈1.118×0.924≈1.033\mu_\theta = \frac{1}{\sqrt{0.8}}\left(1.113 - \frac{0.2}{\sqrt{0.28}}\times0.5\right) \approx 1.118 \times (1.113 - 0.189) \approx 1.118 \times 0.924 \approx 1.033
  • 잡음 zz를 0으로 두면 x1≈1.033x_1 \approx 1.033입니다. 원본 1.0 쪽으로 한 걸음 다가갔습니다.
  • 같은 예측으로 원본을 한 번에 추정하면(식 15): x^0=(x2−0.28 ϵθ)/0.72≈(1.113−0.265)/0.849≈1.0\hat x_0 = (x_2 - \sqrt{0.28}\,\epsilon_\theta)/\sqrt{0.72} \approx (1.113 - 0.265)/0.849 \approx 1.0

손실도 해 봅니다. 픽셀 두 개짜리 이미지에서 진짜 잡음이 ϵ=(0.5, −1.0)\epsilon = (0.5,\ -1.0)이고 예측이 ϵθ=(0.3, −0.6)\epsilon_\theta = (0.3,\ -0.6)이면, 제곱 오차는 (0.2)2+(0.4)2=0.04+0.16=0.20(0.2)^2 + (0.4)^2 = 0.04 + 0.16 = 0.20입니다.

왜 이렇게 했나: 논문은 세 가지 선택지를 비교합니다. ① 정답 평균 μ~\tilde\mu를 직접 예측 ② 잡음 ϵ\epsilon을 예측 ③ x0x_0를 예측. ③은 초기 실험에서 표본 품질이 나빴습니다. ①은 정식 변분 경계로 학습할 때만 잘 됐고, 단순 제곱 오차로 학습하면 불안정했습니다. ②는 변분 경계에서 ①과 비슷했고, 아래의 단순화한 목표에서는 훨씬 좋았습니다.

랑주뱅 동역학과의 연결: 식 12는 여러 잡음 크기에 걸친 잡음 제거 점수 매칭(denoising score matching) 과 닮았습니다. 그리고 표본 생성(알고리즘 2)은 ϵθ\epsilon_\theta를 데이터 밀도의 학습된 기울기로 쓰는 랑주뱅 동역학(Langevin dynamics) 과 닮았습니다. 즉 "점수 매칭과 비슷한 목표를 최적화하는 것"이 "랑주뱅 비슷한 표본 생성 연쇄를 변분 추론으로 맞추는 것"과 같다는 것이 논문의 결론입니다.

5. 단순화한 목표 L_simple — 가중치를 버리기

직관: 식 12의 가중치를 떼어 내고 "잡음 맞히기 제곱 오차"만 남깁니다. 정식 경계는 아니지만, 결과적으로 쉬운 문제(잡음이 아주 적은 작은 tt)의 비중을 낮추고 어려운 문제(큰 tt)에 집중하게 됩니다.

수식 (논문 식 14):

Lsimple(θ):=Et,x0,ϵ[∥ϵ−ϵθ ⁣(αˉt x0+1−αˉt ϵ, t)∥2]L_{\text{simple}}(\theta) := \mathbb{E}_{t, x_0, \epsilon}\left[\left\|\epsilon - \epsilon_\theta\!\left(\sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\epsilon,\ t\right)\right\|^2\right]
  • tt는 1부터 TT 사이에서 균등하게 뽑습니다.
  • t=1t = 1인 경우는 L0L_0의 근사, t>1t > 1인 경우는 식 12의 가중치 없는 버전에 해당합니다.

학습 절차 (알고리즘 1):

  1. 데이터에서 x0x_0를 하나 뽑습니다.
  2. tt를 {1,…,T}\{1, \dots, T\}에서 균등하게 뽑습니다.
  3. ϵ∼N(0,I)\epsilon \sim \mathcal{N}(0, I)를 뽑습니다.
  4. ∥ϵ−ϵθ(αˉtx0+1−αˉtϵ, t)∥2\|\epsilon - \epsilon_\theta(\sqrt{\bar\alpha_t}x_0 + \sqrt{1-\bar\alpha_t}\epsilon,\ t)\|^2에 대해 경사 하강을 한 번 합니다.
  5. 수렴할 때까지 반복합니다.

표본 생성 절차 (알고리즘 2):

  1. xT∼N(0,I)x_T \sim \mathcal{N}(0, I)
  2. t=T,…,1t = T, \dots, 1에 대해: t>1t > 1이면 z∼N(0,I)z \sim \mathcal{N}(0, I), 아니면 z=0z = 0
  3. xt−1=1αt(xt−1−αt1−αˉtϵθ(xt,t))+σtzx_{t-1} = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{1-\alpha_t}{\sqrt{1-\bar\alpha_t}}\epsilon_\theta(x_t, t)\right) + \sigma_t z
  4. x0x_0를 돌려줍니다.

왜 이렇게 했나: 논문은 정식 변분 경계로 학습하면 부호 길이(로그 가능도)는 더 좋지만, 표본 품질은 LsimpleL_{\text{simple}}이 가장 좋았다고 보고합니다.

6. 신경망 구조와 학습 설정 (원문 기준)

  • 구조: 마스크 없는 PixelCNN++와 비슷한 U-Net 뼈대(Wide ResNet 기반). 가중치 정규화 대신 그룹 정규화를 씀. 16×16 해상도에서 셀프 어텐션 사용
  • 시점 전달: 모든 시점이 매개변수를 공유하고, 시점 tt는 트랜스포머의 사인 위치 임베딩으로 각 잔차 블록에 더해 알려 줌
  • 크기: CIFAR10 모델 3,570만 매개변수, LSUN · CelebA-HQ 모델 1억 1,400만 매개변수, 더 큰 LSUN Bedroom 변형은 약 2억 5,600만 매개변수
  • 하이퍼파라미터: T=1000T = 1000, β1=10−4→βT=0.02\beta_1 = 10^{-4} \to \beta_T = 0.02 선형. 옵티마이저 Adam(기본 하이퍼파라미터), 학습률 2×10−42\times10^{-4}(256×256 이미지는 2×10−52\times10^{-5}). 배치 크기 CIFAR10 128, 큰 이미지 64. 모델 매개변수 EMA 감쇠 0.9999. CIFAR10 드롭아웃 0.1
  • 연산: 모든 실험에 TPU v3-8. CIFAR 모델은 80만 단계 학습에 10.6시간

처리 흐름

mermaid
flowchart LR
    subgraph 학습
    A[깨끗한 이미지 x0] --> B[시점 t 균등 추출]
    B --> C[잡음 epsilon 추출]
    C --> D[x_t = sqrt abar_t · x0 + sqrt 1-abar_t · epsilon]
    D --> E[U-Net이 epsilon 예측]
    E --> F[제곱 오차 L_simple로 경사 하강]
    end
    subgraph 생성
    G[x_T ~ N 0,I] --> H[U-Net이 잡음 예측]
    H --> I[잡음 빼고 작은 잡음 더해 x_t-1]
    I -->|t = T ... 1 반복| H
    I --> J[생성 이미지 x0]
    end

결과

CIFAR10 (조건 없음, 논문 표 1 일부)

모델IS (클수록 좋음)FID (작을수록 좋음)NLL 비트/차원 테스트(학습)
이 논문, 정식 경계 LL (고정 등방 분산)7.67 ± 0.1313.51≤ 3.70 (3.69)
이 논문, LsimpleL_{\text{simple}}9.46 ± 0.113.17≤ 3.75 (3.72)
  • FID 3.17은 클래스 조건부 모델을 포함해 문헌 대부분의 모델보다 좋은 표본 품질이라고 논문은 말합니다. FID는 관례대로 학습 세트 기준이며, 테스트 세트 기준으로는 5.24입니다.

잡음 예측 대 평균 예측 (논문 표 2, CIFAR10)

예측 대상 · 목표ISFID
μ~\tilde\mu 예측 · 정식 경계, 분산 학습7.28 ± 0.1023.69
μ~\tilde\mu 예측 · 정식 경계, 분산 고정8.06 ± 0.0913.22
μ~\tilde\mu 예측 · 단순 제곱 오차학습 불안정학습 불안정
ϵ\epsilon 예측 · 정식 경계, 분산 학습학습 불안정학습 불안정
ϵ\epsilon 예측 · 정식 경계, 분산 고정7.67 ± 0.1313.51
ϵ\epsilon 예측 · LsimpleL_{\text{simple}}9.46 ± 0.113.17

LSUN 256×256 (논문 그림 · 표 3)

  • LSUN Church FID 7.89, LSUN Bedroom FID 6.36(큰 모델 4.90), LSUN Cat FID 19.75
  • 초록은 LSUN 표본 품질을 ProgressiveGAN과 비슷하다고 정리합니다.

압축 관점의 결과

  • 학습 · 테스트 부호 길이 차이는 최대 0.03 비트/차원입니다(과적합 없음의 근거).
  • 표본 품질이 가장 좋은 CIFAR10 모델은 비율(rate) 1.78 비트/차원, 왜곡(distortion) 1.97 비트/차원이며, 이는 0~255 척도에서 평균 제곱근 오차 0.95에 해당합니다.
  • 손실 없는 부호 길이의 절반 넘게가 눈에 띄지 않는 세부를 묘사하는 데 쓰인다고 논문은 해석합니다.
  • 역방향 과정 중간 결과를 보면 큰 형태가 먼저 나타나고 세부가 마지막에 나타납니다.

왜 중요한가 · 이후 영향

  • 확산 모델이 "쓸 만하다"는 첫 증거: 이미 있던 확산 확률 모델로 GAN과 견줄 표본 품질을 처음 보였습니다. 이후 확산 모델 연구의 출발점이 됐습니다.
  • 학습이 단순합니다: 판별자와의 게임(GAN)도, 복잡한 근사 추론도 없이 "잡음 맞히기 제곱 오차" 하나로 학습합니다. GAN처럼 두 신경망을 맞춰 학습할 필요가 없습니다.
  • 여러 이론을 하나로 묶었습니다: 변분 추론, 잡음 제거 점수 매칭, 담금질 랑주뱅 동역학, 자기회귀 모델, 점진적 손실 압축 사이의 연결을 보였습니다.
  • 구성 요소가 이후 표준이 됐습니다: U-Net 뼈대, 트랜스포머식 사인 임베딩으로 시점 전달, ϵ\epsilon 예측 같은 선택은 후속 확산 모델에서도 흔히 쓰입니다. 시점 임베딩은 트랜스포머의 위치 인코딩을 그대로 빌린 것입니다.

한계 · 주의할 점

  • 로그 가능도는 경쟁력이 없습니다. 표본 품질은 뛰어나지만 NLL(3.70~3.75 비트/차원)은 다른 가능도 기반 모델보다 뒤진다고 논문이 직접 밝힙니다.
  • 생성이 느립니다. T=1000T = 1000이라 표본 하나를 만들려면 신경망을 1000번 돌려야 합니다. 논문 설정에서 CIFAR 이미지 256장에 17초, 256×256 이미지 128장에 300초가 걸렸습니다.
  • LsimpleL_{\text{simple}}은 정식 경계가 아닙니다. 가중치를 버렸기 때문에 표본 품질은 좋아지지만 부호 길이는 정식 경계로 학습할 때보다 나쁩니다. 목적에 따라 목표를 골라야 합니다.
  • 압축 결과는 개념 증명입니다. 점진적 압축 알고리즘은 고차원 데이터에서 다룰 수 없는 절차(최소 무작위 부호화)에 기대므로, 아직 실용 압축 시스템이 아니라고 논문 스스로 적었습니다.

이어서 읽을 것

용어 정리

용어쉬운 뜻
확산 확률 모델 (diffusion probabilistic model)잡음을 더하는 과정을 거꾸로 되돌리도록 학습한 생성 모델
순방향 과정 (forward / diffusion process)데이터에 가우시안 잡음을 조금씩 더하는 고정된 과정. 학습할 매개변수 없음
역방향 과정 (reverse process)잡음에서 데이터로 한 걸음씩 되돌아가는 학습된 과정
분산 일정표 (variance schedule, βt\beta_t)각 단계에서 더할 잡음의 크기를 정한 목록
변분 경계 (variational bound)직접 계산하기 어려운 음의 로그 가능도의 상한. 이것을 줄여서 학습
KL 발산두 확률 분포가 얼마나 다른지를 재는 값
재매개변수화 (reparameterization)확률 변수를 "고정된 잡음 × 계수 + 평균"으로 바꿔 써서 미분 가능하게 만드는 기법
잡음 제거 점수 매칭 (denoising score matching)잡음 섞인 데이터에서 데이터 밀도의 기울기(점수)를 추정하도록 학습하는 방법
랑주뱅 동역학 (Langevin dynamics)밀도의 기울기를 따라 움직이면서 작은 잡음을 섞어 표본을 얻는 방법
U-Net이미지를 줄였다가 다시 키우며, 같은 해상도끼리 연결해 세부를 보존하는 신경망 구조
FID생성 이미지와 실제 이미지의 특징 분포 거리. 작을수록 좋음
IS (인셉션 점수)생성 이미지가 뚜렷하고 다양한지 재는 점수. 클수록 좋음
비트/차원 (bits/dim)데이터 한 차원(픽셀 채널 하나)을 부호화하는 데 드는 평균 비트 수. 작을수록 가능도가 높음

스스로 점검

1. 순방향 과정에서 tt단계를 차례로 거치지 않고 xtx_t를 한 번에 만들 수 있는 이유는 무엇이고, 그 식은 무엇인가요?

답: 가우시안 잡음을 여러 번 더한 결과도 가우시안이어서, q(xt∣x0)=N(αˉtx0,(1−αˉt)I)q(x_t\mid x_0) = \mathcal{N}(\sqrt{\bar\alpha_t}x_0, (1-\bar\alpha_t)I)로 닫힌 꼴이 나오기 때문입니다. 따라서 xt=αˉtx0+1−αˉtϵx_t = \sqrt{\bar\alpha_t}x_0 + \sqrt{1-\bar\alpha_t}\epsilon으로 바로 만듭니다.

2. 논문이 역방향 평균을 직접 예측하지 않고 잡음 ϵ\epsilon을 예측하게 한 이유는 무엇인가요?

답: 표 2에서 ϵ\epsilon 예측은 정식 경계에서는 평균 예측과 비슷했고, 가중치를 뗀 LsimpleL_{\text{simple}}에서는 FID 3.17로 훨씬 좋았습니다. 또 이 매개변수화는 잡음 제거 점수 매칭 · 랑주뱅 동역학과 같은 모양이 되어 이론적 연결을 줍니다.

3. DDPM이 표본 품질은 좋지만 약점으로 꼽히는 점은 무엇인가요?

답: 논문이 직접 밝힌 약점은 로그 가능도(NLL)가 다른 가능도 기반 모델과 비교해 경쟁력이 없다는 점이며, 손실 없는 부호 길이의 절반 넘게가 눈에 띄지 않는 세부에 쓰입니다. 여기에 더해 T=1000T = 1000단계를 모두 돌아야 하므로 표본 생성이 느리다는 점도 실무에서 걸립니다.

다음에 볼 것

이 글을 이해했다면 이어서 보면 좋은 항목입니다.

출처

AI 원리부터 이해하기 · 생성 모델 모듈

생성 모델 모듈 학습

이 글은 생성 모델 모듈의 학습 자료입니다. 전체 10개 자료 중 7번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

arXiv (논문별 상이)

arXiv 2006.11239