About me
home
Portfolio
home
🚒

Diffusion Model 정리

1. diffusion model

데이터를 만들어내는 deep generative model 중 하나
foward process(diffusion process) + reverse process
forward process → data로부터 noise를 조금씩 더해가면서 data를 완전한 noise로 만드는 과정 data(X0X_0) → noise(XTX_T)
reverse process → noise로부터 조금씩 복원해가면서 data를 만드는 과정 noise(XTX_T) → data(X0X_0)
1.
원본 이미지에 gaussian noise를 순차적으로 추가
2.
완전한 random noise로 만들어주는 과정(diffusion process)으로부터, 이것의 역변환(inverse process)을 학습
3.
이 학습된 역변환을 사용하여 random noise로부터 이미지를 생성
특정 사진의 픽셀들이 시간이 지나면서 흩어져서 노이즈로 변하는것을 나타냄 → 랑주뱅 동역학
장점
Distribution coverage가 높음 -> 다양한 이미지 생성 가능
모델 확장성이 좋음
단점
순차적인 역변환을 통해 이미지가 생성되므로 생성 속도가 느림
gan에 비해 didelity(품질의 신뢰성?)이 낮음

2. process

목적: 이미지에 노이즈를 순차적으로(T step)추가하는 diffusion process의 역변환을 학습
X0X_0: 실제 데이터/ XTX_T: 최종 noise/ XtX_t: 데이터에 noise가 더해진 상태의 latent variable
latent variable(잠재 변수) - 직접적으로 관찰되거나 측정이 되지 않는 변수로 관측이 가능한 다른 변수들로부터 추론이 가능한 변수 - “건강”이라는 추상적인 변수는 직접적으로 측정할 수 없는 잠재 변수이지만 혈압, 체온 등 관측이 가능한 외부 변수로부터 추론이 가능 → 혈압, 체온 등 각각의 변수를 떼어서 해석하면 몸 상태 파악이 어렵지만 이것들을 건강이라는 잠재 변수로 엮으면 해석하기가 쉬워진다는 장점이있음 - 이런 외부 변수로부터 추상적인 건강이라는 잠재 변수를 도출하려면 수학적인 모델이 필요
오른쪽에서 왼쪽 방향으로 noise를 더해가는 foward process q를 진행
그 후 forward process를 반대로 추정하는 reverse process p를 학습 → noise(XTX_T)로부터 data(X0X_0)를 복원하는 학습
reverse process를 활용해 random noise로부터 원하는 image, text, graph등을 generate

3. reverse process

reverse process p는 noise(XTX_T)로부터 data(X0X_0)를 복원 → random noise로부터 원하는 image, text, graph등을 generate
diffusion model을 사용하기 위해 모델링 하는 것이 필수적이지만, 알아내기 어려워 pθp_\theta를 활용해 추정
gaussian transition을 활용해 markov chain 형태로 추정(noise화 되어가는 과정)
평균 μθ\mu_\theta와 표준편차 σθ\sigma_\theta는 학습되어야하는 파라미터
x_0은 noise가 없는 데이터, t가 커짐에 따라 점점 noisy해져서 xTx_T는 가우시안 노이즈

4. forwad process

forward process q는 data(X0X_0)로부터 noise를 더해가면서 최종 noise(XTX_T)형태로 가는 과정
reverse process의 학습 시 forward process 정보를 활용해서 하기에 이 과정의 분포를 아는것이 중요(p 모델이 q를 보고 noise를 걷어내는 과정 학습)
data에 gaussian noise를 조금식 더하는 markov chain의 형태
p의 μ\mu, σ\sigma와 같아지도록 학습하면 q 역시 noise가 추가되는 학습