[21.5] Diffusion Models Beat GANs on Image Synthesis
-1. 바쁘신 분들을 위한 3줄 요약
- GAN은 현실성 있는 데이터 생성을 잘하지만 다양성이 떨어지고, diffusion은 그 반대의 특성이다. diffusion의 U-net 아키텍쳐를 개선하니, FID(현실성+다양성)이 GAN을 능가했다.
- “노이즈가 섞인 중간 단계 이미지를 입력받는 분류기” ( pϕ(y∣xt,t) )를 별도로 학습한 뒤, 기 unconditional diffusion model에 classifier guidance를 주는 방법을 제시했다. (DDPM, DDIM 개열 모두 적용하는 법 제공)
- Conditional 모델(pθ(x))에 Classifier Guidance를 적용하는 것이, Unconditional 모델((pθ(x∣y)))에 적용하는 것보다 훨씬 결과가 좋더라.
0. 초록

unconditional image synthesis 분야 에서, 기존 연구보다 개선된 아키텍처 기반 diffusion models을 적용하니
- 현재의 최첨단 생성 모델(e.g. GAN)보다
뛰어난 이미지 샘플 품질을 달성!
conditional image synthesis 분야 에서는, classifier guidance를 통해 샘플 품질을 추가로 개선 (추후 아래 수도 코드 참고. 논문 내용의 50%가 담겨있음)
- classifier의 그래디언트를 사용해
다양성과 정확성 간의 균형을 맞추는 간단하고 계산 효율적인 방법 (classifier scale의 조절을 통해 가능)
- 마지막으로,
classifier guidance가 업샘플링 확산 모델과 잘 결합된다는 것을 발견
- 업샘플링 확산 모델은 보통 2단계로 이루어짐
- 1단계: 저해상도 이미지를 생성하기 위한 Diffusion Model(1단계)을 사용해 대략적인 형태의 이미지를 얻은 다음,
- 2단계: 또 다른 Diffusion Model(2단계)을 사용해 고해상도로 업샘플링
업샘플링 확산 모델 + classifier guidance ?
- 1단계(저해상도 이미지 생성): Classifier Guidance를 적용하여 원하는 클래스로 대략적인 이미지를 만든 뒤,
- 예: 강아지의 대략적인 형태(귀, 눈 위치, 털 색 등)을 잡아줌
- 2단계(업샘플링)에서 Classifier Guidance를 다시 적용함으로써,
- 고해상도로 확장하는 과정에서도 해당 클래스나 조건을 더 정확하게 반영
- 예: “더 강아지답게” 디테일을 만들어 낼 수 있습니다(예: 강아지 털의 질감, 눈썹 모양, 털 패턴 등).
1. Introduction
- 과거의 생성 모델은
텍스트 프롬프트에서 이미지를 생성하거나 [78, 56], 유용한 특징 표현(feature representations)을 학습하는 것과 같은 다양한 방식으로 사용될 수 있습니다 [18, 10].

- GAN은 이미지 퀄리티면에서 최첨단 성능, but 다양성 측면에서는 안좋음
- 게다가, GAN은
신중하게 선택된 하이퍼파라미터와 정규화 기법 없이는 종종 훈련이 어려워지고 붕괴됩니다.
- GAN이 최첨단 성능을 보유하고 있지만, 이들의 단점은
이를 확장하거나 새로운 도메인에 적용하기 어렵게 만듭니다.
- diffusion 모델들은 다양성은 잘 포착하지만 이미지 퀄리티 면에서는 좀 아쉽습니다.
- 또한, 샘플링은 시간 측면에서 GAN보다 느립니다.
- diffusion 모델의 다른 장점들은 ->
분포 커버리지(다양성), 고정 훈련 목표, 쉬운 확장성을 포함한 바람직한 속성을 제공
- diffusion model은 GAN에 비해,
현실성(정확성)이 떨어지는데, 우리는 이 격차가 두 가지 이유에서 비롯되었다고 가정합니다.
- 첫 번째는, 최근
GAN 연구에서 사용된 모델 아키텍처가 철저히 탐구되고 정제되었다는 점
- 두 번째는, GAN이 다양성을 희생하고 정확성을 선택하여 높은 품질의 샘플을 생성하지만 전체 분포를 포괄하지 못한다는 점
- 우리는
모델 아키텍처를 개선한 다음, 다양성과 정확성 간의 균형을 맞추는 방식을 고안하여 이러한 이점을 diffusion model에 도입하고자 합니다.
2.1. class label을 GAN에 넣는 기법들
- 참고: GAN뿐 아니라, 최근 Diffusion 모델에서도 아래와 비슷한 아이디어(Adaptive GroupNorm/InstanceNorm)가 적용되어, 클래스 조건을 효과적으로 활용하는 경우가 많습니다.
Class-Conditional Batch Normalization (cBN)
- Batch Normalization은 네트워크 각 층에서 입력을 정규화(평균 0, 분산 1)한 뒤, 학습 파라미터(감마, 베타)로 다시 스케일/시프트하는 과정입니다.
- “Class-Conditional”이라는 말은, 이 감마/베타를 “클래스 라벨”마다 다르게 두는 방식을 의미합니다.
- 즉, ‘강아지 클래스’를 생성할 땐 특정 감마/베타를, ‘고양이 클래스’를 생성할 땐 다른 감마/베타를 사용.
- GAN은 이 기법들을 통해, 여러 클래스에 대한 이미지를 하나의 모델이 모두 잘 생성하도록 학습시킬 수 있게 되었습니다.
Adaptive Group Normalization(AGN)
- Group Normalization (GN)이란, 입력 채널들을 여러 그룹으로 나눠, 각 그룹 내에서 평균과 분산을 구해 정규화하는 기법입니다(InstanceNorm과 BatchNorm 사이에 있는 형태).
- 배치(batch) 크기가 작거나, 다양한 입력 형태가 있을 때 BatchNorm이 잘 동작하지 않는 문제를 해결하기 위해 나온 방식
- Conditional BatchNorm과 유사하게, 클래스 라벨(또는 다른 조건) 정보를 받아서, GN의 파라미터(혹은 추가 네트워크)를 통해 “각각 다른 스케일/시프트”를 생성
2.2. GAN의 Truncation Trick
- GAN에서 입력 노이즈((z))는 보통 정규분포(Gaussian)를 가정합니다(예: (N(0,I))).
- 그런데, 실제로 (|z|)가 너무 큰(분포의 꼬리 부분) 샘플은 “이상한 이미지”를 만들 가능성이 높아집니다.
- BigGAN 논문에서는, 이 문제를 완화하고 “이미지 품질을 높이기” 위해, Truncation Trick을 제안했습니다.
- 입력 노이즈 (z)를 정규분포에서 샘플링한 뒤, 그 크기가 특정 임계값((ω))보다 크면 잘라(truncate)버립니다.
- 결과적으로는 품질은 높아지지만, 다양성이 떨어질 수 있습니다.
3. Architecture Improvements
- TODO
- 크게 중요하지 않아보여서, 아래와 같은 7줄로 요약 정리만 진행
- 필요하면 논문 좀 더 정독해보기
- DDPM에서 사용한 UNet 구조는 여러 해상도(16×16, 8×8 등)에서 동시에 attention을 주고, 타임스텝 임베딩을 반영하도록 설계했다.
- Song et al. [67]가 소개한 BigGAN 방식(residual block, residual rescaling 등)을 DDPM의 Unet에 접목하면, 성능이 크게 좋아진다.
- 모델의 층을 깊게 하는 것보다, 폭을 넓히거나 attention를 여러 갈래로 나누는 방법이 FID 점수를 올리는 데 효과적이었다.
- 32×32, 16×16, 8×8 등 다양한 해상도에서 동시에 attention을 사용하고, 채널 당 64를 기본으로 한 multi 헤드 구성이 최적이었다.
- ‘Adaptive Group Normalization(AdaGN)’으로 타임스텝·클래스 임베딩을 각 residual 블록에 주입하면 FID가 크게 개선됐다.
- 요약: 최종적으로는 가변 폭, 여러 해상도에서 attention, BigGAN형 residual block, AdaGN 등을 한꺼번에 적용한 UNet 구조가 표준으로 자리 잡았다.
4. Classifier Guidance
4.1. Motivation
- 과거 diffusion 연구들
- Diffusion 모델 자체는 Unconditional (pθ(x)) 혹은 Conditional 모델이면 (pθ(x∣y))를 학습하여, “노이즈에서 이미지로” 만드는 절차를 학습합니다.
- 그러나 학습된 조건부 모델 (pθ(x∣y)) 만으로는 “해당 클래스(y)를 확실히” 생성한다기보다, 그냥 전체적인 분포에서 이미지를 뽑아내는 데 초점을 맞추곤 합니다.
- 우리가 원하는 건 “클래스 y”에 해당하는 이미지를 더 ‘잘’ 생성해내는 것.
- 이 논문에서는, 이미 Adaptive Group Normalization 등으로 클래스 정보를 모델 내부에서 쓰는 방식을 제시했지만, 추가로 “Classifier Guidance” 방식을 제안합니다.
- Unconditional 모델이건 Conditional 모델이건 모두 적용 가능합니다.
- 이는 기 학습된 diffusion model ( (pθ(x)) 혹은 (pθ(x∣y)) ) 을 가지고 있을 때,
- classifier network를 별도로 학습시긴 후, 이 classifier network를 이용해서
- 기 학습된 diffusion model이 특정 클래스에 해당하는 이미지를 더 잘 생성하도록 돕는 방법
4.2. 본문
- 아래 pseudo 코드가 논문 내용의 50%
- 알고리즘 1: DDPM 개열에 Classifier Guidance 적용
- 알고리즘 2: DDIM 개열에 Classifier Guidance 적용

- 위 수식 유도는 논문에 나와있으며, Appendix D.2, D.3 를 참고하세요.
- 위 pseudo code에서는 아래 수식 2개의 t를 간편하게 표기하기 위해 생략한 것
- ϵθ(xt,t)와pϕ(y∣xt,t)
- 위 식에서 주목해볼만한 점
- gradient scale이 2가지가 곱해져서 Classifier Guidance가 적용됨
- 첫번째
- s는 “gradient scale”로, 크면, “더 강하게” 그 클래스 방향으로 이미지를 끌어당기는 효과 (s가 커질수록, precision은 높아지고, recall은 감소)
- 두번째
- sampling과정의 초기에는 추정된 xt−1 의 확률분포의 분산 값이 크다가, timestep이 진행될수록 분산 값이 작아집니다.
- classifier guidance를 줄 때, 앞에 분산 값을 scale factor로 곱하여
- 분산 값이 큰 sampling 과정의 초반부일수록 classifier guidance를 쎄게 줍니다.
4.2.1. 구체적으로 classifier network를 어떻게 학습?
- “노이즈가 섞인 중간 단계 이미지를 입력받는 분류기” ( pϕ(y∣xt,t) )를 따로 학습
- 분류기 구조를
- U-Net의 다운샘플링 경로(downsampling trunk) 부분만 떼어다가,
- 그 출력 피처를 attention pool 레이어(참고 [55])로 통과시켜 최종적으로 클래스별 확률을 뽑아냅니다.
- Diffusion 모델 학습 시와 동일한 노이징 분포를 사용하여, 각 타임스텝 t에서의 노이즈 이미지를 학습 데이터로 만들고, 그에 해당하는 정답 클래스로 분류기를 학습한 겁니다.
4.2.1. classifier network를 guidance에 적용
4.2.2. 결과해석
- s=1일 때, “확률적으로는” 해당 클래스가 잘 맞아 보이지만, 실제 시각적으로 보면 여전히 클래스 특성이 잘 안 드러나는 경우가 종종 있습니다.
- s를 키움으로써,
- 샘플이 해당 클래스 특성을 더욱 강하게 띠도록 유도할 수 있습니다.
- 분류기가 최종적으로 예측하는 확률이 100%에 가까울 만큼 “해당 클래스에 맞는” 이미지가 생성되었다고 합니다.
(1) Unconditional, No Classifier Guidance
- “클래스 정보를 전혀 쓰지 않고(Unconditional), 분류기 가이던스도 적용하지 않은” 기본 Diffusion 모델의 성능
- FID가 26.21로 상당히 높게(나쁘게) 나타나고, Inception Score(39.70)도 상대적으로 낮습니다.
- Precision ~0.61, Recall ~0.63으로 평균 수준의 다양성과 품질을 보여줍니다.
(2) 무조건적(Unconditional) 모델 + Classifier Guidance
- 스케일 s가 작으면(scale=1) “시각적으로는 다른 클래스인” 이미지가 나올 수 있습니다(아직 모델 자체가 클래스 정보에 익숙하지 않기 때문).
- 오히려 FID가 33.03으로 올라갔습니다(더 나빠짐). Scale=1.0일 때는, 분류기 그래디언트가 “약간만” 가이드를 주어 오히려 생성이 어중간해졌을 가능성이 큽니다.
- Recall은 0.65로 조금 올랐지만, Precision이 0.56으로 낮아지고, FID도 나빠지는 등 전반적으로는 별 이득이 없습니다.
- 그러나 s를 올리면 (scale=10), 어느 정도까지는 “해당 클래스”가 명확히 드러나는 생성 이미지를 얻을 수 있습니다.
- 다 좋아졌는데, recall 만 떨어짐 (다양성 감소)
(3) Conditional + no Classifier Guidance
- 이제는 “클래스 라벨을 처음부터 이용해 Diffusion 모델을 학습”한 케이스입니다. (즉, 모델 자체가 ‘이 이미지는 어느 클래스’인지 알면서 학습)
- 만약 조건부 Diffusion 모델((pθ(x∣y))을 처음부터 학습한다면, “클래스 정보”가 모델 내부에도 이미 들어 있습니다.
- Unconditional 모델보다 훨씬 나은 FID(10.94)와 높은 IS(100.98)를 보여줍니다.
- Precision이 0.69, Recall이 0.63으로, 모델이 클래스 분포를 잘 학습했음이 드러납니다(이미 이 상태만으로도 상당히 좋음).
(4) 조건부(Conditional) 모델 + Classifier Guidance
- 이 모델에도 추가로 분류기 가이던스를 적용할 수 있는데,
- 논문 결과에 따르면, “조건부 모델”에 분류기 가이던스를 하면, 무조건적 모델보다 더 좋은 품질(FID 감소)을 보입니다.
- 즉, 클래스 라벨을 직접적으로 모델에 넣어서 학습한 뒤, 거기에 추가로 분류기 그래디언트를 더하면, 더욱 확실한 조건부 생성이 가능하다는 뜻입니다.
- scale을 1.0으로 했을 때
- 전반적으로 “클래스가 확실히 맞는” 고품질 이미지가 많이 생성되는 것으로 해석할 수 있습니다.
- unconditional 모델에 1.0 scale의 guidance를 적용했을 때는 결과가 별로였는데, 상반된 결과가 나왔습니다.
- Scale = 10.0 으로 했을 때
- 엄청 결과가 좋습니다. 모드 다양성만 감소합니다.
“diffusion 분류기 가이던스 vs. BigGAN의 Truncation Trick 비교”
- “FID vs. Inception Score” 트레이드오프 상에서는 “Classifier Guidance가 더 낫다”는 결과를 제시합니다.
- 다만, Precision/Recall 차원에서 보면, 어느 한계를 넘은 뒤에는 BigGAN이 더 낫거나, 차이가 모호해지는 지점이 존재한다고 언급합니다.
7. 한계와 미래 작업
- diffusion 모델은 여전히 여러 번의 디노이징 단계(따라서 전진 패스) 사용으로 인해 샘플링 시간이 GAN보다 느립니다.
- 우리의 확산 모델의 각 전진 패스는 5~20배 더 오래 걸립니다. (
GAN보다)
- GAN, Flows, VAE와는 달리, 확산 모델은 명시적인 잠재 표현(
latent representation)을 학습하지 않습니다.
- DDIM은
이미지를 암묵적인 잠재 공간으로 인코딩하는 방법을 제공하지만, 다른 모델 클래스에 비해 이 잠재 표현이 얼마나 의미론적으로 의미 있는지는 불분명
- 이는 확산 모델을 표현 학습 또는 이미지 편집 응용에 사용하는 것을 어렵게 만들 수 있습니다.
classifier guidance의 효과는 분류 함수의 그래디언트를 사용해 강력한 생성 모델을 얻을 수 있음을 보여줌
- GAN에서는, 텍스트 프롬프트에 맞춰 이미지를 생성하도록
- “CLIP의 텍스트-이미지 매칭 점수”를 활용해 이미지를 조금씩 수정해 나가는 ‘CLIP-Guided GAN’ 기법들이 등장했습니다([23, 53, 2] 등).
- 이와 유사하게,
CLIP [55]의 노이즈 버전을 사용해 텍스트 캡션으로 image generator를 조건화하는 데 사용할 수 있습니다.
- Diffusion Model에서는 생성 과정 중간에 이미 ‘노이즈가 섞인 이미지’를 매 스텝마다 다루게 됩니다(xt)
- CLIP으로 그 노이즈가 섞인 이미지를 인코딩해 텍스트와의 매칭 점수를 구할 수도 있습니다.
- 우리의 제안된 classifier guidance 기술은 현재 레이블이 있는 데이터셋에만 국한되어 있습니다.
- 미래에는 제안된 classifier guidance 방법을 레이블이 없는 데이터로 확장할 수 있습니다. (아래의 방법을 통해)
- ‘진짜 레이블’이 없어도, 클러스터링+합성 라벨로 분류기를 만들어, guidance를 적용하는 아이디어 [42],
guidance에 사용할 discriminative model을 학습함으로써
- In the future, our method could be extended to unlabeled data by
clustering samples to produce synthetic labels [42] or by training discriminative models to use for guidance.
- discriminative models
- “입력 데이터를 보고 어떤 결과(라벨, 속성 등)를 예측하는 모델”을 의미
- 전체 분포까지는 추정하지 않는다는 점에서, generative model과 다릅니다.
- 위 맥락에서는, 라벨이 없어도, 어떤 기준(criteria)을 정의해서, 입력 이미지를 그 기준에 따라 구분(판별)해주는 모델
- 이는 또한
대규모 비라벨 데이터셋을 활용해 강력한 확산 모델을 사전 학습하고, 나중에 바람직한 속성을 가진 분류기를 사용해 이를 개선할 수 있음을 시사합니다.
8. 사회적 영향
- 제안된 기술은 계산 비용 측면에서 생성 모델을 더 접근 가능하게 만듭니다.
- 특히,
새로운 분류기를 훈련하여 기존 고품질 diffusion 모델 위에 사용할 수 있기 때문