Denoising Diffusion Probabilistic Models (NeurIPS 2020) - 한국어

Created
2024/05/14 06:14
Tags
Korean
Date
Person
English version

Introduction

이전 포스트에서, 저희는 “Deep Unsupervised Learning using Non-equilibrium Thermodynamics” 논문을 리뷰하며 Diffusion 모델의 일반적인 개념과 원리를 소개했습니다. 이 논문은 열역학의 개념을 차용하여 혁신적인 아이디어를 제안했지만, 여전히 이미지 생성에는 GAN이 더 널리 사용되고 있었습니다.
2014: GAN의 등장
2014년 6월: Ian Goodfellow에 의해 생성적 적대 신경망(Generative Adversarial Networks, GAN)이 도입되었습니다. 이 방법은 생성자와 판별자라는 두 개의 신경망을 동시에 훈련시키는 방식을 사용합니다.
2015-2018: GAN의 다양화
GAN의 급속한 발전과 다양화, 예시로는 Deep Convolutional GANs (DCGANs), Conditional GANs (cGANs), 그리고 CycleGANs 등이 있습니다.
2019-2020: StyleGAN
2019년 2월: NVIDIA의 StyleGAN이 등장합니다 - 특히 사람 얼굴과 같은 매우 현실적이고 맞춤형 이미지를 생성할 수 있습니다.
그러나, 2020년 이후부터 이러한 경향이 완전히 변화합니다.

2020-현재: Diffusion 모델의 등장

제가 리뷰할 논문은 Diffusion 모델에 대한 관심의 전환을 가져온 주요 논문 중 하나입니다.

<Denoising Diffusion Probabilistic Models (NeurIPS 2020)>

Recap

이전 포스트에서 다룬 내용을 간단히 요약해 보겠습니다. Diffusion 모델의 일반적인 아이디어는 노이즈를 추가하는 Foward Process 과정과, 원본 이미지를 복원하기 위해 학습하는 Reverese Denoising Process 과정이 있습니다.

Forward Trajectory (T Step의 노이즈 추가 작업 수행)

q(x(t) | x(t−1))는 identity Covariance를 갖는 가우시안 분포로의 가우시안 확산 또는 독립적인 이항 분포로의 이항 확산에 해당합니다.

Reverse Trajectory (de-noising의 역방향 과정)

리뷰한 이 논문은 2015년에 발표되었으나, GAN 모델이 주로 주목을 받으면서 한동안 아카이브에 덩그러니 남아 있었습니다. 그러나 이후 몇몇 연구자들이 이를 다시 발굴해냈고 “Deep Unsupervised Learning using Non-equilibrium Thermodynamics”과 “Generative Modeling by Estimating Gradients of the Data Distribution”에서 영감을 받아 새로운 지평선을 개척해냅니다.

배경

이전 포스트에서 리뷰한 것처럼, log likelihood 최적화와 KL divergence를 적용하여 tractable equation을 도출했습니다. 요약:

Objective

이제 역방향 단계의 목표는 다음과 같습니다:
조금의 algebraic steps을 거친 후, loss term 근사를 얻습니다. 결국 해당 식은 기본적으로 예측된/학습된 분포의 평균과 주어진 실제 분포의 평균 사이의 L2 Loss를 계산합니다. 아직까지는 매우 직관적입니다.
이 논문의 핵심은 위에 그려진 빨간 박스 영역에 있습니다.
해당 연구원들은 연구를 진행하던중 한가지 질문을 던집니다: 전체 분포를 예측하려고 하지 않고, 작은 perturbation인 epsilon만 예측하려고 하면 어떻게 될까?

Algorithm and Training

그렇기에 위에 언급된 epsilon에 집중합니다.
알고리즘 1: 학습
1: 이미지를 샘플링합니다
2: 타임스탬프를 샘플링합니다
3: 가우시안 노이즈를 샘플링합니다
4: 노이즈가 추가된 이미지를 만듭니다 (여기서 x0는 원본 이미지이며, 크기를 줄이고 가우시안 노이즈를 추가합니다)
참고: alpha t가 클수록 1에 가까워지고, 노이즈가 더 많아집니다. (이는 샘플에 따라 다름 → 더 높은 시간 → Diffusion 과정에서 더 멀리 위치함 → 더 많은 노이즈 추가)
그래서 우리는 신경망이 원본 이미지를 복원하기 위한 epsilon theta를 학습하도록 만듭니다.
결국 epsilon theta는 학습된 예측된 방향입니다. 이 epsilon은 위 식에서 볼 수 있듯이 x에 해당하는 확률을 더 높게 만드는 것(x의 도함수)으로, 해당 부분을 de-noising하는 데 우선순위를 둡니다.
Algorithm 2: 샘플링
샘플을 위한 현재 xt를 가져옵니다.
Denoising 단계를 위한 방향을 계산합니다.
Subraction을 통해 보정합니다 (디노이징)
최종 상태가 아니면, sigma tz의 가우시안 노이즈를 추가합니다 → 분포 내에 머뭄
4단계에서 "Generative Modeling by Estimating Gradients of the Data Distribution"에서 영감을 받아, Langevin 샘플링을 사용합니다.
Generative Modeling by Estimating Gradients of the Data Distribution:
Annealed Langevin Dynamic을 사용하여 Score Function (grad log p(x))가 있는 에너지 모델에 대한 샘플링을 수행합니다.

아키텍쳐

PixelCNN++의 백본 (Wide ResNet 기반의 U-Net)

결과

IS: 얼마나 클래스에 잘 속하는지
FID: 다양성 - 클래스 관점에서 얼마나 잘 커버가 되었는지

Auto-regressive Model과의 관계

가우시안 노이즈를 추가하는 대신, 각 픽셀을 공백으로 만듬
가우시안 노이즈를 추가하는 것과 정확히 동일하지는 않지만 가능한 과정
역방향 과정은 기본적으로 해당 픽셀을 다시 채우는 것
일종의 Auto-regressive 모델

구현 살펴보기

이제 주요 아이디어를 얻었으니, 실제로 코드로 어떻게 구현되는지 알아봅시다! 해당 영상과 함께 구글 코랩 노트북 excercise 도 있기에 해당 영상을 가져왔습니다.

전방 과정 Forward Process

Forward 과정은 매우 간단합니다. 그저 각 단계마다 가우시안 노이즈를 추가하는 것
<Loss and Update Preview>
Loss:
Loss는 결국 실제 데이터에 추가된 노이즈 ϵ 와 예측된 ϵθ의 difference를 minimize 하는 것을 objective로 가짐.
위 코드도 결국 ϵ, ϵθ의 차를 구하고, 아래 training process에서 해당 Loss를 사용하는 것을 볼 수 있음

<역방향 과정 Reverse Process>

이제 U-Net 모델을 가지고 옵니다.
앞서 설명했듯이 출력된 마지막 이미지가 노이즈인 것을 볼 수 있습니다. 기본적으로 epsilon theta를 예측하고자 하는 것입니다.
또한 Diffusion Time Step T를 기록해야 하기 때문에, 해당 시계열 정보를 임베딩에 포함시켜야 합니다. 입력이 순차적이지 않기 때문에 RNN과 달리 transformer 모델처럼 positional embedding을 사용합니다.
<Sampling / Inference>:
앞서 설명한
알고리즘 2: 샘플링
현재 xt를 샘플로 사용
디노이즈할 단계를 위한 방향 계산
노이즈 뺄셈을 통해 보정 (디노이즈)
최종 상태가 아니면 sigma tz의 가우시안 노이즈를 추가 → 분포 내에 머무름
생각보다 간단한 이 과정은 결국:
current_image_at_T - noise_prediction [사전 계산된 (model x, t)]
Time_Step = 0에서는 노이즈 없는 이미지를 반환하고, 다른 Time Step에서는 Forward 과정에서 노이즈를 추가합니다.

결론:

GAN은 원래 이미지 생성에 널리 사용되는 주류 모델이었습니다. 그러나 이러한 디퓨전에 대한 발전과 개선 이후, Diffusion 모델은 효율성과 다양성 측면에서 GAN 모델보다 더 나은 성능을 보이기 시작했습니다. OpenAI의 DALL-E가 이를 명확히 보여준 예시중 하나였죠. 이제 두 개의 포스트를 통해 확산 모델의 기본을 리뷰했으니, 완벽하진 않더라도 독자 여러분들이 AI가 이미지를 생성하는 방식에 대해 더 잘 이해했기를 바라겠습니다! AI가 만든 이미지는 마법이 아니라, 아름다운 수학과 통계가 유도한 결과물입니다.
Written By: Terry (Taehan) Kim,
Reviewed by Metown Corp. (Sangbin Jeon, PhD Researcher)

참고