DDPM은 높은 품질의 이미지를 생성해내지만 그 과정이 markov chain에 의한 수많은 iteration을 필요로 한다. GAN과 같은 기술과의 차이를 줄이기 위해서는 생성 시간을 단축할 필요가 있다.
DDIM은 forward process를 재정의함으로써 DDPM을 설명할 수 있는 일반화된 objective function을 제안한다. 또한 파라미터를 조정하여 결과물을 deterministic하게 만들어내는 generative process를 제안함으로써 생성된 이미지의 품질은 유지하되 iteration 횟수를 줄여 computational cost를 줄였다.
아이디어
Non-markovian forward process
DDIM에서는 forward process를 아래 식의 좌변과 같은 방식으로 정의하여 DDPM의 markov chain을 끊어낸다. 식의 우변은 좌변을 Bayes’ rule로 풀어서 표현한 것이다.
Markov chain이 끊어졌다고 표현하는 이유 이전 상태(xt−1)에 의해서 그 다음 상태(xt)가 결정된다는 정의를 벗어나기 때문이다. 조건에 x0가 들어가 있는 것을 알 수 있는데, 이것이 그 이유이다.
Generative process and unified variational objective
Generative process를 직관적으로 설명하면 크게 두 과정으로 이야기해볼 수 있다.
노이즈가 낀 상태인 xt에서 초기 이미지인 x0를 추론한다.
DDIM의 forward process(qσ(xt−1∣xt,x0))를 이용해서 이전 단계의 이미지를 추론한다.
순서대로 이야기하겠다.
1. 노이즈가 낀 상태인 xt에서 초기 이미지인 x0를 추론한다.
Time step t일 때 추론한 노이즈를 xt에서 빼면서 x0를 계산한다.
fθ(t)(xt)=(xt−1−αt⋅ϵθ(t)(xt))/αt
2. DDIM의 forward process(qσ(xt−1∣xt,x0))를 이용해서 이전 단계의 이미지를 추론한다.
위에서 x0를 추론하는 fθ(t)(xt)를 정의했다. 이 함수를 forward의 condition에 있는 x0를 대신하여 넣어주면서 generative process를 다음과 같이 정의한다.
새롭게 정의된 pθ(t)(xt−1∣xt)는 objective function을 정의할 때 이용된다.
이렇게 정의한 objective function Jσ는 DDPM의 objective function인 Lγ에서 γ=1인 경우와 동일하다. 여기서 γ는 DDPM 논문에서 simplify하는 과정에서 1로 대체되는 값으로, DDPM의 objective function은 L1이고 DDIM과 동일하다.
DDPM의 γ=1 다시 보기
아래 보이는 식이 DDPM의 Lt−1을 ϵ,ϵθ로 풀어서 정리한 형태이다.
식에서 standard gaussian에서 샘플링한 노이즈(ϵ)와 예측한 노이즈(ϵθ)에 대한 MSE 앞에 α,β,σ로 구성된 항을 볼 수 있는데 이 부분이 DDIM에서 γ로 표현된 부분이며 DDPM 논문에서는 weighted variational bound라고 한다.
이 부분의 영향은 standard variational bound에 비해서 recontruction의 다른 측면을 강조하는 것이라고 한다. 이 항을 1로 고정시키는 것은 time step t가 작을 때의 weight를 줄이는 동시에 t가 클 때의 비중을 높여서 더 어려운 denoising task에서 득이 된다고 한다.
이런 목적으로 simplify한 DDPM의 objective는 다음과 같다.
Sampling from generalized generative process
지금까지 새로 정의한 Non-markovian process를 바탕으로 reverse process를 비롯해서 objective function까지 DDPM을 표현할 수 있음을 이야기했고, 이것을 근거로 사전 학습된 DDPM을 이용해도 문제가 없다는 것을 강조한다. 그리고 σ에 따라 generative process의 형태가 달라지기 때문에 적절한 σ를 찾는데 집중한다.
Denoising Diffusion Implicit Models
샘플 xt에서 xt−1를 생성해내는 식은 다음과 같다.
이 식은 reverse process를 정의할 때 t=1인 경우에 해당하는 식과 동일하다. 여기서 주목할 점은 σ이다. σ=(1−αt−1)/(1−αt)⋅1−αt/αt−1인 경우에는 forward process가 markovian이 되기 때문에 DDPM과 같아진다.
다른 경우로 σ=0일 때는 식의 가장 우측의 random noise 항이 사라지면서 이 항이 담당하는 무작위성이 사라지게 된다. 즉 xt에서 일정한(consistent) 샘플이 추출된다는 의미이며 이를 deterministic하다고 표현하고, 이런 모델을 implicit model이라고 한다. 따라서 σ=0인 경우에 DDIM이 된다.
Accelerated generation process
위에서 denoising objective L1을 정의했다. 이 식이 다른 식에 의존하지 않고 qσ(xt∣x0)가 변하지 않는다면, 모델을 바꾸지 않고 T보다 짧은 길이로 forward process를 정의할 수 있다. 그리고 forward process에 대응되는 generative process를 가속화할 수 있다.
가속화하는 방법은 몇 개의 노드를 뛰어 넘는 generative process를 정의하는 것이다. 과정을 설명하기 전에 사용된 기호들을 이야기하겠다.
τ: [1,...,T]의 sub-sequence이며 총 길이가 S인 배열이다.
τˉ: [1,...,T]에서 τ를 제외한 나머지 배열이다.
τS: T이다.
새로운 sequencial forward process는 샘플링하고자 하는 latent variables xτ1,...,xτS에 대해서 정의하며, 이 역순으로 generative process를 수행하게 된다.
+ 건너 뛰면서 샘플링이 가능한 이유 (Appendix C.1 내용)
forward process
가속화하기 위해서는 다음과 같이 샘플링하려는 time step인 τ를 이용해서 forward process를 재구성한다.
논문에서는 이 부분을 직관적으로 표현하면 {xτi}i=1S과 x0는 graphical model 중 chain의 형태이고 {xt}t∈τˉ는 x0와 star의 형태라고 이야기한다.
이 말은 샘플링하려는 latent variables는 non markovian이지만 이전 상태를 알아야 하는 구조이기 때문에 그런 것 같고, 나머지에 대해서는 x0만 있으면 계산해낼 수 있기 때문인 것 같다.
Generative process
Generative process는 다음과 같이 정의된다.
이 식에서 실제로 이용되는 부분은 표기되어 있는 우변의 첫 번째 항이다. pθ를 qσ,τ와 fθ(t)로 표현할 수 있다.
이렇게 {xτi}i=1S와 {xt}t∈τˉ로 나눠서 정의된 식으로 variational objective J을 구성해도 기존의 Lγ와 동일하게 변환이 된다.