GAN을 대체하여 연구되고 있는 Diffusion Model이란 무엇인가.
출처로 표시된 유튜브와 nvidia 블로그의 내용을 정리한 글이다
Generative Model(생성 모델)
먼저 Generative model은 데이터의 representation(표현)을 학습하고 데이터 자체를 모델링하는 ML 학습 방법 중 하나이다. Discriminative model은 데이터가 주어지면 별도의 확률값을 예측한다. 두 모델 간의 상호작용으로 Generative model은 실제 데이터와 다르면서도 실제처럼 보이게 하는 데이터를 합성할 수 있게 된다.
이 모델은 주로 이미지 합성, editing, inpainting, colorization, deblurring, superresolution(SR)과 같은 태스크에 사용되었다. 또한 게임, 애니메이션, 메타버스 등에서 크리에이터들이 virtual 3d content를 생성하는데도 사용되었다.
또한 생성 모델에서 학습한 데이터 representation과 합성된(생성된) 데이터는 레이블 데이터가 부족한 경우 다른 모델의 훈련 또는 fine-tuning에 사용될 수 있다.
Generative Learning Trilemma - Why Diffusion Model?
현실에 생성 모델을 적용하기 위해서는 아래 세 가지의 요건을 충족해야 한다.
- 높은 퀄리티의 샘플링: 특히 사용자와 직접 상호 작용하는 적용에서는 높은 생성 퀄리티가 필요하다. 예를 들어, 낮은 퀄리티로 생성된 음성 데이터는 이해할 수 없을 것이다. 이미지에서 원하는 출력은 자연적인 이미지와 구별할 수 없는 정도의 생성 이미지이다.
- Mode coverage와 샘플의 다양성: 훈련 데이터가 복잡하고 다양한 경우에도 생성 모델은 생성 퀄리티를 희생하지 않고 이러한 다양성을 성공적으로 포착해야 한다.
- 빠르고 계산 cost가 적은 샘플링: 많은 대화형 응용 프로그램에는 실시간 이미지 편집과 같은 빠른 생성이 필요하다. 환경을 생각해서도 계산 cost가 적은 것이 좋다.
데이터의 다양성을 충실하게 표현하는 것은 데이터 분포에서 소수 mode를 놓치는 것을 방지할 수 있다. 이는 학습된 모델에서 원하지 않는 편향을 줄이는 데 도움이 된다.
예를 들어 교통 모델링에서 위험한 운전이나 사고에 해당하는 드문 시나리오는 데이터 분포에서 Long Tail에 해당하며, 소수 mode에 해당하는 것이다.
기존 방법들이 일반적으로 모든 요구 사항을 동시에 충족할 수 없기 때문에 이 세 가지 요구 사항이 부과하는 문제를 생성 학습 트릴레마로 식별한다.
Introduction
Diffusion model은 denoising diffusion models 또는 score-based generative models으로도 알려져 있다. (Diffusion model이 score based model이랑 같은건가?? 찾아보기) 생성 분야에서 뜨고 있는 모델이다.
Mode Coverage/Diversity, 샘플의 퀄리티 측면에서 GAN을 능가했으며, 이미지, 스피치, 3D 생성에서 이미 적용되었다. 이 Diffusion model은 Forward, Reverse Process(=Parametrized reverse=denoising) 두 절차로 구성되어 있다.
기본 아이디어
Forward: 이미지에 가우시안 노이즈를 계속해서 추가하면 알아볼 수 없는 이미지가 생성된다.
Reverse process: noise로부터 시작해서 점차적으로 노이즈를 제거(denoise)하여 깨끗한 이미지를 얻는다.
두 절차 모두 수천번에 걸쳐 노이즈를 더하고, 제거하는 과정을 반복한다.
처음엔 denoising한 이미지가 안좋겠지만 학습을 진행하며 퀄리티가 좋아진다. 그림 하나당 천단위의 노이즈/디노이징을 해야 해서 속도는 빠르지 않다.
최근의 Diffusion 모델은 GAN (Dhariwal & Nichol, 2021), text descriptions to images (GLIDE: Nichol et al, 2021), painting(Palette: Saharia et al, 2021), manipulation(DALL-E 2: Ramesh et al, 2022) 태스크들에서 우위를 점했다. 괄호 안의 논문들은 각 태스크에 해당하는 Diffusion 논문들이다.
Latent Diffusion Model의 등장으로 Diffusion 분야가 더 뜨거워졌다. 그냥 Diffusion Model은 시간이 오래 걸렸는데, 이미지를 latent space(행렬)로 인코딩해서 입력하면 학습 속도가 훨신 개선되었더라! Latent diffusion model은 일단 diffusion model부터 훑어보고 따로 포스팅을 해야겠다.
Forward Process
Target data distribution에서 추출한 sample, 즉 training set에서의 한 이미지로부터 시작해보자. 이를 x0라고 칭한다.
여기서 Forward Process란 이미지에 노이즈를 t 횟수만큼 추가하는 과정을 말한다. 당연하게도 그 반대의 경우인 noise로부터 원래의 샘플 이미지를 생성하는 과정을 reverse process라고 한다.
Forward process는 markov chain의 형태를 띄고 있다.
Markov chain: 특정 스텝에서의 distribution은 직전 스텝에서의 샘플에 의존한다.
따라서 연속적인 단일 단계 조건의 곱으로 초기 데이터 포인트 x0에 대해 조건화된 손상된 샘플의 분포를 작성할 수 있다.
연속 데이터의 경우 각 전환(transition)은 아래와 같이 diagonal gaussian으로 매개변수화된다.
βt는 특정 time step t에서의 variance를 의미하며, hyperparameter이다. β는 일반적으로 시간에 따라 증가하며 0~1의 범위를 갖는다. 따라서 sqrt(1-βt)는 각각 새로운 가우시안의 평균을 0에 가깝게 만든다.
cf. 가우시안 정규 분포: 평균 μ와 표준편차 σ인 분포를 N(μ, σ^2)로 표현한다.
T가 무한으로 발산하면, q는 0의 평균과 identity covariance를 갖는 gaussian으로 수렴할 것이다. N(0,I) 즉, original sample의 정보를 모두 잃게 된다. 실제 실험들에서 사용하는 t는 천단위이다. 크지만 유한한 t를 사용하는 것은 individual variance β_t를 매우 작게 만든다. β_t<<1
그런데, 왜 작은 step size (t)를 사용할까? -> Backward pass를 용이하게 하기 위함!
Posterior of Forward process
Summary
Diffusion model이 높은 샘플 퀄리티와 다양성을 달성했다 하더라도, 속도 측면에서 부족한 점이 있다. 따라서 모델을 가속하기 위한 연구가 활발하게 이루어지고 있다.
Reference
https://www.youtube.com/watch?v=fbLgFrlTnGU&list=LL&index=3
https://developer.nvidia.com/blog/improving-diffusion-models-as-an-alternative-to-gans-part-1/
'DeepLearning' 카테고리의 다른 글
Class Imbalance (0) | 2022.12.26 |
---|---|
[논문리뷰] CutPaste: Self-Supervised Learning for Anomaly Detection and Localization (0) | 2022.08.04 |
[논문리뷰] MixMatch: A Holistic Approach to Semi-Supervised Learning (0) | 2022.07.23 |
[논문리뷰] FixMatch: simplifying semi supervised learning with consistency and confidence (0) | 2022.07.20 |
EMA (Exponential Moving Average) 알고리즘 (0) | 2022.07.08 |