[NeurIPS 2020] Denoising Diffusion Probabilistic Models

이번에 들고온 논문은 GAN을 누르고 생성 모델의 대세로 등극한 Diffusion model의 근본 논문 ‘Denoising Diffusion Probabilistic Models (DDPM)’을 다루고자 합니다. 해당 논문은 요즘 핫한 DALL-E, Stable Diffusion의 기초가 되는 논문으로 어려운 부분이 있지만… 동작 방식까지 이해한다면 생각보다 직관적인 방법론입니다. 논문 자체에는 수식이 워낙 많아서 줄일 수 있는 수식들은 줄이고 쉽게 표현하고자 합니다.

Intro

Diffusion model은 비평형 열역학(Non-equilibrium Thermodynamics) 중 Langevin dynamics에서 영감을 얻어 설계되었다고 합니다. 생소한 용어가 나와 진입 장벽을 느끼신 분들도 있을 거라고 생각합니다. 저 내용을 다 알아야하는 건 절대 아니고 컨셉만 이해하시면 됩니다. 열역학은 이상적인 환경을 가진 평형 상태에서의 열역학과 자연 상태의 변동적인 환경~비평형 상태에서의 열역학을 비평형 열역학이라고 칭합니다. 그 중 Langevin dynamics은 아래의 그림처럼 분자의 랜덤한 움직임(; 브라운 운동, e.g. 물감이 퍼지는 모양)을 방적식으로 표현한 방법이라고 생각하시면 됩니다.

Langevin Monte Carlo: Sampling using Langevin Dynamics | Perceptron.blog

Langevin dynamics에서는 시간대별로 변화량을 몬테카를로를 이용해 변위를 이동시키며, 이동한 변위를 기준으로 랜덤한 변화량을 토대로 이동을 수행 (~이를 Markov Chain) 하며 이를 통해 랜덤한 움직임을 모사하는 방식을 이용합니다.

영감을 얻은 이유에 대한 구체적인 설명이 없기에 저의 주관적인 생각으로 해석하자면 위 그림처럼 복잡한 경로를 그리며 변화된 값들을 예측(생성)해야할 데이터 혹은 feature space, 원점을 초기 데이터 혹은 normal space라고 비유를 하고 두 값들은 설명 가능한 확산 방정식으로 표현되었기 때문에 space 간의 mapping을 유지한 채로 forward/reverse가 가능해집니다. 저자는 해당 특성을 생성 모델에 적용할 경우, generative model의 특성을 가져올 수 있을거라고 판단한 것으로 보입니다.
사실 forward/reverse를 기반으로 한 생성 모델은 flow라는 방법론이 존재하기는 합니다. 허나, flow 기반의 방법론들은 역함수가 반드시 필요합니다. 즉, 모델 구조 자체가 가역이 가능해지도록 설계를 반드시 해야하기 때문에 구현 자체가 매우 어렵다는 문제가 있었습니다.
+ 이전에 설명드린 생성 모델 중 하나인 Flow 기반의 방법론에서 SRFlow에서 GAN 대비 forward/reverse가 가능한 Flow에 대해 장점을 작성해두었습니다.

flow의 generative model의 장점을 가져가며, 설계가 어렵다는 단점을 극복한 형태를 갖춘 것이 diffusion model이라고 봐도 무방합니다.

Method

먼저 전체적인 흐름을 설명하자면 DDPM은 입력 영상 x_0 에 시간에 따른 상수 파라미터를 갖는 작은 가우시안 노이즈를 시간에 따라 반복적으로 더해가면 t초 후의 영상 x_t 은 normal distribution을 따르는 noise 형태로 남도록 수행합니다. (forward process)
+ (1) normal distribution을 따르도록 제약을 두며 noise를 가함. (2) normal distribution은 사람이 다루기 쉬운 분산 형태로 해당 분산으로 근사시키는 것

Diffusion Model은 normal distribution을 띄는 noise x_t 에서 원본 영상 x_0 로 어떻게 복원할 것인가에 대한 문제를 풀어야만 합니다. forward process에서 시간에 따른 가우시안 노이즈 정보를 알고 있기 때문에 우리는 해당 노이즈를 예측하여 원본 영상으로 복원하는 방법을 사용합니다. (reverse process)

전반적인 흐름을 한번더 정리하자면, 다음과 같습니다.

  1. (Forward process) 원본 영상을 t 번을 반복하여 가우시안 노이즈 생성. 노이즈 생성시, 수학 모델을 이용하여 생성
  2. (Reverse process) 노이즈 영상 x_t 를 노이즈를 예측(네트워크)하여 t-1 복원 영상 x_{t-1} 을 생성하며, t-1 = 0이 되도록 반복 수행.

DDPM의 학습과 샘플링 방법을 알고리즘으로 표현하면 다음과 같습니다.

먼저 Alg 1. training을 살펴보면 noise를 더해나가면서 network(  \epsilon_{\theta} p_{\theta}  )가 t step에서 noise \epsilon 가 얼마만큼 더해졌는지를 학습합니다.

학습에 사용되는 손실 함수는 다음과 같습니다.

여기서 forward process 중 t 시간대의 정규분포를 따르는 가우시안 노이즈 \epsilon 과 노이즈 예측 네트워크 \epsilon_{\theta} 를 통해 예측된 t 시간대의 노이즈 정확도를 맞추도록 학습을 진행합니다. \epsilon_{\theta} 안의 인자 값은 x_0 로부터 t 번 노이즈가 가해진 영상이라고 보시면 됩니다.

다음으로 Alg 2. sampling (inference)를 살펴보면, 가우시안 노이즈 영상을 T 번 노이즈를 가한 영상 x_T라는 가정하에 시작합지다. x_T는 Alg 2의 4를 통해 t-1로 복원하며 T번 반복하여 x_0을 생성하도록 수행됩니다.

Experiment

  • 노이즈를 예측하기 위한 모델은 UNet을 사용했습니다. 반복 스텝 T=1000을 사용했습니다.
  • 정성적인 결과, Inception Score(IS)에서는 StyleGAN2을 능가하진 못하지만 FID scores에서는 uncoditional 에서 능가하는 결과를 보여준다.
DDPM의 image generation 스코어
  • 정성적인 실험 결과, 디테일한 표현이 살아있는 것이 특징
  • fig 6은 스텝에 따른 영상 생성 예시에 해당한다. fig 7은 step T의 길이에 따른 예측 결과에 해담함

Author: 김 태주

6 thoughts on “[NeurIPS 2020] Denoising Diffusion Probabilistic Models

  1. 안녕하세요. 논문이 워낙 어려워서 핵심만을 이해할 수 있게 하기 위해 리뷰를 짤막하게 쓰신건지..?는 모르겠으나 컨셉을 이해하기에는 좋았던 것 같습니다.

    한가지 궁금한 점이 결국 DDPM은 노이즈를 예측하는 네트워크를 학습시킨다는 것이 핵심인 것 같은데, 이때 해당 네트워크의 구조는 어떻게 되나요? 일반적인 GAN처럼 Encoder-Decoder 구조를 가지고 있으면 되나요?

    그리고 수식 14번에서 alpha 값이 의미하는 것은 무엇인가요? 해당 인자에 대한 정의가 없는 것 같아서요.

    마지막으로 알고리즘2에서 4번 라인에 맨 마지막 텀 \theta_{t}z 역시 무슨 텀인지 정의를 알려주시면 좋을 것 같습니다.

    1. 프로세스도 익숙한 형태가 아니라 이해하기 어려운데, 구체적인 방법에 대해서는 논문에서 증명하듯이 설명되어 있어 따로 다루는 것이 좋다고 판단하였습니다. 조만간 수식에 대해서도 다룰 예정입니다.

      – 네트워크 구조는 forward는 수학 모델로 구성되며, revers는 U-Net으로 구성되어 있습니다.-
      – GAN처럼 Encoder-Decoder 구조를 가지고 있지 않습니다. 영상을 입력하여 복원 영상을 내보내고, 이를 반복하는 파이프라인을 가집니다.
      – 수식 14번에서 alpha는 노이즈 정도를 담고 있는 파라미터로 해당 수식은 발생한 노이즈(가우시안)의 분산을 알고 있을때, 복원하기 위한 수식에 해당합니다.
      – /sigma z를 말씀하시는 걸로 파악됩니다. sigma는 복원을 위해 예측된 분산을 의미합니다. 해당 논문에서는 학습 가능한 파라미터를 이용하여 따로 추론하는 것이 아닌 beta 값을 사용했다고 합니다.

  2. 좋은 리뷰 감사합니다.

    Algorithm2. Sampling 과정 중 질문이 있습니다.
    1. 3번 과정에서 나오는 z의 의미가 무엇인지 궁금합니다.
    2. 4번 과정은 어떤 수식 과정을 통해 나온 건지 궁금합니다.

    감사합니다.

    1. 1. 3번 과정에서 나오는 z의 의미가 무엇인지 궁금합니다.
      – 가우시안 분포를 따르는 노이즈에 해당합니다. 복원된 정보가 가우시안 분포를 벗어나지 않도록 규제를 건다고 보시면 됩니다.
      2. 4번 과정은 어떤 수식 과정을 통해 나온 건지 궁금합니다.
      – 저 수식이 어떤 과정을 통해 나왔는지 설명하려면 꽤나 길어질 것 같습니다. 이후 리뷰에서 다루고자 하니 다음 리뷰를 참고해주시면 좋을 것 같습니다.

  3. 안녕하세요.
    좋은 리뷰 감사합니다.

    디퓨전 모델이 원본 이미지 x0에 노이즈를 t회 더하여 얻어지는 정규분포 형태의 xT로부터 x0을 복원할 수 있도록 학습하는 것으로 이해했습니다만, 제 이해가 정확한지 궁굼하여 질문드립니다.

    디퓨전 모델에서 xT-> x0의 복원 과정이 model(xT) = x0과 같이 한번에 이루어지는 게 아니라, t회에 걸쳐 추가되는 노이즈 epsilon을 예측하는 모델을 통해 epsilon을 t번 예측하여 빼는 방식인 건가요?

    감사합니다.

    1. 디퓨전 모델에서 xT-> x0의 복원 과정이 model(xT) = x0과 같이 한번에 이루어지는 게 아니라, t회에 걸쳐 추가되는 노이즈 epsilon을 예측하는 모델을 통해 epsilon을 t번 예측하여 빼는 방식인 건가요?

      – 넵 맞습니다. T번을 반복하여 t번째 노이즈를 예측하여, t-1의 복원된 영상을 생성합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다