확산 모델 실전: 샘플링 · DDIM · 가이던스 · 잠재 확산
DDIM 단계 줄이기 · 분류기/분류기 없는 가이던스 · 잠재 확산과 SD 설정값을 식과 숫자로
먼저 알아야 할 것
다루는 내용
DDPM 뒤에 실제로 쓰이는 확산 기법을 정리합니다. 잡음 예측으로 원본을 추정하는 식, DDIM의 결정적 샘플링과 단계 건너뛰기(CIFAR-10 FID 표), 분류기 가이던스와 분류기 없는 가이던스의 식과 품질-다양성 맞바꿈(ImageNet 64 표)을 손계산과 함께 설명합니다. 잠재 확산의 압축 · 교차 어텐션과 Stable Diffusion 파이프라인 기본값의 뜻을 다룹니다.
해설
확산 모델 실전: 샘플링 · DDIM · 가이던스 · 잠재 확산
DDPM은 1,000단계를 다 밟아야 이미지 한 장이 나옵니다. 실제로 쓰는 확산 모델은 여기에 세 가지를 더합니다 — 단계를 줄이는 샘플러(DDIM), 원하는 조건을 더 강하게 따르게 하는 가이던스, 작은 압축 공간에서 확산을 돌리는 잠재 확산 입니다. Stable Diffusion을 쓸 때 만지는
num_inference_steps,guidance_scale,eta가 각각 무엇인지 식과 숫자로 정리합니다.
| 항목 | 내용 |
|---|---|
| 참고 출처 | Lilian Weng, What are Diffusion Models?(2021), Song 외 DDIM(ICLR 2021), Dhariwal · Nichol(2021), Ho · Salimans 분류기 없는 가이던스(2022), Rombach 외 잠재 확산(CVPR 2022), Hugging Face Diffusers 문서 |
| 트랙 · 수준 | 생성 모델 · 중급 |
| 이 수업이 다루는 범위 | 순방향 닫힌 식 복습, 잡음 예측에서 추정하기, DDPM 샘플링 한 걸음, DDIM 결정적 샘플링과 단계 건너뛰기, 분류기 가이던스, 분류기 없는 가이던스, 잠재 확산 · 교차 어텐션, 실무 설정값 읽기 |
들어가기 전에
- 잡음 제거 확산 확률 모델 (DDPM) — 순방향 · 역방향 과정과 . 이 수업은 그 뒤의 "실제로 쓰는 법"입니다.
- 오토인코더에서 VAE까지 — 잠재 확산의 압축기가 VAE류 오토인코더입니다.
- 어텐션 직관 — 텍스트 조건은 교차 어텐션으로 들어갑니다.
한눈에 보기
- 아무 시점의 잡음 이미지 를 한 번에 만드는 식과, 거기서 원본 를 거꾸로 추정하는 식을 짝으로 압니다.
- DDIM이 같은 학습 모델로 단계를 1,000 → 50 이하로 줄이는 원리와 CIFAR-10 결과를 봅니다.
- 분류기 가이던스와 분류기 없는 가이던스(CFG)의 식을 비교하고, 일 때 잡음 추정이 어떻게 바뀌는지 손계산합니다.
- 512×512 이미지를 64×64×4 잠재로 줄이면 계산 대상이 48배 줄어든다는 것을 계산합니다.
guidance_scale=7.5,num_inference_steps=50,eta=0.0같은 기본값이 무엇을 뜻하는지 읽을 수 있습니다.
1. 복습: 잡음 섞기와 거꾸로 추정하기
직관(해설용 비유). 사진에 안개를 점점 짙게 뿌리는 것이 순방향, 안개를 한 겹씩 걷는 것이 역방향입니다. 안개 농도(시점 )만 알면 원본 사진과 안개를 섞는 비율을 바로 계산할 수 있습니다.
신경망 가 섞인 잡음을 맞히면, 위 식을 에 대해 풀어 원본을 추정할 수 있습니다.
| 기호 | 뜻 |
|---|---|
| 시점 까지 남은 원본 신호 비율 . 1에서 0으로 줄어듦 | |
| 단계 에서 더하는 잡음 양(잡음 일정) | |
| 섞인 잡음을 예측하는 신경망(U-Net 또는 트랜스포머) | |
| 지금 추정한 깨끗한 원본 |
숫자로 해 보기. DDPM 설정(, 를 에서 까지 선형)을 코드로 계산하면 , 입니다. 절반 시점에서 원본 신호는 진폭 기준 28%만 남습니다. 마지막 로 사실상 순수 잡음입니다.
2. DDPM 샘플링: 확률적으로 한 걸음씩
DDPM은 매 단계 평균을 계산하고 새 잡음을 조금 더합니다(DDPM 해설 의 식).
매 단계 새 잡음 가 들어가므로 같은 시작점이라도 결과가 매번 다릅니다. 그리고 각 단계가 아주 작은 변화만 다루도록 학습되었기 때문에, 단계를 크게 건너뛰면 품질이 무너집니다. 이것이 1,000단계가 필요한 이유입니다.
3. DDIM: 같은 모델, 더 적은 단계
Song · Meng · Ermon(ICLR 2021)은 학습 목표는 그대로 두고 "생성 과정"만 바꿨습니다. 핵심은 한 걸음을 (추정한 원본) + (잡음 쪽 방향) + (선택적 무작위 잡음) 세 조각으로 쓰는 것입니다. 논문 식 (12)를 이 수업의 기호()로 옮기면 다음과 같습니다(논문은 를 우리 뜻으로 씁니다).
| 기호 | 뜻 |
|---|---|
| 1절 식으로 추정한 원본 | |
| 둘째 항 | " 를 가리키는 방향" — 다음 시점에 남아 있어야 할 잡음 몫 |
| 무작위성의 크기. | |
| 0이면 결정적(DDIM), 1이면 DDPM과 같은 확률적 과정 |
단계 건너뛰기. 이 식은 대신 아무 이전 시점 로도 쓸 수 있습니다. 그래서 1,000개 시점 중 일부(예: 50개)만 골라 큰 걸음으로 내려갑니다. 다시 학습할 필요가 없습니다.
숫자로 해 보기(해설용 1차원 예). , 인 두 시점 사이를 으로 건너뜁니다. 현재 , 신경망 예측 입니다.
- 원본 추정:
- 다음 값:
무작위 항이 없으므로 같은 에서 시작하면 늘 같은 이미지가 나옵니다. 논문은 이 성질 덕분에 잠재 공간에서 의미 있는 보간이 가능하다고 보였습니다.
논문이 보고한 수치(CIFAR-10, FID — 낮을수록 좋음).
| 단계 수 | 10 | 20 | 50 | 100 | 1000 |
|---|---|---|---|---|---|
| DDIM () | 13.36 | 6.84 | 4.67 | 4.16 | 4.04 |
| DDPM () | 41.07 | 18.36 | 8.01 | 5.78 | 4.73 |
50단계 DDIM이 1,000단계 확률적 샘플링()보다 좋습니다. 초록은 같은 품질을 벽시계 시간 기준 10~50배 빠르게 낸다고 요약합니다. (DDPM 원 논문의 다른 분산 설정 는 1,000단계에서 3.17로 가장 좋지만, 단계를 줄이면 급격히 나빠집니다.)
4. 분류기 가이던스: 분류기의 기울기로 밀어 주기
문제. 조건부 확산 모델(, 는 클래스나 텍스트)은 조건을 "대체로" 따르지만, 더 조건다운 이미지를 원할 때가 있습니다. GAN의 잘라내기 요령처럼 다양성을 조금 버리고 품질을 올리는 손잡이가 필요합니다.
Dhariwal · Nichol(2021)은 잡음 이미지 를 보고 클래스를 맞히는 분류기 를 따로 학습하고, 그 기울기로 잡음 추정을 고쳤습니다. 분류기 없는 가이던스 논문(Ho · Salimans)의 표기로 쓰면 다음과 같습니다.
| 기호 | 뜻 |
|---|---|
| 잡음 수준 의 잡음 이미지( 와 같은 역할) | |
| 그 시점의 잡음 표준편차 | |
| "이 방향으로 바꾸면 분류기가 라고 더 확신한다" 는 방향 | |
| 가이던스 세기 |
이렇게 하면 대략 에서 뽑는 효과가 납니다. 분류기가 확신하는 쪽으로 질량이 몰려 품질 점수(IS)는 오르고 다양성은 줄어듭니다. 이 논문은 ImageNet 256×256에서 가이던스와 업샘플링을 함께 써 FID 3.94를 보고하며, 확산 모델이 당시 최고 GAN을 넘었다고 주장했습니다.
단점. 잡음 이미지용 분류기를 따로 학습해야 하고, 텍스트처럼 클래스가 정해지지 않은 조건에는 쓰기 어렵습니다.
5. 분류기 없는 가이던스(CFG)
Ho · Salimans(2022)는 분류기를 없앴습니다.
단계.
- 학습: 하나의 신경망을 조건부 · 무조건부 겸용으로 학습합니다. 학습 중 확률 로 조건 를 "빈 조건" 으로 바꿔 넣습니다. 그러면 와 를 같은 신경망이 냅니다.
- 생성: 매 단계 신경망을 두 번(조건 있음 · 없음) 돌려 섞습니다.
직관. 는 "조건이 있을 때와 없을 때의 차이", 즉 조건이 미는 방향입니다. 그 방향을 배만큼 더 밀어 줍니다. 논문은 이것이 베이즈 정리로 만든 "암묵적 분류기"의 기울기에서 영감을 받았다고 설명합니다.
숫자로 해 보기(해설용 1차원 예). 조건부 예측 , 무조건부 예측 , 이면 입니다. 조건 쪽 차이 을 4배로 키워 무조건부 값에 더한 것()과 같습니다.
구현에서 보는 값. Diffusers 같은 라이브러리는 같은 식을 로 쓰고 를 guidance_scale 이라 부릅니다. 위 식과 비교하면 입니다. Stable Diffusion 파이프라인 문서의 기본값은 guidance_scale=7.5 이고, 1보다 클 때 가이던스가 켜진다고 설명합니다. 매 단계 신경망을 두 번 돌리므로 계산은 약 두 배입니다.
논문이 보고한 수치(ImageNet 64×64, ).
| 0 (가이던스 없음) | 0.1 | 0.3 | 1.0 | 4.0 | |
|---|---|---|---|---|---|
| FID ↓ | 1.8 | 1.55 | 3.03 | 12.6 | 26.22 |
| IS ↑ | 53.71 | 66.11 | 92.8 | 170.1 | 260.2 |
를 키우면 IS(개별 품질 · 확신)는 단조롭게 오르고 FID(분포 전체의 닮음)는 작은 에서 가장 좋다가 나빠집니다. 품질과 다양성의 맞바꿈 이 한 손잡이로 조절된다는 뜻입니다. 논문은 로 0.1 · 0.2 · 0.5를 비교했고 0.1과 0.2가 0.5보다 조금 나았습니다.
6. 잠재 확산: 작은 공간에서 확산하기
문제. 픽셀 공간에서 확산 모델을 학습 · 추론하면 비쌉니다. 그런데 픽셀의 상당 부분은 사람 눈에 거의 안 보이는 세부입니다.
Rombach 외(CVPR 2022)의 잠재 확산 모델(LDM) 은 두 단계로 나눕니다.
- 압축기 학습: 오토인코더 를 먼저 학습해 이미지를 가로세로 배 작은 잠재 로 줄입니다.
- 잠재에서 확산: 에 잡음을 섞고 를 학습합니다(목표 식은 DDPM과 같은 꼴). 생성 뒤 로 이미지로 펼칩니다.
- 조건 넣기: 텍스트 등은 인코더 로 벡터 열로 바꾸고, U-Net 중간 특징이 쿼리, 텍스트 표현이 키 · 값인 교차 어텐션 으로 넣습니다.
논문은 를 비교해 이 효율과 품질의 균형이 좋고 특히 4와 8이 좋다고 보고했습니다.
숫자로 해 보기. Stable Diffusion v1-4 모델 카드는 압축 배율 , 잠재 모양 라고 밝힙니다. 512×512 RGB 이미지는 개 값, 잠재는 개 값으로 48배 작습니다. 텍스트 인코더는 고정된 CLIP ViT-L/14입니다(CLIP).
flowchart LR
P[텍스트 프롬프트] --> TE[텍스트 인코더<br/>CLIP ViT-L/14]
N[잡음 잠재 64×64×4] --> U[U-Net 잡음 예측]
TE -->|교차 어텐션| U
U --> CFG[가이던스 섞기<br/>ε_u + s·ε_c − ε_u]
CFG --> SCH[샘플러 한 걸음<br/>DDIM 등]
SCH -->|50번 반복| U
SCH --> DEC[VAE 디코더]
DEC --> IMG[512×512 이미지]7. 실무 설정값 읽기
Diffusers의 Stable Diffusion 파이프라인 기본값을 예로 듭니다.
| 설정 | 기본값 | 뜻 · 조절 효과 |
|---|---|---|
num_inference_steps | 50 | 샘플러 단계 수. 늘리면 대체로 품질 ↑, 속도 ↓ |
guidance_scale | 7.5 | CFG 세기 . 키우면 프롬프트를 더 따르지만 다양성 ↓, 너무 크면 색이 과포화되기 쉬움 |
eta | 0.0 | DDIM의 . 0이면 결정적. DDIM 스케줄러에서만 쓰임 |
negative_prompt | 없음 | 가이던스를 쓸 때 "빼고 싶은 것"을 적는 프롬프트 |
generator(시드) | 무작위 | 시작 잡음을 고정해 결과를 재현 |
CFG 논문도 그림에서 강하게 가이드한 표본의 색이 포화되는 경향을 언급합니다. 실무에서 값을 고를 때는 프롬프트 충실도와 자연스러움을 눈으로 함께 확인합니다.
연습 문제
- , , 일 때 은?
- 풀이: , . 입니다.
- CFG에서 조건부 예측 , 무조건부 , 일 때 은? 같은 설정의
guidance_scale은?- 풀이: , 입니다.
- 768×768 이미지를 , 4채널 잠재로 줄이면 잠재 크기와 축소 배율은?
- 풀이: , 원본 이므로 48배입니다(채널 비 3:4와 로 늘 ).
- DDIM 50단계 + CFG를 쓰면 이미지 한 장에 신경망을 몇 번 호출하나요?
- 풀이: 단계마다 조건 · 무조건 두 번이므로 100번입니다(두 입력을 한 배치로 묶어 한 번에 돌리는 구현이 많습니다).
스스로 점검
- DDIM이 다시 학습하지 않고 단계를 줄일 수 있는 이유는?
- 답: DDIM은 학습 목표(잡음 예측)는 DDPM과 같고 생성 과정만 다르게 정의합니다. 각 걸음을 "추정 원본 + 잡음 방향"으로 써서 임의의 이전 시점으로 바로 건너뛸 수 있기 때문입니다.
- 분류기 없는 가이던스의 학습에서 조건을 일부러 지우는 이유는?
- 답: 같은 신경망이 무조건부 예측도 하게 만들어, 생성 때 조건부와 무조건부의 차이(조건이 미는 방향)를 계산하기 위해서입니다.
- 잠재 확산이 픽셀 확산보다 싼 이유와 대가는?
- 답: 확산 신경망이 다루는 값의 개수가 크게 줄어들기 때문입니다(SD 기준 48배). 대가로 오토인코더의 복원 품질이 최종 품질의 상한이 됩니다.
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| 샘플러 | 잡음에서 이미지로 내려가는 걸음 규칙(DDPM, DDIM 등) |
| DDIM | 같은 학습 모델로 결정적 · 적은 단계 생성을 하는 샘플러 |
| DDIM 걸음의 무작위성 크기(0 결정적, 1 DDPM) | |
| 가이던스 | 조건을 더 강하게 따르도록 잡음 추정을 고치는 기법 |
| 분류기 가이던스 | 잡음 이미지용 분류기의 기울기로 고치는 방식 |
| 분류기 없는 가이던스(CFG) | 조건부 · 무조건부 예측의 차이를 키워 고치는 방식 |
| 학습 중 조건을 빈 조건으로 바꾸는 확률 | |
| 잠재 확산 | 오토인코더로 줄인 공간에서 돌리는 확산 모델 |
| 교차 어텐션 | 이미지 특징이 쿼리, 텍스트 표현이 키 · 값인 어텐션 |
| 압축 배율 | 잠재의 가로세로가 원본보다 몇 배 작은지 |
더 깊이 보려면
- Lilian Weng, What are Diffusion Models?: lilianweng.github.io/posts/2021-07-11-dif…
- Cosmos: 피지컬 AI를 위한 월드 기반 모델 플랫폼 — 영상 확산 모델을 세계 모델로 쓰는 예
- 확산 정책 — 로봇 행동 생성에 쓰인 확산과 DDIM
다음에 볼 것
- 직접 해 보기: 2D 장난감 확산 모델 — 오늘 식을 numpy로 직접 돌려 봅니다.
- 정규화 흐름과 플로우 매칭 — 확산의 곡선 길을 직선으로 바꾼 최근 흐름
라이선스
본문은 KAITABASE 자체 해설입니다. 각 논문 · 문서는 요약 · 인용만 했고 표의 수치는 원문 표에서 일부 열만 골라 옮겼습니다. 1차원 숫자 예는 이 수업을 위해 만든 해설용 예입니다.
출처
- Song · Meng · Ermon, Denoising Diffusion Implicit Models(ICLR 2021): arxiv.org/abs/2010.02502 (식 12 · 16, 표 1)
- Dhariwal · Nichol, Diffusion Models Beat GANs on Image Synthesis(2021): arxiv.org/abs/2105.05233
- Ho · Salimans, Classifier-Free Diffusion Guidance(2022): arxiv.org/abs/2207.12598 (알고리즘 1 · 2, 식 6, 표 1)
- Rombach 외, High-Resolution Image Synthesis with Latent Diffusion Models(CVPR 2022): arxiv.org/abs/2112.10752
- Stable Diffusion v1-4 모델 카드: huggingface.co/CompVis/stable-diffusion-v…
- Diffusers StableDiffusionPipeline 문서: huggingface.co/docs/diffusers/api/pipelin…
- Lilian Weng, What are Diffusion Models?(2021): lilianweng.github.io/posts/2021-07-11-dif…
AI 원리부터 이해하기 · 생성 모델 모듈
생성 모델 모듈 학습
이 글은 생성 모델 모듈의 학습 자료입니다. 전체 10개 자료 중 6번째입니다.
출처·원문
원문 보기요약만