이미지에 가우시안 노이즈를 계속해서 더하는 과정(forward process)을 거쳐서 노이즈가 존재하는 이미지를 생성한다. 이후 노이즈를 제거하는(backward process) 모델을 학습하는데, 이 모델을 디퓨젼 모델이라 한다. 디퓨젼 모델을 통해 데이터를 생성하는 과정은 다음과 같다.
마르코프 과정을 통해 이미지에 가우시안 노이즈를 더함. 수식으로 표현하면, $q(x_{t+1}|x_t,...,x_0) = q(x_{t+1}|x_t) = N(x_{t+1}; \sqrt{1-\beta_t}\mu_t, \beta_tI)$.
보통 $\beta_t$를 매우 작은 양의 실수로 설정함.
이유: backward process $p(x_t|x_{t+1})$가 정규 분포를 갖도록 만들기 위함¹.
$0 < \sqrt{1-\beta_t} < 1$ .
노이즈의 평균을 제어하는 $\sqrt{1-\beta_t}$를 1보다 작은 양수로 설정하는 이유:
기댓값이 0인 가우시안 확률 변수로 만드는 이유: 아래 "추론 때의 디퓨젼 모델" 부분에서 설명하겠다.
시작하기에 앞서, 만약 $t \ge 1$일 때 $q(x_t|x_0)$가 가우시안 밀도 함수인 것은 사소하며, 아래의 내용은 $t$가 매우 클 때 $q(x_t)$가 어떤 성질을 갖는지에 대한 내용임을 언급하고 싶다.
증명 스케치:
$\gamma_t:=\sqrt{1-\beta_t}$
$x_{t+1}=\gamma_tx_t + \sqrt{\beta_t}\epsilon_t$ where $\epsilon_t = N(0,1)$ (by reparameterization trick.)
$x_{t+1}= \gamma_t(\gamma_{t-1}x_{t-1} + \sqrt{\beta_{t-1}}\epsilon_{t-1}) + \sqrt{\beta_t}\epsilon_t$ (since $x_{t} = \gamma_{t-1}x_{t-1} + \sqrt{\beta_{t-1}}\epsilon_{t-1}$)
$x_{t+1} =(\gamma_t\gamma_{t-1})x_{t-1} + \gamma_t\sqrt{\beta_{t-1}}\epsilon_{t-1} + \sqrt{\beta_t}\epsilon_t$
여기에서 $x_{t-1}$을 $x_{t-2},\epsilon_{t-2}$의 함수로 나타내고,
$x_{t-2}$를 $x_{t-3},\epsilon_{t-3}$의 함수로 나타내는 등의 과정을 계속 진행하면 아래와 같은 식을 얻을 수 있다.
$x_{t+1}=(\gamma_t\gamma_{t-1}\gamma_{t-2}...\gamma_0)x_0 + f(ϵ_0, ϵ_1,...,ϵ_t,\beta_0, \beta_1,...,\beta_t)$
여기에서 $f$는 $x_0$를 factor로 갖지 않는 항을 모아서 함수로 표현한 것이다.
만약 임의의 자연수 i에 대해 $0 < \gamma_i < 1$이면, $lim_{t-> \infin}\gamma_t\gamma_{t-1}...\gamma_0=0$이기에 $x_0$가 $x_{t+1}$에 미치는 영향이 없어진다.
그런데 $f$를 구성하는 모든 항은 기댓값이 0인 서로에게 독립적인 가우시안 확률 변수임에 주목하자.
독립적인 가우시안 확률 변수를 더하면 가우시안 확률 변수가 되기 때문에,
$x_{t+1}$는 기댓값이 0인 가우시안 분포를 갖는다.
기댓값 $\sqrt{1-\beta_t}$과 분산 $\beta_t$이 서로의 함수가 되도록 만든 이유
임의의 $t$에 대해 $x_t$를 한 번에 획득하는 방법
Variational Auto Encoder (VAE)와 유사한 내용
디퓨젼 모델의 VLB
$logp_\theta(x_0)$
$= log(\int p_\theta(x_{0:T})dx_{0:T})$
$= log(\int p_\theta(x_{0:T})\frac{q(x_{1:T}|x_0)}{q(x_{1:T}|x_0)}dx_{1:T})$
$=log(E_{q(x_{1:T})}[\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)}])$
$\ge E_{q(x_{1:T}|x_0)}[log\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)}]$ (by Jensen’s Inequality)
$= L_{VLB}$
DDPM의 VLB를 계산이 쉬운 형태로 정리할 수 있다.
$L_{VLB}$
$=E_{q(x_{1:T}|x_0)}[log\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)}]$
$= E_{q(x_{1:T}|x_0)}[log\frac{p(x_T)*\Pi_{t=1}^T p_\theta(x_{t-1} | x_t)}{\Pi_{t=1}^T q(x_t | x_{t-1})}]$ (By the Markov property of forward and backward process. forward process가 마르코프 속성을 가지면 backward process도 마르코프 속성을 갖게 된다.)
$= E_{q(x_{1:T}|x_0)}[log\frac{p(x_T) * p_\theta(x_0|x_1)\Pi_{t=2}^T p_\theta(x_{t-1} | x_t)}{q(x_1|x_0)\Pi_{t=2}^T q(x_t | x_{t-1})}]$ (t가 1일 때의 항을 $\Pi$에서 분리함)
아래의 내용을 고려하자.
$\Pi_{t=2}^T q(x_t|x_{t-1})$
$=\Pi_{t=2}^T q(x_t| x_{t-1}, x_0)$ (By Markov Property)²
$=\Pi_{t=2}^T\frac{q(x_t, x_{t-1}, x_0)}{q(x_{t-1}, x_0)}$
$=\Pi_{t=2}^T\frac{q(x_{t-1}|x_t, x_0) * q(x_t|x_0) * \sout{q(x_0)}}{q(x_{t-1}|x_0) * \sout{q(x_0)}}$
$=\Pi_{t=2}^T\frac{q(x_{t-1}|x_t, x_0) * q(x_t|x_0)}{q(x_{t-1}|x_0)}$
$=\frac{\sout{q(x_2|x_0) * q(x_3|x_0) ... }* q(x_T|x_0) * \Pi_{t=2}^Tq(x_{t-1}|x_t, x_0)}{q(x_1|x_0) * \sout{q(x_2|x_0) ... q(x_{T-1}|x_0)}}$
$=\frac{q(x_T|x_0)\Pi_{t=2}^Tq(x_{t-1}|x_t, x_0)}{q(x_1|x_0)}$
위의 $L_{VLB}$에서 $\Pi_{t=2}^T q(x_t|x_{t-1})$을 $\frac{q(x_T|x_0)\Pi_{t=2}^Tq(x_{t-1}|x_t, x_0)}{q(x_1|x_0)}$로 교체하면 아래 식을 얻을 수 있다.
$L_{VLB}$
$= E_{q(x_{1:T}|x_0)}[log\frac{p(x_T) * p_\theta(x_0|x_1)\Pi_{t=2}^T p_\theta(x_{t-1} | x_t)}{q(x_1|x_0)\Pi_{t=2}^T q(x_t | x_{t-1})}]$
$= E_{q(x_{1:T}|x_0)}[log\frac{p(x_T) * p_\theta(x_0|x_1)\Pi_{t=2}^T p_\theta(x_{t-1} | x_t)}{q(x_T|x_0)\Pi_{t=2}^Tq(x_{t-1}|x_t, x_0)}]$
$= E_{q(x_{1:T}|x_0)}[log\frac{p(x_T)}{q(x_T|x_0)}] + E_{q(x_{1:T}|x_0)}[log\frac{\Pi_{t=2}^T p_\theta(x_{t-1} | x_t)}{\Pi_{t=2}^Tq(x_{t-1}|x_t, x_0)}] + E_{q(x_{1:T}|x_0)}[log(p_\theta(x_0|x_1))]$
$= E_{q(x_{1:T}|x_0)}[log\frac{p(x_T)}{q(x_T|x_0)}] + \sum_{t=2}^T E_{q(x_{1:T}|x_0)}[log\frac{p_\theta(x_{t-1} | x_t)}{q(x_{t-1}|x_t, x_0)}] + E_{q(x_{1:T})|x_0}[log(p_\theta(x_0|x_1))]$