본 리뷰는 책 "확산 모델의 수학(오카노하라 다이스케)"의 리뷰이며 리뷰의 대부분의 내용은 책의 내용을 바탕으로 제작되었습니다. 보다 자세한 내용에 대해 알고 싶으시면 책을 직접 구입 후 읽어보시길 권장합니다.
Chapter 1 생성 모델
에너지 기반 모델과 분배함수
책에서 메인으로 다루는 확산 모델은 생성 모델의 한 종류이다. 생성 모델이란 목표 도메인의 데이터를 생성하는 모델을 말한다.
책의 전반에서 원본 데이터 $\left\{ \mathbf{x}^{(1)}, \dots, \mathbf{x}^{(N)} \right\}$는 $p(\mathbf{x})$라는 미지의 확률분포로부터 서로 독립적으로 추출된 것이라고 하자. 또한 생성 모델은 $q_\theta (\mathbf{x})$라는 확률분포를 가진다. 확률분포 $q_\theta(\mathbf{x})$를 아래와 같이 에너지 함수 $f_\theta(\mathbf{x})$와 분배함수 $Z(\theta)$를 이용해서 나타낼 수 있다.
$$ q_\theta(\mathbf{x}) = \frac{e^{-f_\theta(\mathbf{x})}}{Z(\theta)} $$
$$ Z(\theta) = \int _{\mathbf{x^\prime} \in X} e^{-f_\theta(\mathbf{x^\prime})}d\mathbf{x^\prime} $$
에너지 $f_\theta(\mathbf{x})$가 작은 값이라면 그 데이터는 출현하기 쉽다는 것을 나타내고 반대로 큰 값이라면 그 데이터는 출현하기 어렵다.
에너지 기반 모델의 특징 중 하나로는 구성성이 있다. 에너지 함수 $f_1(\mathbf{x})$, $f_2(\mathbf{x})$가 있고, 이로부터 얻은 확률분포 $q_1(\mathbf{x})$, $q_2(\mathbf{x})$가 있다고 하자. 이 때 두 에너지의 합 $f(\mathbf{x}) = f_1(\mathbf{x}) + f_2(\mathbf{x}) $으로부터 얻어지는 확률분포 $q(\mathbf{x})$는 아래와 같이 계산된다.
$$ q(\mathbf{x}) \propto e^{-f_1(\mathbf{x})-f_2(\mathbf{x})} \propto q_1(\mathbf{x})q_2(\mathbf{x}) $$
즉 확률분포 $q(\mathbf{x})$는 각각의 확률이 큰 영역의 교집합을 결과로 준다.
학습 방법
생성 모델의 학습 방법에는 크게 두 가지가 있다. 첫번째는 우도 기반 모델을 이용하는 방법이고, 두번째는 암묵적 생성 모델을 이용하는 방법이다.
1) 우도 기반 모델
주어진 데이터 $\mathbf{x}$가 생성될 확률 $q_\theta(\mathbf{x})$를 우도라고 한다. 우도 기반 모델에서는 우도가 최대가 되도록 매개변수를 학습시키는데, 이를 최대우도추정이라고 한다.
훈련 데이터 집합 $D=\left\{ \mathbf{x}^{(1)}, \dots, \mathbf{x}^{(N)} \right\}$는 $p(\mathbf{x})$의 우도는 각 데이터들의 우도의 곱으로 정의된다. 최적화 문제에서는 다루기 쉽도록 로그를 취한 로그 우도 $L(\theta)$를 사용한다.
$$ q_\theta(D) = \prod_i q_\theta(\mathbf{x}^{(i)}) $$
$$ L(\theta) = \frac{1}{N} \mathrm{log} q_\theta(D) = \frac{1}{N} \sum_i \mathrm{log}q_\theta(\mathbf{x}^{(i)}) $$
에너지 기반 모델의 최대우도추정은 훈련 데이터의 로그 우도의 합인 목적함수 $L_\theta$를 최대화하는 것이다. 이를 아래와 같이 변형할 수 있다.
$$ \begin{align} L(\theta) & = \frac{1}{N}\sum_{i=1}^{N} \mathrm{log} q_\theta(\mathbf{x}^{(i)}) \\ & = -\frac{1}{N} \sum_{i=1}^N [f_\theta(\mathbf{x}^{(i)})] - \mathrm{log} Z(\theta) \\ & = -\frac{1}{N} \sum_{i=1}^N [f_\theta(\mathbf{x}^{(i)})] - \mathrm{log} \int_{\mathbf{x\prime}\in X} e^{-f_\theta(\mathbf{x\prime})}d\mathbf{x\prime} \end{align} $$
최대우도추정은 첫 번째 항을 통해서 훈련 데이터의 위치 에너지를 낮게 하고 두 번째 항을 통해서 그 외의 모든 위치의 에너지를 높게하는 매개변수를 구하는 것을 의미한다.
$$ \begin{align} \frac{\partial L}{\partial \theta} & = -\frac{1}{N} \sum_{i=1}^N \left[ \frac{\partial f_\theta(\mathbf{x}^{(i)})}{\partial\theta} \right] - \frac{\partial}{\partial\theta} \log Z(\theta) \\ &= -\frac{1}{N} \sum_{i=1}^N \left[ \frac{\partial f_\theta(\mathbf{x}^{(i)})}{\partial\theta} \right] -\frac{1}{Z(\theta)} \int -\frac{\partial f_\theta(\mathbf{x})}{\partial\theta} - e^{-{f_\theta(\mathbf{x})}} d\mathbf{x} \\&= -\frac{1}{N} \sum_{i=1}^N \left[ \frac{\partial f_\theta(\mathbf{x}^{(i)})}{\partial\theta} \right] + \mathbb{E}_{\mathbf{x} \sim q_\theta(\mathbf{x})} \left[ \frac{\partial f_\theta(\mathbf{x})}{\partial\theta} \right] \end{align}$$
위 수식은 로그 우도의 기울기를 구한 것이다. 이렇게 기울기는 훈련 데이터의 에너지에서 계산한 기울기의 평균값과 현재 생성 모델의 확률분포에서 기댓값을 계산한 에너지의 기울기로 표현할 수 있다. 다만 두 번째 항에서 기울기의 평균을 몬테카를로 샘플링 등을 이용해서 구해야 하는데, 매번 표본 추출하는데에 시간이 걸리며 추정된 분산이 커지는 문제가 발생한다. 분배함수를 사용하는 경우에 기울기를 직접 추정해서 학습하기는 일반적으로 어렵다.
2) 암묵적 생성 모델
암묵적 생성 모델은 표본추출 과정에 의해 확률분포가 암묵적으로 표현되는 모델이다. GAN 등이 대표적인 암묵적 생성 모델이다.
3) 우도 기반 모델 vs 암묵적 생성 모델
- 학습 안정성
우도 기반 모델은 로그 우도를 목적함수로 하는 최적화 문제로 학습이 가능하지만, 암묵적 생성 모델은 적대적 학습을 시켜야 하므로 학습이 불안정하다.
- 계산량
높은 표현력을 가진 모델의 경우, 우도 기반 모델은 정규화항이나 기울기를 계산하는 계산량이 매우 크지만, 암묵적 생성 모델은 분배함수를 다룰 필요가 없어 계산량이 훨씬 적다.
- KL divergence 관점에서 본 두 모델의 차이
확률분포 $p,q$에 대해 KL divergence는 아래와 같이 정의된다.
$$D_{KL}(p||q) = \int_x p(x)\log \frac{p(x)}{q(x)}dx$$
최대우도추정은 $D_{KL}(p||q_\theta)$를 최소화하는 것이다. $p(\mathbf{x})>0$인 영역에서 $q_\theta(\mathbf{x})$의 값이 작다면 큰 페널티가 생기기 때문에 우도 기반 모델은 가능한 모든 모드를 포함하도록 학습한다. 다만 잘못 생성된 모드를 억제할 유인은 적기 때문에 모드가 아닌 부분도 생성할 수 있다.
반면 암묵적 생성 모델은 역 KL divergence $D_{KL}(q_\theta||p)$ 최소화 문제이다. 즉 $q_\theta(\mathbf{x})>0$인 영역에서 $p(\mathbf{x})$가 작으면 큰 페널티가 생기기 때문에, 목표 분포의 일부 데이터만 학습하기 쉽다. 각 모드가 정확하게 모델링될 수 있지만, 일부 모드만 생성되도록 학습이 진행된다. 이러한 현상을 모드 붕괴라고 하는데, 암묵적 생성 모델 학습의 경우 모드 붕괴가 일어나기 쉽다.
책에서 주로 다룰 확산 모델은 우도 기반 모델이고, 모드 붕괴가 발생하기 어렵다. 대신 계산이 힘든 정규화 항의 계산을 회피하는 방법을 살펴볼 것이다.
점수: 로그 우도 입력에 대한 기울기
점수 함수 $\mathbf{s}(\mathbf{x})$는 아래와 같이 정의된다.
$$ \mathbf{s}(\mathbf{x}) = \nabla_\mathbf{x} \log p(\mathbf{x}) $$
점수는 입력 $\mathbf{x}$와 같은 차원수를 갖는 벡터이다. 점수는 입력공간에서의 벡터장을 나타내고, 각 점의 벡터는 그 위치에서 로그 우도가 가장 급격히 커지는 방향과 그 크기를 나타낸다.
점수는 $\nabla_\mathbf{x} \log p(\mathbf{x}) = \frac{\nabla_{\mathbf{x}}p(\mathbf{x})}{p(\mathbf{x})}$로 나타낼 수 있고, 이에 따라 확률이 작은 영역에서 크게 되기 쉽고, 큰 영역에서는 작아지기 쉽다.
또한 아래의 식에서 볼 수 있듯이 점수는 분배함수를 사용하지 않는다.
$$\begin{align} \nabla_{\mathbf{x}} \log q_\theta(\mathbf{x}) &= -\nabla_\mathbf{x}f_\theta(\mathbf{x}) - \nabla_\mathbf{x} \log Z(\theta) = -\nabla_\mathbf{x}f_\theta(\mathbf{x}) \end{align}$$
랑주뱅 몬테카를로 방법
랑주뱅 몬테카를로 방법은 점수를 사용하는 MCMC 방법이다. 먼저 임의의 사전푼포 $\pi(\mathbf{x})$로부터 $\mathbf{x}_T$를 추출하여 아래의 수식을 반복적으로 적용하여 원본 분포를 따르는 데이터 $\mathbf{x}_0$를 추출한다.
$$ \mathbf{x}_{k} = \mathbf{x}_{k+1} + \alpha \nabla_\mathbf{x} \log p(\mathbf{x}_{k+1}) + \sqrt{2\alpha}\mathbf{u}_k $$
여기서 $\mathbf{u}_k$는 정규분포 노이즈이다. 즉 각 스텝마다 점수 방향으로 진행하고 작은 크기의 잡음을 추가하여 점점 점수가 높은 방향으로 데이터를 이동시킨다. 잡음을 추가함으로써 데이터가 극댓값으로부터 탈출할 수 있도록 한다.
점수 매칭
앞에서 알아본 바와 같이, 확률분포의 점수를 계산할 수 있으면 랑주뱅 몬테카를로 방법을 사용해서 그 확률분포로부터 효율적으로 표본을 추출할 수 있다. 점수 기반 모델(Score Based Model, SBM)은 이러한 확률분포의 점수를 학습하는 모델이다. 이제부터 점수를 어떻게 학습시키는지 알아보자.
우리가 학습시킬 SBM을 $\mathbf{s}_\theta(\mathbf{x})$라 하자. 훈련 데이터 $D=\left\{ \mathbf{x}^{(1)}, \dots, \mathbf{x}^{(N)} \right\}$가 있을 때, 일반적으로 각 훈련 데이터의 점수 $\nabla_\mathbf{x} \log p(\mathbf{x}^{(i)})$는 계산할 수 없다.
$$J_{ESM}(\theta) = \frac{1}{2}\mathbb{E}_{p(\mathbf{x})} \left[ \Vert \nabla_\mathbf{x} \log p(\mathbf{x}) -\mathbf{s}_\theta(\mathbf{x}) \Vert ^2 \right]$$
이를 명시적 점수 매칭(Explicit Score Matching, ESM)이라 하는데, 위와 같이 단순히 훈련 데이터들의 점수에 대한 L2 거리로 목적함수를 설정할 수는 없다.
암묵적 점수 매칭
암묵적 점수 매칭(Implicit Score Matching, ISM)에서는 점수 $\nabla_\mathbf{x} \log p(\mathbf{x})$를 사용하지 않고 목적함수를 정의한다.
$$ J_{ISM}(\theta) = \mathbb{E}_{p(\mathbf{x})} \left[ \frac{1}{2} \Vert s_\theta(\mathbf{x}) \Vert ^2 + \mathrm{tr}(\nabla_\mathbf{x} s_\theta(\mathbf{x})) \right] $$
목적함수 $J_{ISM}$은 $J_{ESM}$과 매개변수와 관계없는 상수항만큼만 차이가 난다. 즉 두 목적함수는 최적화의 관점에서 동일하다.
첫 번째 항의 $\Vert \mathbf{s}_\theta(\mathbf{x}^{(i)}) \Vert ^2$를 최소화한다는 것은 각 훈련 데이터 위치의 점수를 $0$에 가깝게 한다는 것이다. 즉 훈련 데이터가 확률분포의 미분값이 $0$인 극값에 위치하도록 한다.
두 번째 항의 $\mathrm{tr}(\nabla_{\mathbf{x}} \mathbf{s}_\theta(\mathbf{x}^{(i)}))$를 최소화한다는 것은 각 훈련 데이터에서 확률분포의 2차 미분값이 음수가 되도록 하는 것이고 첫번째 항에서 위치시킨 극값이 극솟값이 되도록 한다.
암묵적 점수 매칭은 이러한 방식으로 훈련 데이터의 점수를 알지 못해도 SBM에 점수를 학습시킬 수 있다. 하지만 암묵적 점수 매칭은 아래와 같은 두가지 문제점이 있다.
- $\mathbb{E}_{p(\mathbf{x})} [ \mathrm{tr} ( \nabla_{\mathbf{x}} \mathbf{s}_\theta(\mathbf{x}) ) ]$를 구하는 계산량은 $O(d^2)$로 매우 크다.
- 과적합이 일어나기 매우 쉽다. 목적함수 $J_{ISM}$으로 최적화를 시킬 때 로그 우도의 1차 미분이 $0$, 2차 미분이 음의 무한대가 되는 것이 최적해이다. 즉 각 훈련 데이터 위치에서의 확률이 양의 무한대가 되는 델타함수의 혼합분포가 최적 분포가 된다. 따라서 데이터의 개수가 적을 수록 과적합이 일어나기 쉽다.
디노이징 점수 매칭
디노이징 점수 매칭(Denoising Score Matching, DSM)을 활용하면 이러한 문제들을 해결할 수 있다.
데이터 $\mathbf{x}$에 잡음 $\epsilon \sim \mathcal{N}(\mathbf{0}, \sigma ^2 \mathbf{I})$을 추가한 변수 $\mathbf{\tilde{x}}$를 생각해보자. 이 잡음을 섭동이라고 부르고 $\sigma$를 잡음의 스케일이라 하자. 이 때 아래와 같은 확률분포를 얻을 수 있다.
$$ p_\sigma(\tilde{\mathbf{x}}|\mathbf{x}) = \mathcal{N}(\tilde{\mathbf{x}};\mathbf{x},\sigma^2\mathbf{I}) = \frac{1}{(2\pi)^{d/2}\sigma^d} e^{-\frac{1}{2\sigma^2}\Vert \tilde{\mathbf{x}} - \mathbf{x} \Vert ^2} $$
$$ p_\sigma(\tilde{\mathbf{x}}) = \int_{\mathbf{x}} p_\sigma (\tilde{\mathbf{x}} | \mathbf{x}) p(\mathbf{x}) d\mathbf{x} $$
디노이징 점수 매칭은 직접 점수를 목표로 학습하는 것이 아니라 섭동했을 때의 조건부 확률에 관한 점수를 목표로 학습한다.
$$ \begin{align} J_{DSM}(\theta) &= \frac{1}{2} \mathbb{E}_{p_\sigma(\tilde{\mathbf{x}} | \mathbf{x})p(\mathbf{x})} [ \Vert \nabla_\mathbf{\tilde{x}} \log p_\sigma (\tilde{\mathbf{x}} | \mathbf{x}) - \mathbf{s}_\theta(\mathbf{\tilde{x}},\sigma) \Vert ^2 ] \\&= \frac{1}{2} \mathbb{E} _{\epsilon \sim \mathcal{N}(\mathbf{0},\sigma\mathbf{I}),\mathbf{x}\sim p(\mathbf{x}) } \left[ \Vert -\frac{1}{\sigma^2}\epsilon - \mathbf{s}_\theta(\mathbf{x}+\epsilon, \sigma) \Vert ^2 \right] \end{align}$$
이와 같이 목적함수를 해석적으로 정리할 수 있기 때문에, 암묵적 점수 매칭에 비해 계산량이 훨씬 적으며 과적합이 일어날 확률도 비교적 작다. 또한 목적함수 $J_{DSM}$ 또한 $J_{ESM}$과 매개변수에 의존하지 않는 상수만큼 차이나기 때문에, 동일한 학습 목표를 가진다고 할 수 있다.
Chapter 2 확산 모델
확산 모델은 생성 모델의 한 종류이다. 앞서 chatper 1에서 다룬 방식들을 활용하여 정의된다. 점수 기반 모델(SBM)과 디노이징 확산확률 모델(Denoising Diffusion Probabilistic Model, DDPM)에 대해 다루며 이 두 모델은 신호 대 잡음비라는 동일한 툴로 설명할 수 있음을 보일 것이다.
점수 기반 모델
먼저 점수 기반 모델은 1장에서 본 바와 같이 랑주뱅 몬테카를로 방법을 이용해서 표본을 추출할 수 있다. 이에 관해서 더 자세하게 알아보자.
추정한 점수를 사용하는 랑주뱅 몬테카를로 방법의 문제점
1장에서 점수를 사용한 랑주뱅 몬테카를로 방법으로 표본을 추출하는 방법을 살펴보았는데, 이 방법으로 고차원의 다봉분포로부터 표본을 추출하는 데에는 두 가지 문제가 있다.
- SBM은 점수를 추정하는데, 데이터 분포의 밀도가 작은 영역에서는 SBM이 추정한 점수가 부정확하다. 다양체 가설이 성립하는 경우에 초기 분포에서 추출한 표본은 데이터 분포의 확률밀도가 작은 영역에 존재할 가능성이 높다. 이런 영역에서 랑주뱅 몬테카를로 방법을 이용한 갱신은 부정확해져서 정확한 표본을 얻을 수 없다.
- 다봉 분포에서, 한 모드에서 다른 모드로 이동하기가 힘들다. 모드 주변에서 점수의 방향은 항상 모드 중심을 향하기 때문에, 이를 무시하고 잡음의 힘만으로 이동해야 다른 모드로 이동할 수 있다. 이는 많은 스텝 수가 필요하다.
점수 기반 모델은 여러 개의 교란 후 분포의 점수를 조합한다
이러한 문제를 해결하기 위해 SBM에서는 여러 개의 다른 크기의 잡음으로 교란한 교란 후 분포들을 준비해서 이 교란 후 분포상에서 점수를 계산한다. 여기서는 데이터를 파괴할만큼 큰 잡음을 사용하기 때문에 작은 교란을 의미하는 섭동 대신 교란이라는 단어를 사용한다.
교란 후 데이터는 원래보다 더 넓은 영역에 퍼져 있을 것이고, 보다 완만하게 구성되어 있어, 다양체 가설을 해결할 수 있다. 교란 후 분포는 모드들이 서로 연결된 단봉분포가 되기 때문에 모드 간의 이동도 수월하다.
구체적으로, $T$개의 다른 잡음 $\sigma_{min} = \sigma_1 < \sigma_2 < \dots < \sigma_T = \sigma_{max}$를 구성한 후, 각각의 잡음으로 교란한 후의 분포를 $p_{\sigma_t}(\tilde{\mathbf{x}})$라 한다. 이 때 SBM은 교란된 데이터 $\tilde{\mathbf{x}}$와 잡음 레벨 $\sigma_t$을 입력으로 받아 교란 후 분포에서의 점수를 추정한다. 목적함수는 아래와 같다.
$$ L_{SBM}(\theta) = \sum_{i=1}^T w_i \mathbb{E}_{p_{\sigma_t} (\tilde{\mathbf{x}})} [ \Vert \nabla_\mathbf{\tilde{x}} \log p_{\sigma_t} (\tilde{\mathbf{x}}) - \mathbf{s}_\theta (\tilde{\mathbf{x}}, \sigma_t) \Vert ^2 ] $$
이렇게 학습시킨 SBM을 이용해 랑주뱅 몬테카를로 방법을 반복적으로 적용하여 표본을 추출할 수 있다. 각 잡음 단계에서 최종적으로 얻은 표본을 초깃값으로 한 후, 잡음 단계를 한 단계 낮춘 교란 후 분포상에서의 표본을 추출하면서 이 과정을 반복한다. 알고리즘은 아래와 같다.
디노이징 확산확률 모델
디노이징 확산확률 모델(DDPM)은 데이터에 잡음을 서서히 추가해가면서 완전한 잡음으로 변해가는 확산 과정과 확산 과정의 반대인 역확산 과정을 사용해서 잡음으로부터 데이터를 생성한다.
DDPM은 잡음이 추가된 데이터를 잠재변수로 보고, 잠재변수 모델로서 최대우도추정으로 학습한다. 표본추출은 역확산 과정에 따라 조상 샘플링(ancestral sampling)하여 최종 관측변수를 추출한다.
확산 과정과 역확산 과정으로 이루어진 잠재변수 모델
확산 과정에서는 데이터에 잡음을 서서히 추가한다. 이 마르코프 과정은 아래와 같이 나타난다.
$$ q(\mathbf{x}_{1:T}|\mathbf{x}_0) = \prod_{t=1}^T q(\mathbf{x}_t | \mathbf{x}_{t-1}) $$
$$ q(\mathbf{x}_t|\mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t ; \sqrt{\alpha_t}\mathbf{x}_{t-1}, \beta_t\mathbf{I}) $$
$\beta_t$는 증가하는 $0$에서 $1$ 사이의 값이며 $\alpha_t=1-\beta_t$라 한다. 즉 확산 과정이 진행될수록 데이터 성분이 서서히 작아지고 잡음이 커져 임의의 $\mathbf{x}_0$에 대해서 $q(\mathbf{x}_T | \mathbf{x}_0) \simeq \mathcal{N}(\mathbf{x}_T;\mathbf{0}, \mathbf{I})$가 성립한다. 확산 과정은 마르코프 과정이지만 확률분포 $q(\mathbf{x}_t|\mathbf{x}_0)$를 아래와 같이 해석적으로 구할 수 있다.
$$ q(\mathbf{x}_t|\mathbf{x}_0) = \mathcal{N}(\mathbf{x}_t; \sqrt{\bar{\alpha_t}}\mathbf{x}_0, \bar{\beta}_t\mathbf{I}) $$
역확산 과정에서는 완전한 잡음으로부터 시작해서 확산 과정을 반대로 진행한다. 이를 신경망을 사용해서 모델링할 수 있는데 이는 아래와 같다.
$$p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_{t}) = \mathcal{N}(\mathbf{x}_{t-1} ; \mu _\theta (\mathbf{x}_t, t), \Sigma_\theta (\mathbf{x}_t,t)) $$
DDPM의 학습
DDPM의 학습은 매개변수의 최대우도추정을 통해 진행된다. DDPM을 잠재변수 모델로 볼 수 있는데, $\mathbf{x}_0$이 관측 변수, $\mathbf{x}_{1:T}$가 잠재변수의 역할을 한다. DDPM의 목적함수는 아래와 같이 로그 우도의 ELBO로 정의된다.
$$\begin{align} -\log p_\theta(\mathbf{x}_0) & \leq \mathbb{E}_{q(\mathbf{x}_{1:T} | \mathbf{x}_0)} \left[ -\log p(\mathbf{x}_T) - \sum_{t\geq 1} \log \frac{p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t)}{q(\mathbf{x}_t | \mathbf{x}_{t-1})} \right] \\& = \mathbb{E}_ {q(\mathbf{x}_{1:T} | \mathbf{x}_0)} \left[ D_{KL}(q(\mathbf{x}_T | \mathbf{x}_0) || p(\mathbf{x}_T)) + \sum_{t>1} D_{KL} (q(\mathbf{x}_{t-1} | \mathbf{x}_t,\mathbf{x}_0) || p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t)) - \log p_\theta(\mathbf{x}_0 | \mathbf{x}_1) \right] \end{align}$$
위 식의 첫번째 항을 $L_T$, 두번째 항의 각 요소를 $L_{t-1}$, 마지막 항을 $L_0$라 하자. $L_T$는 매개변수가 없으므로 무기살 수 있고 $L_0$의 경우 이산화를 고려하여 따로 계산해줄 수 있다.
$L_{t-1}$의 경우 확률분포 $q(\mathbf{x}_{t-1} | \mathbf{x}_t,\mathbf{x}_0)$가 정규분포를 따름을 이용하여 식을 정리할 수 있다. 식을 정리하고 계수를 정리하면 아래와 같은 목적함수를 얻을 수 있다.
$L(\theta) = \sum_{t=1}^T w_t \mathbb{E}_{\mathbf{x}_0,\epsilon} \Vert \epsilon - \epsilon_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{\bar{\beta}_t}\epsilon,t) \Vert^2 \left[ \right] $
가중치 $w_t$와 상관없이 목적함수의 최적해는 일치하며 DDPM에서는 $w_t=1$로 설정한다.
학습 알고리즘은 아래와 같다.
DDPM을 사용한 데이터 생성
DDPM의 표본 추출은 조상 샘플링을 이용한다. 확률분포 $p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1} ; \mu_\theta(\mathbf{x}_t,t), \Sigma_\theta(\mathbf{x}_t,t))$에 따라 아래와 같이 표본을 추출한다. 각 스텝에서 확률분포에 따라 디노이징을 한 후 약간의 잡음을 추가한다.
SBM과 DDPM의 신호 대 잡음비를 사용한 통일적인 구조
SBM과 DDPM에서 입력에 잡음을 더하는 과정은 아래와 같다.
$$ \begin{align} (\mathrm{SBM}) \;\;\; & \mathbf{x}_t = \mathbf{x}_{t-1} + \sigma_t \mathbf{z}_t \\ (\mathrm{DDPM}) \;\;\; & \mathbf{x}_t = \sqrt{\alpha_t}\mathbf{x}_{t-1} + \sqrt{1-\alpha_t}\mathbf{z}_{t-1} \end{align} $$
두 모델은 원본 이미지에 잡음을 서서히 더해간 후 이를 복원한다는 점에서 유사한 형태를 가진다. 하지만 세부적인 수식이나 목적함수 등은 위와 같이 다른데, 이를 신호 대 잡음비를 이용하면 통일적으로 설명할 수 있다.
확산 과정에서 시간 $t$에서의 조건부 확률분포를 $q(\mathbf{x}_t | \mathbf{x}_0) = \mathcal{N}(\alpha_t\ \mathbf{x}_0 , \sigma_t^2 \mathbf{I})$라 하자. 이 때 신호 대 잡음비(signal-to-noise ratio, SNR)은 아래와 같이 정의된다.
$$ \mathrm{SNR}(t) = \frac{\alpha_t^2}{\sigma_t^2} $$
SNR은 단조감소 함수이다. 시간이 커질수록 신호에 비해 잡음의 크기가 커지는 것이다. SBM과 DDPM에서 $\alpha_t$와 $\sigma_t$는 각각 다른 값을 갖는다.
SBM은 $\alpha_t=1$이며 분산 $\sigma_t^2$의 값이 점점 커진다. 따라서 이를 분산 발산형 확산 과정(variance-exploding diffusion process, VE)라고 한다.
DDPM은 $\alpha_t = \sqrt{1-\sigma_t^2}$이다. 시간이 지날수록 잡음의 크기가 커지고 이에 맞춰서 신호가 점점 줄어드는 형태이다. 이 때 시간이 지나도 분산은 일정하게 유지되므로 분산 보존형 확산 과정(variance-preserving diffusion process, VP)라 한다.
목적함수는 신호 대 잡음비로 나타난다
앞서 SNR을 도입하면 SBM과 DDPM의 확산 과정을 통일적으로 설명할 수 있음을 보였다. SNR을 이용하면 두 모델의 목적함수도 통일적으로 설명할 수 있다.
DDPM과 마찬가지로 로그 우도의 ELBO를 통하여 목적함수를 정의한다. VP 확산 과정을 생각할 것이며, VE에 대해서도 동일하게 적용 가능하다. 식을 정리하면 아래와 같은 목적함수를 얻을 수 있다.
$$L_T(\mathbf{x}) = \frac{T}{2} \mathbb{E}_{\epsilon \sim \mathcal{N}(\mathbf{0},\mathbf{I}), i \sim U(1,T)} [ (\mathrm{SNR}(s) - \mathrm{SNR}(t)) \Vert \mathbf{x} - \hat{\mathbf{x}}_\theta(\mathbf{x}_t;t) \Vert ^2 ] $$
여기서 $s=(i-1)/T$, $t=i/T$이다. 위와 같이 목적함수의 가중치를 SNR의 차이로 간단하게 나타낼 수 있다.
연속 시간 모델
지금까지는 확산 과정 및 역확산 과정을 이산적인 마르코프 과정이라고 생각했다. 이제 확산 및 역확산 과정을 연속 시간에서 정의한다. 시간스텝 $t$는 $[0,1]$의 실수 값을 가질 수 있고 $t=0$에서 $t=1$로 확산 과정이 진행된다.
위 목적함수에서 $T\to\infty$로 하여 아래와 같은 목적함수를 얻을 수 있다.
$$\begin{align} L_\infty(\mathbf{x}) &= -\frac{1}{2} \mathbb{E}_{\epsilon \sim \mathcal{N}(\mathbf{0},\mathbf{I}), i \sim U(0,1)} [ \mathrm{SNR}^\prime(t) \Vert \mathbf{x} - \hat{\mathbf{x}}_\theta(\mathbf{x}_t;t) \Vert ^2 ] \\&= -\frac{1}{2}\mathbb{E}_{\epsilon \sim \mathcal{N}(\mathbf{0},\mathbf{I})} \int_0^1 \mathrm{SNR}^\prime (t) \Vert \mathbf{x} - \hat{\mathbf{x}}_\theta(\mathbf{x}_t;t) \Vert^2 dt \end{align}$$
잡음 스케줄과 관계없이 같은 해를 얻을 수 있다
위 목적함수는 SNR을 이용하여 정의되었지만, SNR의 구체적인 스케줄 값에 관계없이 같은 최적화 값을 갖는다. $t=\mathrm{SNR}^{-1}(v)$로 정의하고 목적함수의 적분변수를 아래와 같이 변형해준다.
$$L_\infty(\mathbf{x}) = \frac{1}{2} \mathbb{E}_{\epsilon \sim \mathcal{N}(\mathbf{0},\mathbf{I})} \int_{\mathrm{SNR}_{min}}^{\mathrm{SNR}_{max}} \Vert \mathbf{x} - \hat{\mathbf{x}}_\theta(\mathbf{x}_v;v) \Vert ^2 dv $$
즉 구체적인 SNR 스케줄에 상관없이, $\mathrm{SNR}_{min}$과 $\mathrm{SNR}_{max}$ 값만 같게 설정해주면 목적함수는 동일하다.
또한 확산 과정에서의 잠재변수는 스케일을 제외하고 일치한다. 구체적으로 잡음 스케줄 $\alpha_t^A, \sigma_t^A$와 $\alpha_t^B, \sigma_t^B$가 있을 때, $\mathbf{x}_0$로부터 생성되는 잠재변수 $\mathbf{x}_t^A$와 $\mathbf{x}_t^B$는 $\alpha_t^A / \alpha_t^B$만큼의 스케일차이만 있다.
Chapter 3 연속 시간 확산 모델
확률 미분 방정식
앞서 SBM과 DDPM을 SNR이라는 통일된 틀을 통해 설명할 수 있음을 보였고 연속 시간에서 정의되었을 때 두 목적함수 및 확률분포가 잡음 스케줄에 관계없이 동일하다는 것을 보였다. 이제 이러한 특성을 가진 연속 시간 확산 모델을 확률미분방정식(stochastic differential equation, SDE)을 통해 아래와 같이 정의할 수 있다.
$$d\mathbf{x} = f(t)\mathbf{x}dt + g(t)d\mathbf{w}$$
위 SDE는 확산 모델의 확산 과정을 SDE를 통해 나타낸 것이다. $f(t)$와 $g(t)$는 스칼라 값을 출력한다.
SBM과 DDPM의 SDE 표현
SBM과 DDPM은 SDE로 나타냈을 때 각각 다른 식을 갖는다. 먼저 SBM을 SDE로 나타내면 아래와 같다.
$$d\mathbf{x} = \sqrt{\frac{d[\sigma(t)^2]}{dt}}d\mathbf{w}$$
이는 시간이 커질수록 분산이 커지는 구조이기 때문에 분산 발산형 확률미분방정식(VP SDE)라 한다.
마찬가지로 DDPM도 아래와 같이 나타낼 수 있고, 이를 분산 보존형 확률미분방정식(VE SDE)라 한다.
$$d\mathbf{x} = -\frac{1}{2} \beta(t) \mathbf{x}dt + \sqrt{\beta(t)}d\mathbf{w}$$
SDE 표현의 역확산 과정
확산 과정의 SDE가 위와 같이 나온다는 것을 살펴 보았고, 역확산 과정의 SDE는 아래와 같이 확산 과정의 SDE의 역과정으로 나타난다.
$$d\mathbf{x} = [f(t)\mathbf{x} - g(t)^2 \nabla_\mathbf{x} \log p_\theta(\mathbf{x})]dt + g(t)d\bar{\mathbf{w}} $$
SDE 표현 확산 모델 학습
VE SDE, VP SDE의 경우 확산 과정에서 조건부 확률분포는 아래와 같다.
$$\begin{align} (\mathrm{VE\,SDE}) \;\;\; & p_{0t}(\mathbf{x}(t) | \mathbf{x}(0)) = \mathcal{N}(\mathbf{x}(t) ; \mathbf{x}(0), \vert \sigma(t)^2 - \sigma(0)^2 \vert \mathbf{I}) \\ (\mathrm{VP \, SDE}) \;\;\; & p_{0t}(\mathbf{x}(t) | \mathbf{x}(0)) = \mathcal{N}(\mathbf{x}(t) ; \mathbf{x}(0) e^{-\frac{1}{2}\gamma(t)}, \mathbf{I} - \mathbf{I} e^{-\gamma(t)}) \end{align}$$
위와 같은 확산 과정의 조건부 확률분포를 이용하여, 각 시간 스텝에서의 점수를 디노이징 점수 매칭으로 추정할 수 있다.
디노이징 점수 매칭의 목적함수는 아래와 같다.
$$ \mathbb{E}_t [\lambda(t) \mathbb{E}_{\mathbf{x}(0) \sim p_{data}(\mathbf{x})} \mathbb{E}_{\mathbf{x}(t) \sim p_{0t}(\mathbf{x}(t) | \mathbf{x}(0))} [ \mathbf{s}_\theta (\mathbf{x}(t),t) - \nabla_{\mathbf{x}(t)} \log p_{0t} (\mathbf{x}(t) | \mathbf{x}(0)) ] ] $$
이산 시간스텝에서는 SBM에서의 디노이징 점수 매칭 목적함수와 DDPM에서의 로그 우도의 ELBO를 통한 목적함수가 일치한다는 것을 확인했다. SDE에서도 이를 증명할 수 있고 특히 $\lambda(t)=g(t)^2$으로 설정하면 점수 매칭의 목적함수가 음의 로그 우도의 상한이 된다는 것을 증명할 수 있다.
SDE 표현 확산 모델 표본추출
SDE를 통해서도 표본추출을 하기 위해서는 역확산 과정의 SDE를 근사하여 풀면 된다. SDE를 푸는 가장 단순한 방법인 오일러-마루야마 방법을 소개하면, SDE를 $T$개의 짧은 시간으로 이산화하고 각 스텝에서 SDE의 식을 1차 근사하면서 진행한다. 알고리즘의 각 스텝은 아래와 같이 진행된다.
$$ \mathbf{x} = \mathbf{x} - \vert f(t_i)\mathbf{x} - g(t_i)^2 \mathbf{s}_\theta(\mathbf{x},t_i) \vert \Delta t_i + g(t_i) \sqrt{\vert \Delta t_i \vert}\mathbf{z}_i $$
매 스텝마다 디노이징을 진행하고 약간의 잡음을 추가한다는 점에서 랑주뱅 몬테카를로 방법과 유사하다고 볼 수 있다.
확률 플로 ODE
확률 플로 상미분방정식(ordinary differential equation, ODE)은 SDE와 동일한 주변분포 $\left\{ p_t(\mathbf{x})_{t \in [0,T} \right\}$를 갖는 ODE이다. ODE를 풀면 역방향 SDE와 동일한 확률분포로부터 표본을 추출할 수 있다. ODE는 SDE의 확률과정을 없애 아래와 같이 주어진다.
$$ d\mathbf{x} = [ \mathbf{f}(\mathbf{x},t) - \frac{1}{2} g(t)^2 \nabla_{\mathbf{x}} \log p_t(\mathbf{x}) ] dt$$
확률 플로 ODE는 결정론적이므로 생성된 표본 $\mathbf{x}_0$와 완전한 잡음 $\mathbf{x}_T$가 일대일 대응된다. 즉 데이터 분포 $p_0(\mathbf{x})$와 사전분포 $p_T(\mathbf{x})$가 일대일 대응이 된다고 할 수 있다.
또한 확률 플로 ODE의 의의 중 하나는 우도를 계산할 수 있다. SDE에서는 랜덤으로 추가되는 잡음으로 인해 우도를 해석적으로 계산할 수 없었지만 확률과정을 제거한 ODE에서는 우도를 계산할 수 있다.
확산 모델의 특징
1) 기존 잠재변수 모델과의 관계
확산 모델은 잠재변수 모델로도 볼 수 있다. 확산 모델은 기존의 잠재변수 모델과 비교했을 때 아래와 같은 차이점이 있다.
- 일반적으로 사후분포 $p(\mathbf{x}_{1:T} | \mathbf{x}_0)$는 우도 $p(\mathbf{x}_0 | \mathbf{x}_{1:T})$보다 복잡해서 인식 모델의 학습이 생성 모델의 학습보다 어렵다. 따라서 VAE와 같은 일반적인 잠재변수 모델을 학습시킬 때 인식 모델 쪽에 더 무거운 모델을 사용해야 하며 인식 모델과 생성 모델을 동시에 학습시키는 것도 쉽지 않다. 또한 인식 모델이 사후 분포의 모드를 제대로 학습하지 못하는 경우도 발생하는데, 이를 사후분포붕괴라고 한다. 하지만 확산 모델에서는 고정된 확산 과정을 이용하기 때문에 이러한 일들이 발생하기 어렵다.
- 확산 모델은 각 시간스텝별로 잠재변수를 나누어서 학습시킬 수 있다. 전체 계산그래프를 오차역전파법으로 학습시키려면 계산량이 매우 많이 들 수 있는데 확산 모델에서는 가중치를 공유하기 때문에 표현력에 비해 계산량이 적다.
2) 확산 모델은 학습이 안정적이다
적대적 학습을 시켜야 하는 GAN이나 인식 모델과 생성 모델을 동시에 학습시켜야 하는 VAE 등과 비교했을 때, 확산 모델은 명확한 목적함수를 통해 학습이 쉬운 편이다.
3) 복잡한 생성 문제를 간단한 부분 생성 문제로 분해한다
확산 모델은 복잡한 생성 문제를 간단한 부분 생성 문제로 분해한다. 이는 시간 스텝별로 구분된 크기의 디노이징을 모델이 학습하기 때문이다. 확산 과정에서는 노이즈가 서서히 추가되며 원본 데이터가 무너지는데, 초기에 잡음의 크기가 작을 때에는 세세한 부분인 고주파 성분이 파괴되고 후반에는 데이터 전체에 대응하는 저주파 성분을 파괴한다. 생성 과정에서는 역으로 저주파 성분을 먼저 생성하고 고주파 성분을 생성한다. 이렇게 확산 모델은 확산 및 생성 과정에서 조금씩 데이터를 파괴 혹은 복원한다.
4) 다양한 조건을 조합할 수 있다
앞서 소개했던 에너지 기반 모델의 정의를 다시 살펴보자.
$$ \begin{align} q_\theta(\mathbf{x}) &= e^{-f_\theta(\mathbf{x})} / Z(\theta) \\ \nabla_{\mathbf{x}} \log q_\theta(\mathbf{x}) &= - \nabla_{\mathbf{x}} f_\theta(\mathbf{x}) \end{align}$$
에너지 기반 모델은 구성성을 가지는데, 이에 따라 확산 모델도 구성성을 가진다. 구체적으로 에너지 $f_1(\mathbf{x})$로 정의된 확률분포 $e^{-f_1(\mathbf{x})}$를 생성하도록 학습한 점수 $\mathbf{s}_1(\mathbf{x},t)$와 마찬가지로 $f_2(\mathbf{x})$, $e^{-f_2(\mathbf{x})}$, $\mathbf{s}_2(\mathbf{x},t)$가 있다.
이 때 에너지 $f_1(\mathbf{x}) + f_2(\mathbf{x})$를 따르는 확률분포는 에너지 모델의 합 $\mathbf{s}_1(\mathbf{x},t) + \mathbf{s}_2(\mathbf{x},t)$를 이용하여 생성할 수 있다.
5) 표본을 추출할 때 스텝 수가 많아 생성 속도가 느리다
확산 모델의 가장 큰 근본적인 문제는 생성 과정에 많은 스텝이 필요하다는 것이다. 후속 연구를 통하여 스텝 수를 수십 스텝까지 줄일 수 있고 조건부 생성의 경우에는 수십 스텝에서 수 스텝으로 표본을 생성할 수 있게 되었다. 하지만 GAN이나 VAE와 비교했을 때 확산 모델의 생성 과정은 아직 몇 배에서 수십 배 느리다.
6) 확산 모델로 어떻게 일반화할 수 있는지에 대한 이해가 미해결
확산 모델은 유한 개의 훈련 데이터로부터 생성 모델을 학습시킨다. 결국 실제 분포는 훈련 데이터 지점에만 확률밀도가 무한대인 혼합 델타 분포가 최적 분포가 될 것인데, 어떻게 학습된 확산 모델이 학습한 훈련 데이터 외에도 다양한 데이터들을 생성하는지에 대해서는 연구적으로 해결되지 않았다.
Chapter 4 확산 모델의 발전
조건부 생성에서의 점수
확산 모델은 실제로 사용할 때에 조건부 생성을 하는데에 많이 사용된다. 조건부 생성이란 조건에 맞는 데이터를 생성하도록 모델을 학습시키는 과제이다. 구체적으로 입력 $\mathbf{x}$와 조건 $y$가 주어지고 조건부 확률 $p(\mathbf{x}|y)$에 따라 데이터를 생성하는 것이 조건부 생성의 목표이다.
비조건부 생성과 마찬가지로 조건부 생성에서는 조건부 점수 $\nabla_{\mathbf{x}} \log p_t(\mathbf{x} | y)$를 모델이 학습하게 된다. 조건부 점수는 베이즈 정리를 이용해서 아래와 같이 변형할 수 있다.
$$ \begin{align} \log p(\mathbf{x}|y) &= \log p(y|\mathbf{x}) + \log p(\mathbf{x}) - \log p(y) \\ \nabla_{\mathbf{x}} \log p(\mathbf{x}|y) &= \nabla_{\mathbf{x}} \log p(y|\mathbf{x}) + \nabla_{\mathbf{x}} \log p(\mathbf{x}) \end{align} $$
즉 조건부 점수는 분류 모델 $\log p(y|\mathbf{x})$의 기울기와 조건이 없을 때의 확률 $\log p(\mathbf{x})$의 기울기의 합으로 나타난다.
분류기 가이던스
분류기 가이던스는 학습된 분류 모델을 이용하여 조건부 생성을 한다. 하지만 분류기 가이던스는 아래와 같은 두 가지 문제가 있다.
- 확산 모델에서 이용하는 경우 다른 잡음 레벨의 점수 $\nabla_{\mathbf{x}} \log p(y|\mathbf{x})$가 필요하므로 다른 잡음 레벨 별로 학습을 따로 해주어야 한다.
- 입력이 조건과 관련이 없는 경우에 $p(y|\mathbf{x})$를 $\mathbf{x}$에 대해 미분했을 때 이해하기 힘든 결과가 나온다.
분류기를 사용하지 않는 가이던스
이러한 문제를 해결하기 위해 분류기를 사용하지 않는 가이던스가 제안되었다. 분류기를 사용하지 않는 가이던스를 분류 모델을 사용하지 않고 조건 점수를 직접 학습시킨다. 구체적으로 모델에 입력 $\mathbf{x}$와 조건 $y$를 주고 이 때의 조건부 점수 $\nabla_{\mathbf{x}} \log p_t(\mathbf{x} | y)$를 추정하도록 학습시킨다.
모델에 입력으로 들어가는 조건은 FiLM이나 크로스 어텐션(transformer)과 같은 방법으로 구현하는 것이 일반적이며 조건이 없는 경우도 학습에 포함시킨다.
부분공간 확산 모델
확산 모델은 잠재변수가 입력 데이터와 같은 차원 수를 갖는다. 이러한 확산 모델의 구조는 아래와 같은 세 가지의 단점을 갖는다.
- 고차원의 점수 함수를 학습해야 하므로 학습이 어렵고 실제 의미가 있는 데이터 영역은 저차원에 존재하기 때문에 데이터가 희소한 영역을 지나갈 때 문제가 생길 수 있다.
- 잠재변수를 생성하는 과정에서 차원 수가 줄지 않으므로 계산량이 크다.
- VAE나 GAN처럼 데이터를 요약한 추상화된 표현을 얻을 수 없다.
이러한 문제를 해결하기 위한 몇가지 방법이 있다. 그 중 하나로 인코더와 디코더를 따로 학습시켜서 먼저 입력 데이터를 부분공간으로 이동시킨 후 부분공간에서 확산 모델을 학습시키고 이후에 부분공간에서 생성한 데이터를 다시 입력공간으로 이동시키는 방법 등이 있다. Stable Diffusion 등은 이 방법을 성공적으로 구현했다.
여기서는 또 하나의 접근 방법인 부분공간 확산 모델에 대해서 소개한다. 부분공간 확산 모델은 Stable Diffusion처럼 인코더를 통해서 부분공간으로 이동시키는 것이 아니라 확산 과정에서 데이터를 점점 압축하여 부분공간으로 이동시킨다. 이 후 역확산 과정에서 압축된 데이터를 서서히 입력공간으로 이동시킨다.
구체적으로 $\mathbf{U}_k \in \mathbb{R}^{d \times n_k}$를 $\mathbb{R}^d$의 부분공간을 구성하는 $n_k$개의 정규 직교열을 가진 행렬이라 하자. 이 부분공간을 $k$번째 부분공간이라고 하며 이 열을 $\mathbf{U}_k$의 기저라고 한다. 이 부분공간이 서서히 작아지도록 $d=n_0 > n_1 > \dots > n_k$로 설정한다.
이 때 추세 계수는 아래와 같이 정의된다.
$\mathbf{f}(\mathbf{x},t) = f(t)\mathbf{x} + \sum_{k=1}^K \delta(t-t_k)(\mathbf{U}_k \mathbf{U}_k^T - \mathbf{I}_d)\mathbf{x}$
즉 입력 $\mathbf{x}$가 시간 $t_k$가 되는 순간에 $k$번째 부분공간으로 사영된다는 것을 나타낸다. 다양체 가설에 따라 실제로 데이터는 선형 부분공간으로 근사할 수 있다. 데이터가 존재하는 부분공간 $S$와 $S^\perp$가 있을 때, $S$ 방향으로의 확산은 천천히 진행되는 반면 $S^\perp$에서의 확산 과정은 훨씬 빠르게 붕괴된다(정규분포에 가까워진다). 즉 확산 및 역확산 과정을 이렇게 데이터가 존재하는 부분공간에서 진행하였을 때 확산 모델은 더 효율적으로 작동할 것이며 부분공간 확산 모델은 이러한 특징을 이용한 모델이라 볼 수 있다.
부분공간 확산 모델의 학습
부분공간 확산 모델의 학습에서도 점수 $\nabla_\mathbf{x} \log p_t(\mathbf{x})$를 추정하도록 학습한다. 위에서 설명한 기저 행렬 $U_k$를 이용해 SDE를 표현하면 아래와 같이 기존의 SDE와 동일한 형태로 나타낼 수 있다.
$$\begin{align} d\mathbf{x}_1 &= f(t) \mathbf{U}_1^T \mathbf{x}dt + g(t)\mathbf{U} _1^T d\mathbf{w} \\ &= f(t)\mathbf{x}_1 dt + g(t)d\mathbf{w}_1 \end{align}$$
그렇기 때문에 기존의 점수 매칭 학습과 동일하게 부분공간 확산 모델도 디노이징 점수 매칭으로 학습할 수 있다.
부분공간 확산 모델의 표본추출
부분공간 확산 모델의 역확산 과정의 각 스텝에서는 데이터가 존재하는 공간의 차원이 늘어난다. 시간스텝 $k$에서의 데이터 $\mathbf{x}_k$와 데이터가 존재하는 공간 $S_k$가 있을 때 역확산 과정에서의 다음스텝 $k-1$에서 공간 $S_{k-1}$은 $S_k$보다 차원이 크다. 즉 $\mathbf{x}_{k-1}$을 $\mathbf{x}_k$로부터 역확산 과정을 통해 얻어내기 위해서는 빈 부분에 노이즈를 추가하여 차원 수를 맞추어 주어야 한다.
구체적으로 $S_{k-1}$ 안에서 $S_{k}^\perp$인 부분에 잡음을 추가한다. 이 잡음의 분산 $\Sigma_{k-1}^\perp$은 주변 분산과 일치시킨다. 확산과정에서 $k-1 \to k$로 확산할 때에 차원 수가 $n_{k-1} \to n_k$로 줄었는데 이 때에 소실된 데이터의 분산과 추가되는 잡음의 분산이 일치되도록 한다. 구체적인 수식은 아래와 같다.
$$ \Sigma_{k|k-1}^\perp(t_k) = \frac{\alpha(t_k)^2}{n_{k-1} - n_k} \mathbb{E} \left[ \Vert \mathbf{x}_{k|k-1}^\perp (0) \Vert ^2 \right] + \sigma(t_k)^2 $$
Chapter 5 응용
의미 추출과 변환
확산 모델은 데이터 공간과 최종적으로 얻을 수 있는 잠재변수(잡음) 사이의 상호 정보량이 0이므로 잠재변수가 데이터의 의미를 가지지 않는다. 따라서 잠재변수끼리의 선형 보간 등이 잘 동작하지 않는다.
이를 해결하기 위한 방법 중 하나는 Diffusion AutoEncoders(DAE)이다. DAE는 학습된 인코더를 이용해 이미지 $\mathbf{x}_0$의 잠재변수 표현 $\mathbf{z}$를 얻은 뒤 확산 모델에 $\mathbf{x}_t$, $t$와 함께 $\mathbf{z}$도 입력으로 넣어 노이즈 $\epsilon$ 값을 추정하도록 학습시킨다. 이 때 잠재변수 $z$는 원본 이미지의 정보를 담고 있으므로 $z$를 통하여 성공적으로 선형 보간을 할 수 있다.
적대적 섭동에 대한 강건성 향상
신경망을 사용한 모델은 입력에 약간의 섭동을 추가하면 예측 결과를 임의의 결과로 바꿀 수 있는데, 이런 악의가 있는 잡음을 적대적 섭동이라고 한다. 이러한 적대적 섭동을 해결하기 위한 방법 중 하나는 적대적 정제라는 방법을 사용하는 것이다.
적대적 정제에는 학습된 확산 모델을 사용한다. 추론 시에 적대적 섭동이 묻힐 정도로 크지만 원래 입력 정보가 손실되지 않는 정도의 적당한 양의 노이즈를 추가한다. 이후 역확산 과정의 일부 스텝을 통해 데이터를 복원한 후에 모델을 통해 추론을 진행한다. 이렇게 하면 학습시킨 모델의 적대적 섭동에 대한 강건성을 향상시킬 수 있다.