Score-based Generative Modeling Through Stochastic Differential Equations
Score-based Generative Modeling Through Stochastic Differential Equations
Score-based Generative Modeling Through Stochastic Differential Equations
Introduction
DDPM 과 NCSN 두 논문을 이전에 살펴봤는데, 두 방식 모두 기존 데이터에 노이즈를 점차 섞어가며, 이 과정을 그대로 역재생하듯 노이즈를 제거해가며 데이터 분포를 학습한다.
여기서 DDPM 에서는 타임스텝, NCSN 에서는 노이즈 레벨과 같이 이산적인 상태 공간이 아닌, 연속형의 상태 공간에서, DDPM 의 목적함수가 각 스텝의 노이즈에서의 Score을 계산하는 것과 비슷한데, NCSN 과 DDPM 이 두 방식을 Score-based generative models 로 일반화하여 하나의 형태로 나타낼 수 있다고 하며, 논문에서는 이러한 형태를 Stochastic Differential Equations, SDEs 라는 것으로 나타내는데, 워메… 한번 알아보자.
짧게 설명
이전 NCSN과 DDPM을 읽었다는 전제하에 짧게 설명한다… 절대 귀찮아서 또 설명하지 않는게 아니다..
Denoising Score Matching with Langevin Dynamics, SMLD
자세하게는 Generative Modeling by Estimating Gradients of the Data Distribution 를 확인하자..
우리가 전에 살펴본 Noise Conditional Score Networks, NCSN은 Denoising Score Matching with Langevin Dynamics, SMLD 프레임워크를 적용한 신경망으로, 여기선 SMLD를 기준으로 설명한다.
일단 짧게 복습하면, 이 논문에선 약간의 표기의 차이가 있지만 노이즈를 $p_{\sigma}(\tilde{x}|x) = \mathcal{N}(\tilde{x}; x, \sigma^{2}\mathbf{I})$ 로, 노이즈가 섞인 데이터의 분포를 $p_{\sigma}(\tilde{x}) = \int p_{\text{data}}(x)p_{\sigma}(\tilde{x}|x)\,dx$ 로 나타낸다.
각 노이즈 레벨 $\set{\sigma_{i}}_{i=1}^{N} \quad (\sigma_{1} < \sigma_{2} < \cdots < \sigma_{N})$ 에 대해서, 모델 $s_{\theta}$ 의 최적 파라미터 $\theta^{\star}$ 는 다음과 같다.
\[\begin{align} \ell(\theta; \sigma_{i}) &= \mathbb{E}_{p_{\text{data}}(x)}\mathbb{E}_{p_{\sigma_{i}}(\tilde{x}|x)} \left[ \| s_{\theta}(\tilde{x}, \sigma_{i}) - \nabla_{\tilde{x}} \log p_{\sigma_{i}}(\tilde{x} | x) \|_{2}^{2} \right] \\ \theta^{\star} &= \underset{\theta}{\arg\min} \sum_{i=1}^{N} \lambda(\sigma_{i}) \ell(\theta; \sigma_{i}) = \underset{\theta}{\arg\min} \sum_{i=1}^{N} \sigma^{2} \ell(\theta; \sigma_{i}) \end{align}\]일단 Denoising Score Matching 의 형태로 나타냈다…
또한 $p_{\sigma_{i}}(x)$ 에서 $M$ 단계의 샘플링 과정은 다음과 같다.
\[x_{i}^{m} = x_{i}^{m-1} + \frac{\epsilon_{i}}{2} s_{\theta^{\star}}(x_{i}^{m-1}, \sigma_{i}) + \sqrt{\epsilon_{i}} z_{i}^{m} \quad (m = 1,2,...,M)\]이때 $\epsilon_{i} > 0$ 는 학습률, $z_{i}^{m} \sim \mathcal{N}(0, \mathbf{I})$ 이다.
초기 위치 $x_{N}^{0} \sim \mathcal{N}(x | 0, \sigma_{N}^{2}\mathbf{I})$ 부터 시작하여, $x_{i+1}^{0} = x_{i}^{M}$, 즉 현재 노이즈 레벨에서 최종 위치가 다음 레벨의 초기 위치가 되는 식으로 반복된다.
자세한건 말했듯이 앞서 링크 걸은 블로그 글을 다시 보자…글이 너무 길어져서 좀 압축하려고 그런거다…
Denoising Diffusion Probabilistic Models, DDPM
자세하게는 Denoising Diffusion Probabilistic Models 를 확인하자..
DDPM 도 마찬가지로 조금 표기의 차이가 있지만, SMLD와 비슷하게 노이즈가 섞인 데이터의 분포를 $p_{\alpha_{i}}(\tilde{x}) = \int p_{\text{data}}(x)p_{\alpha_{i}}(\tilde{x}|x)\,dx$ 로 나타낸다. 여기서 DDPM 의 Markov-chain의 각 과정이 $p(x_{i}|x_{i-1}) = \mathcal{N}(x_{i}; \sqrt{1 - \beta_{i}}x_{i-1}, \beta_{i}\mathbf{I})$ 로 정의되고, $x_{0} \sim p_{\text{data}}(x)$ 에서 Closed-form으로 $x_{t} \sim p_{\alpha_{i}}(x_{i}|x_{0}) = \mathcal{N}(x_{i}; \sqrt{\alpha_{i}}x_{0}, (1-\alpha_{i})\mathbf{I})$ 으로 정의된다. 이때 $\alpha_{i} = \prod_{j=1}^{i} (1-\beta_{j})$ 이다.
이제 다음과 같이 서커스를 해보자.
\[\begin{align} p_{\alpha_{i}}(x_{i}|x_{0}) &= \mathcal{N}(x_{i}; \sqrt{\alpha_{i}}x_{0}, (1-\alpha_{i})\mathbf{I}) \\ \log p_{\alpha_{i}}(x_{i}|x_{0}) &= - \frac{(x_{i} - \sqrt{\alpha_{i}}x_{0})^{2}}{2(1-\alpha_{i})} \\ \nabla_{x_{i}} \log p_{\alpha_{i}}(x_{i}|x_{0}) &= - \frac{x_{i} - \sqrt{\alpha_{i}}x_{0}}{1-\alpha_{i}} \quad (x_{i} - \sqrt{\alpha_{i}}x_{0} = \sqrt{1-\alpha_{i}}\epsilon)\\ \therefore \nabla_{x_{i}} \log p_{\alpha_{i}}(x_{i}|x_{0})&= - \frac{\sqrt{1-\alpha_{i}}\epsilon}{1-\alpha_{i}} = - \frac{\epsilon}{\sqrt{1-\alpha_{i}}} \\ \therefore s_{\theta}(x_{i}, i) &= - \frac{\epsilon_{\theta}(x_{i}, i)}{\sqrt{1-\alpha_{i}}} \\ \end{align}\]SMLD의 목적함수와 표기를 통일하기 위해 $x_{i} \to \tilde{x}, x_{0} \to x$ 로 나타내고, DDPM의 목적함수를 가져와서 다음과 같이 서커스를 해보자.
\[\begin{align} \ell(\theta; i) &= \mathbb{E}_{p_{\text{data}}(x)}\mathbb{E}_{p_{\alpha_{i}}(x_{i}|x)}[\|\epsilon - \epsilon_{\theta}(\tilde{x}, i)\|_{2}^{2}] \quad (\tilde{x} = x_{i} = \sqrt{\alpha_{i}}x_{0} + \sqrt{1-\alpha_{i}}\epsilon)\\ (1-\alpha_{i})\ell(\theta; i) &= (1-\alpha_{i})\mathbb{E}_{p_{\text{data}}(x)}\mathbb{E}_{p_{\alpha_{i}}(x_{i}|x)}\left[\left|\left|\frac{\epsilon}{\sqrt{1-\alpha_{i}}} - \frac{\epsilon_{\theta}(\tilde{x}, i)}{\sqrt{1-\alpha_{i}}}\right|\right|_{2}^{2}\right] \\ &= (1-\alpha_{i})\mathbb{E}_{p_{\text{data}}(x)}\mathbb{E}_{p_{\alpha_{i}}(x_{i}|x)}[\| s_{\theta}(\tilde{x}, i) - \nabla_{x_{i}} \log p_{\alpha_{i}}(\tilde{x}|x)\ \|_{2}^{2}] \\ \theta^{\star} &= \underset{\theta}{\arg\min} \sum_{i=1}^{N} (1-\alpha_{i})\ell(\theta; i) \end{align}\]짜잔… 앞선 SMLD의 것과 모양이 비슷해졌다! DDPM 논문에서 왜 최종 Simplified 목적함수가 Denoising Score matching과 같다고 언급했던건지 지금 알 수 있게 된거다!
그런 말을 했었다..
초기 데이터 $x_{N} \sim \mathcal{N}(0, \mathbf{I})$ 부터 시작하여 샘플링의 각 Markov chain 과정은 다음과 같다.
\[x_{t-1} = \frac{1}{\sqrt{1-\beta_{i}}}(x_{i} + \beta_{i}s_{\theta^{\star}}(x_{i}, i)) + \sqrt{\beta_{i}}z_{i} \quad (i = M,N-1,...,1, z_{i} \sim (0, \mathbf{I}))\]SMLD, DDPM 모두 개별 목적함수들의 가중치합으로 전체 목적함수가 정의되는데, 여기서 각 가중치들은 다음을 만족한다.
- $\mathbb{E}[||\nabla_{x} \log p_{\sigma_{i}} (\tilde{x}|x)||_{2}^{2}] \propto \frac{1}{\sigma_{i}^{2}}$
- $\mathbb{E}[||\nabla_{x} \log p_{\alpha_{i}} (\tilde{x}|x)||_{2}^{2}] \propto \frac{1}{1-\alpha_{i}}$
이를 통해 노이즈 레벨 $i$ 에 상관없이 각 손실함수 $\ell(\theta; \sigma_{i}), \ell(\theta; i)$ 는 모두 동일한 비중으로 모델이 다루게 된다. 다시말해서, 특정 노이즈 레벨에만 집중하지 않는다는 것이다.
Score-based Generative Modeling With SDEs
앞서 살펴본 것들을 일반화해서, $i = 1,2,…,N$ 에서 $t \in [0,T]$ 의 연속형 노이즈 레벨로 일반화할 수 있다.
이러한 연속적인 시간(단계)의 흐름에서 데이터 $x$ 의 변화량을 나타내야하는데, 이는 확률 미분 방정식 (Stochastic Differential Equations, SDEs) 로 정의할 수 있다..
…SDEs 란 단순히 하나 이상의 확률적 샘플링이 요구되는 항을 포함하는 미분 방정식이란다… 나도 여기서 처음 본 개념인데, 개념은 간단하다…
Perturbing Data With SDEs
일단 들어가기 전에 $x(t)$ 를 $t$ 에서의 데이터, $p_{t}(x)$ 를 $x(t)$ 의 확률 밀도, $p_{st}(x(t)|x(s))$ 를 $x(s)$ 에서 $x(t)$ 로의 전이 커널로 나타낸다. 그냥 앞서 본 노이즈 섞인 데이터, 노이즈 다 똑같은데, 앞으로 연속형 $t$ 에 대해 다뤄야 하는거라 표기만 이렇게 나타낸거다.
데이터 분포의 샘플 $x(0) \sim p_{0}$ 과, 완전한 노이즈의 사전 분포의 샘플 $x(T) \sim p_{T}$ 에 대해서, 기존 Diffusion Process $\set{x(t)}_{t=0}^{T}$ 를 연속형 $t \in [0,T]$ 에서 다시 정의해야 하는데, 이를는 다음과 같이 일반적인 SDE의 형태로 나타낸다.
\[dx = f(x,t)dt + g(t)dw\]여기서 $w$ 는 Standard Wiener Process(표준 브라운 운동) 으로 $dw \sim \mathcal{N}(0, \sqrt{t}\mathbf{I})$ 이고, $f(x,t): \mathbb{R}^{d} \to \mathbb{R}^{d}$ 는 $x(t)$ 의 드리프트(Drift) 계수, $g(t): \mathbb{R} \to \mathbb{R}$ 는 확산(Diffusion) 계수이다. 여기서 확률 샘플링 과정이 포함되는 $dw \sim \mathcal{N}(0, \sqrt{t}\mathbf{I})$ 이 항으로 인해, 이식 Stochastic Differential Equation, SDE 라고 하는 것이다.
뭐 카트라이더마냥 드리프트 어쩌구 뭐 솰라솰라 브라운 박사 저쩌구 거시기 뭔 소린지 도통 모르겠는데, 일단 연속형 $t$ 에 대해서 Diffusion Process의 기본 형태를 위와 같이 정의한거고, 결정론적 $f(x,t), g(t)$ 를 어떻게 정의하는지에 따라, 우리가 앞서 살펴본 SMLD와 DDPM도 이 형태로 나타낼 수 있다.
기존 SMLD, DDPM 에서 샘플링의 Markov-chain 식은 다음과 같았다.
\[\begin{align} x_{i}^{m} &= x_{i}^{m-1} + \frac{\epsilon_{i}}{2} s_{\theta^{\star}}(x_{i}^{m-1}, \sigma_{i}) + \sqrt{\epsilon_{i}} z_{i}^{m} \\ x_{t-1} &= \frac{1}{\sqrt{1-\beta_{i}}}(x_{i} + \beta_{i}s_{\theta^{\star}}(x_{i}, i)) + \sqrt{\beta_{i}}z_{i} \end{align}\]$\text{결정론적 항} + \text{무작위 항}$ 의 형태로, 위의 Diffusion Process SDE 식이 뭔 말인지 알 것이라고 생각한다… 그러니까 $f(x,t)$ 는 특정 방향을 의미하고, $g(t)$ 는 무작위 노이즈의 형태로, 이 샘플링 과정은 특정 방향을 향해 무작위로 지그재그 해가며 이동하는 형태를 떠올릴 수 있다.
더 일반화
일단 위 식에서 $g(t): \mathbb{R} \to \mathbb{R}$ 는 스칼라를 취하는 함수로 나타냈는데, 일단 더 일반화하면 $f(x,t)$ 와 마찬가지로 $x(t)$ 와 종속인 $G(x,t): \mathbb{R}^{d} \to \mathbb{R}^{d \times d}$ 형태이다. 즉, 다음 형태가 일반적인 Diffusion Process의 SDE 식이다.
\[dx = f(x,t)dt + G(x,t)dw\]Generating Samples by Reversing The SDE
앞서 Diffusion Process를 SDE로 정의했으니, 정반대 과정인 Reverse Process $x(T) \to x(0)$ 도 연속형 $t$ 에 대해서 정의해야한다.
다행히도 Anderson 형님의 Reverse-time diffusion equation models 논문에서, Diffusion Process의 반대 과정도 Diffusion Process이며, 기존 Diffusion Process와 마찬가지로 반대로 거슬러가는 $t$ 에 대해 다음과 같이 SDE로 나타낼 수 있다는 것을 증명하셨다.
여기서 $\bar{w}$ 는 마찬가지로 Standard Wiener process($T \to 0$ 에서의 표준 브라운 운동)이고, $dt$ 는 아~주 작은 음의 시간 변화량이다.
기존 Diffusion Process에서 $f(x,t)$ 와 $g(t)$ 는 이미 정의됐고.. 결국 $\nabla_{x}\log p_{t}(x)$ 만 알고 있으면, 위 식의 형태로 Reverse Diffusion Process 를 SDE로 나타낼 수 있게 된다.
일반화 버전
위 식은 스칼라 값을 취하는 $g(t)$의 경우고, $G(x,t): \mathbb{R}^{d} \to \mathbb{R}^{d \times d}$ 의 버전에선, 다음과 같이 정의된다.
\[\begin{align} dx &= \set{f(x,t) - \nabla \cdot [G(x,t)G(x,t)^{T}] - G(x,t)G(x,t)^{T}\nabla_{x} \log p_{t}(x)}dt + G(x,t)d\bar{w} \\ &\cdots \quad G(.) = (g^{1}(.), ... , g^{d}(.))^{T} \to \nabla G(.) = (\nabla g^{1}(.), ... ,\nabla g^{d}(.))^{T} \end{align}\]Estimating Scores For The SDE
그럼 Diffusion Process, Reverse Diffusion Proecess 모두 SDE의 형태로 어떻게 나타내는지 알아보았고, 그럼 샘플링을 위해서 Reverse Diffusion Process 에 사용할 $\nabla_{x}\log p_{t}(x)$ 을 추정할 모델 $s_{\theta}(x,t)$ 을 학습해야 한다.
일단 그러기 위해서 앞서 살펴본 SMLD 와 DDPM 의 각 최적의 파라미터 $\theta^{\star}$ 식을 일반화하여 다음과 같이 나타내자.
\[\theta^{\star} = \underset{\theta}{\arg\min}\, \mathbb{E}_{t}\left[\lambda(t)\mathbb{E}_{x(0)}\mathbb{E}_{x(t)|x(0)}\left[ \|s_{\theta}(x,t) - \nabla_{x(t)} \log p_{0t}(x(t)|x(0)) \|_{2}^{2} \right]\right]\]이때 $\lambda: [0,T] \to \mathbb{R}^{+}$ 인 가중치 함수이고, $t \sim \mathcal{U}(0,T)$ 로 정의된다.
위 식에 대한 최적해 $\theta^{\star}$ 에 대해서, 충분한 데이터와 시간만 있으면, 모든 $t$ 와 $x$ 에 대해 모델 $s_{\theta^{\star}}(x,t) = \nabla_{x}\log p_{t}(x)$ 를 만족하며, SMLD와 DDPM 에서 살펴봤듯이, $\mathbb{E}[||\nabla_{x(t)} \log p_{0t}(x(t)|x(0)) ||_{2}^{2}] \propto \lambda(t)^{-1}$ 이 되도록 $\lambda(t)$ 를 정의하여 연속적인 $t$ 에 따라 일관된 비중으로 모델이 학습하도록 한다.
아무튼 위 식을 통해 모델을 학습하기 위해선, 전이 커널 $p_{0t}(x(t)|x(0))$ 의 값을 알아야 한다.
Diffusion Process 에서의 $f(x,t)$ 가 Affine 함수인 경우, 모든 전이 커널은 가우시안 분포가 된다. 즉, $f(x,t) = a(t)x + b(t)$ 뭐 이런 형태라고 한다면, 초기값에 상수들을 곱하고 더하는 일차식 연산과 가우시안 노이즈들을 계속 적분하는 연산이 되기 때문이다.
따라서 DDPM의 논문에서 봤던 것처럼, $x(t)$ 를 샘플링하는데 Closed-Form 으로 할 수 있다는 것이다.
$f(x,t)$ 가 아핀 함수가 아닌, 일반적인 경우엔 뭐.. $p_{0t}(x(t)|x(0))$ 를 Closed-form으로 계산하기 어렵다. 따라서 앞서 Denoising Score Matching 형태의 목적함수를 통해 모델을 훈련하기 좀 거시기해진다.
이런 경우에 Kolmogorov’s forward equation 이란걸 사용하거나, 논문에선 그냥 앞서 본 Reverse Diffusion Process 대로 not Closed-form으로 그냥 값을 샘플링하고, 목적함수를 $p_{0t}(x(t)|x(0))$의 계산이 필요없는, Sliced Score Matching과 같은 다른 형태로 바꿔서 학습을 진행한다고 한다.
VE, VP, sub-VP SDEs
앞선 DIffusion Process SDE가 SMLD, DDPM에서 어떻게 정의되는지 알아보자..
VE SDE
앞선 SDEs 에 기반해서, SMLD와 DDPM는 이산화된 SDE로 생각될 수 있다.
SMLD 부터 살펴보면, 총 $N$ 개의 노이즈 레벨에 대해서 각 커널 $p_{\sigma_{i}}(x | x_{0})$ 은 다음 Markov Chain 의 $x_{i}$ 의 분포와 일치한다.
\[\begin{align} x_{i} &\sim p_{\sigma_{i}}(x | x_{0}) = \mathcal{N}(x_{i}; x_{0}, \sigma_{i}^{2}\mathbf{I}) \\ x_{i} - x_{i-1} &\sim \mathcal{N}(x_{i} - x_{i-1}; x_{0} - x_{0}, (\sigma_{i}^{2} - \sigma_{i-1}^{2})\mathbf{I})\\ &= \mathcal{N}(x_{i} - x_{i-1}; 0, (\sigma_{i}^{2} - \sigma_{i-1}^{2})\mathbf{I}) \\ x_{i} - x_{i-1} &= \sqrt{\sigma_{i}^{2} - \sigma_{i-1}^{2}}z_{i-1} \\ \therefore x_{i} &= x_{i-1} + \sqrt{\sigma_{i}^{2} - \sigma_{i-1}^{2}}z_{i-1} \quad i = 1,...,N, \quad z_{i-1} \sim \mathcal{N}(0, \mathbf{I}) \end{align}\]이제 이를 우리가 앞서 살펴본 SDE의 형태로 나타내기 위해, 이산형 노이즈 레벨 $i$ 가 아닌, 연속형 레벨 $t \in [0,1]$ 로 바꿔서 나타내보자. 그럼 다음과 같다.
\[\begin{align} x(t + \nabla t) - x(t) &= \sqrt{\sigma^{2}(t + \nabla t) - \sigma^{2}(t)} z(t) \\ \frac{dx}{dt} \Delta t &= \sqrt{\frac{d[\sigma^{2}(t)]}{dt}\Delta t} \frac{z(t)}{\sqrt{\Delta t}} \\ \therefore dx &= \sqrt{\frac{d[\sigma^{2}(t)]}{dt}} dw \quad (z(t) \approx \frac{\Delta w}{\sqrt{\Delta t}},\Delta w \sim \mathcal{N}(0, \Delta t \mathbf{I})) \end{align}\]일반적인 Diffusion Process SDE 식에서 $f(x,t) = 0$, $g(t) = \sqrt{\frac{d[\sigma^{2}(t)]}{dt}}$ 로 정의하면 SMLD를 나타내는 것임을 알 수 있다.
위 식을 보면, $t \to \infty$ 일 때 $\sigma(t)$ 의 값도 덩달아 커지므로, 이를 Variance Exploding (VE) SDE 라고 한다.
VP SDE
DDMP의 각 커널 $\set{p_{\alpha_{i}}(x | x_{0})}_{i=1}^{N}$ 에 대해서도 살펴보자.
\[\begin{align} x_{i} &= \sqrt{1-\beta_{i}}x_{i-1} + \sqrt{\beta_{i}}z_{i-1} \quad i=1,...,N \end{align}\]마찬가지로 연속형 레벨 $t \in [0,1]$ 로 바꿔서 나타내면 다음과 같다.
\[\begin{align} x_{i} &= \sqrt{1-\beta_{i}}x_{i-1} + \sqrt{\beta_{i}}z_{i-1} \\ x_{i} &\approx \left(1 - \frac{\beta_{i}}{2}\right)x_{i-1} + \sqrt{\beta_{i}}z_{i-1} \quad \left(\sqrt{1 - x} \approx 1 - \frac{x}{2}\right) \\ x_{i} - x_{i-1} &\approx \frac{\beta_{i}}{2}x_{i-1} + \sqrt{\beta_{i}}z_{i-1}\\ \Delta x &\approx - \frac{\beta(t)\Delta t}{2}x(t) + \sqrt{\beta(t)\Delta t}z(t) \quad (\beta_{i} = \beta(t)\Delta t)\\ \Delta x &= - \frac{1}{2}\beta(t)x(t)\Delta t + \sqrt{\beta(t)} \sqrt{\Delta t}z(t) \quad (dw \approx \sqrt{\Delta t}z(t)) \\ \therefore dx &= - \frac{1}{2}\beta(t)xdt + \sqrt{\beta(t)} dw \end{align}\]마찬가지로 $f(x,t) = - \frac{1}{2}\beta(t)x$, $g(t) = \sqrt{\beta(t)}$ 로 정의하여 DDPM의 Diffusion Process가 정의된다.
이는 분산이 $t$ 가 증가함에 따라 폭발하지 않고 제한되는데, 때문에 이를 Variance Preserving (VP) SDE 라고 한다.
왜 분산이 폭발하지 않는지 알아보자.
VP SDE가 아핀 함수의 드리프트 계수 $f(.)$ 와 DIffusion 계수 $g(.)$ 를 가지기 때문에, 다음과 같이 분산 변화량에 대한 미분방정식 ODE를 나타낼 수 있다.
이때 $\Sigma_{\text{VP}}(t) = \text{Cov}(x(t)) \quad (t \in [0, 1])$ 으로, $\set{x(t)}_{t=0}^{1}$ 의 공분산, 즉, 흩어짐 정도를 나타낸다.. 위 식을 풀어보면, 다음과 같다. 자세한 풀이과정은 여기를 확인하자..
\[\Sigma_{\text{VP}}(t) = \mathbf{I} + \exp\left(\int_{0}^{t} - \beta(s)\,ds \right)(\Sigma_{\text{VP}}(0) - \mathbf{I})\]어….일단 하나씩 뜯어보자.
- $\mathbf{I}$: 그냥 단위행렬
- $\exp\left(\int_{0}^{t} - \beta(s)\,ds \right)$: 이거는… 보면.. 일단 $\beta(s)$ 가 노이즈의 양을 의미하는 스케줄러였는데, 중요한건 모두 양수였다는 점이다. 그러니까 즉, 이 항은 $(0,1]$ 범위의 값으로, $t$ 가 증가할 수록 값이 $0$ 으로 작아지는 형태가 될 것이다.
그러니까… 위 식을 다음과 같이 나타내자.
\[\Sigma_{\text{VP}}(t) - \mathbf{I} = \exp\left(\int_{0}^{t} - \beta(s)\,ds \right)(\Sigma_{\text{VP}}(0) - \mathbf{I})\]여기서 $0 < \exp\left(\int_{0}^{t} - \beta(s)\,ds \right) \leq 1$ 이었으니, 즉!!!! $t$ 에서의 분산이 $\mathbf{I}$ 와 멀어진 정도는 맨처음 분산이 $\mathbf{I}$ 와 멀어진 정도보다 크지 않다는 것이다.
sub-VP SDE
논문에서는 이러한 VP SDE 를 조금 변형하여, 마찬가지로 분산의 크기를 제한한 새로운 형태의 SDE로, 다음과 같이 sub-VP SDE 를 소개한다.
\[dx = - \frac{1}{2}\beta(t)xdt + \sqrt{\beta(t)(1 - \exp(-2 \int_{0}^{t} \beta(s)ds))}dw\]마찬가지로 공분산을 계산해보면 다음과 같다.
\[\Sigma_{\text{sub-VP}}(t) = \mathbf{I} + \exp\left(-2 \int_{0}^{t} \beta(s)\,ds\right)\mathbf{I} + \exp\left(-\int_{0}^{t} \beta(s)ds\right)(\Sigma_{\text{sub-VP}}(0) - 2\mathbf{I})\]아무튼 살펴보면… 같은 $\beta(s)$ 에 대해서, $\Sigma_{\text{sub-VP}}(t) \leq \Sigma_{\text{VP}}(t) \quad (t \geq 0)$ 을 만족하고, 초기 공분산의 값은 같다.
아무튼 소개한 VE, VP, sub-VP SDE 모두 드리프트 계수는 $f(x,t)$ 가 아핀 함수로 정의되는데, 따라서 모든 전이 커널 $p_{0t}(x(t)|x(0))$ 은 모두 가우시안 분포로 정의되어, Closed-forms 으로 계산할 수 있다.
\[\begin{align} dx &= a(t)xdt + g(t)dw\\ \mu(t) &= \exp\left(\int_{0}^{t} a(s)\,ds\right)x(0) \\ \sigma^{2}(t) &= \int_{0}^{t}\exp\left(2 \int_{s}^{t}a(u)\,du\right)g(s)^{2}\,ds \end{align}\]여기에 VE, VP, sub-VP 각각 대입하면, 아래와 같이 나타낼 수 있다.
\[p_{0t}(x(t)|x(0)) = \begin{cases} \mathcal{N}(x(t); x(0), [\sigma^{2}(t) - \sigma^{2}(0)]\mathbf{I}) &\quad (\text{VE}) \\ \mathcal{N}\left(x(t); x(0)\exp\left(-\frac{1}{2} \int_{0}^{t} \beta(s)\,ds\right), \left[1 - \exp\left(-\int_{0}^{t} \beta(s)ds\right)\right]\mathbf{I} \right) &\quad (\text{VP}) \\ \mathcal{N}\left(x(t); x(0)\exp\left(-\frac{1}{2} \int_{0}^{t} \beta(s)\,ds\right), \left[1-\exp\left(-\int_{0}^{t} \beta(s)ds\right)\right]^{2}\mathbf{I}\right) &\quad (\text{sub-VP}) \end{cases}\]Sampling
……이제 샘플링 알아봐야제..
General-purpose Numerical SDE Solvers
앞서서 뭐 연속형으로 뭘 나타내든 뭐든 간에 컴퓨터에서 계산하기 위해서는 일단 다시 이산형으로 쪼개야한다…
이렇게 스텝들로 쪼개서 SDE의 근사치를 구하는 걸 Numerical Solver 라고 한다.
위에서 본 DDPM 에서의 샘플링 과정 식 그거… 그거를 Ancestral Sampling 이라고 하는데, 아무튼 그거도 Numerical Solver 의 한 종류이다. 이거 말고도 뭐.. Euler-Maruyama, Stochastic Runge-Kutta 등등이 있다고 한다.
뭐가 많아도 드럽게 많다. 아무튼 뭐가 많은데.. 결국 중요한건 우리가 DDPM, score based models 들을 SDE로 나타낼 수 있었으니, 기존의 SDE Solver 들을 아무 제약 없이 사용할 수 있다는 것이다.
그래서 논문에서는 간단하게, 원래 방향의 Diffusion Process 에서 쪼갠 방식 그대로 Reverse Diffusion Process 에서도 동일하게 쪼개는 방식을 소개하는데, 이 방식을 Reverse Diffusion Samplers 라고 한다.
음… 이를 설명하자면.. 일단 먼저 Diffusion SDE가 다음과 같이 주어진다.
\[dx = f(x,t)dt + G(t)dw\]여기서 다음과 같은 형태로 이산형으로 나타낸다고 가정하자.
\[x_{i+1} = x_{i} + f_{i}(x_{i}) + G_{i}z_{i} \quad i = 0, 1, 2, ..., N-1\]그르면? 위 식에 기반하여 Reverse Diffusion SDE 에 대해서도 나타낼 수 있다. 먼저 다음과 같이 Reverse Diffusion SDE가 있을 때,
\[dx = [f(x,t) - G(t)G(t)^{T}\nabla_{x}\log p_{t}(x)]dt + G(t)d\bar{w}\]마찬가지로 비슷한 형태로 다음과 같이 이산형으로 나타낼 수 있다.
\[x_{i} = x_{i+1} - f_{i+1}(x_{i+1}) + G_{i+1}G_{i+1}^{T}s_{\theta^{\star}}(x_{i+1}, i+1) + G_{i+1}z_{i+1} \quad i = 0, 1, 2, ..., N-1\]어.. 식을 보면 일단 $- f_{i+1}(x_{i+1})$ 는 순방향에서 더해졌던 Drift 값을 다시 되돌리고, $+ G_{i+1}G_{i+1}^{T}s_{\theta^{\star}}(x_{i+1}, i+1)$ 는 학습된 모델이 추정한 데이터 확률 밀도의 기울기를 이용해서 노이즈들을 데이터 방향으로 이동하게끔한다고 볼 수 있다. 그리고 마찬가지로 $+ G_{i+1}z_{i+1}$ 항을 통해서 Reverse 과정에서도 각 궤적에 노이즈를 추가하여 무작위로 지그재그 형태로 이동하게끔 한다.
아무튼 이를 우리가 살펴본 VE, VP SDEs 에 적용하면 각각의 Reverse VP, VE SDEs 에 대해 컴퓨터로 계산할 수 있는 것이다.
Ancestral Sampling 그거… 그거도 이를 통해 표현될 수 있는데.. DDPM 샘플링 과정 그거도 결국엔 VP SDE를 푸는 여러 방법 중 하나였다는 것이다…
우리가 이 글의 앞쪽에서 본 DDPM의 markov-chain 형태의 샘플링 식 그거, 식 13 이거가, 결국에 저 위의 Reverse Diffusion SDE 를 이산형으로 나타낸 형태와 수학적으로 같다는 것이다.
테일러 근사 $\frac{1}{\sqrt{1 - \beta}} \approx 1 + \frac{1}{2}\beta$, $\sqrt{1 - \beta} \approx 1 - \frac{1}{2}\beta$ 를 사용하여 어렵지 않게 유도할 수 있으니 수식 전개 과정은 생략하겠다. …해당 논문 부록에 있으니.. 안적겠다.
Predictor-Corrector (PC) Samplers
요거는 앞서 설명한 Numerical Solvers 들을 통해 다음 위치를 계산하고, 이 계산된 위치에서, Score-based MCMC 를 통해 교정하는 과정을 반복하는 과정으로, 이를 Predictor-Corrector (PC) Sampler 라고 한다.
여기서 Predictor는 우리가 바로 위에서 살펴본 Reverse Diffusion Samplers 와 같은 Numerical SDE Solvers 들로 생각할 수 있고, 이 값을 교정하는 과정은 우리가 SMLD에서의 특정 노이즈 레벨에서의 Langevin Dynamics 과정으로 생각할 수 있다.
그래서, SMLD는 Corrector (Langevin Dynamics)만 사용한 경우이고, DDPM은 Predictor (Ancestral Sampling)만 사용한 경우의 PC Sampler 의 한 경우로 볼 수 있다.
위 사진은 VE, VP SDEs 에 PC Samplers 를 적용한 알고리즘을 나타낸다….
VE, VP SDEs 에서 정의한 $f(.)$, $g(.)$ 를 그대로 Reverse Diffusion Samplers 에 적용하여 Predictor 부분의 코드를 수행하고, 이 후 Corrector 부분의 코드에서 동일하게 Langevin Dynamics 과정을 수행하는 것을 볼 수 있다.
아무튼 이런식으로 한다는 거다.
결국 지금까지 뭐 쏼라쏼라 많이 무언가 지껄였는데, 결국에 말하고자 하는건, SMLD 나 DDPM 의 노이즈 추가 과정이 결국에 하나의 일반화된 SDE 로 나타낼 수 있으며, 이를 통해 기존에 사용하던 SDE Solver를 사용하여 Reverse Process를 수행할 수 있다는 것이다.
Probability ODE
지금까지 알아본 SDE 는… 결국 $dw$ 항의 랜덤 샘플링을 통해 이동 궤적이 음… 무작위의 지그재그? 형태에 가까웠었다. 이를 통해 뭐랄까.. 학습이 나 샘플링시에 이동 궤적이 일정하지 않고 약간 확률성이 부여되는? 어.. 결과물에도 미세한 차이를 만들어내거나, 앞서 본 것처럼 이동 궤적에 오차가 계속해서 누적되는 것을 막고, 이 궤적들이 결국 데이터의 분포를 형성하게끔 한다.
근데!!! 논문의 저자가 보니까 무작위 샘플링이 없는, 즉 $dw$ 항이 없는 Ordinary Differential Equations, ODEs 가 사실 같은 확률 분포 궤적을 그린다는 사실을 알아냈다.
일반적인 Diffusion SDE 식을 다시 상기해보자.
\[dx = f(x,t)dt + G(x,t)dw\]이제 여기서 $t$ 에 따른 확률 밀도 $p_{t}(x(t))$ 의 변화량은 포..폭커-플랑크 방정식???? 허.. 뭐 이런걸로 나타낼 수 있는데, 요 식이 무엇이냐, 일단 다음처럼 생겼다.
\[\frac{d}{dt}p(x,t) = - \frac{d}{dx}[\mu(x,t)p(x,t)] + \frac{1}{2} \frac{d^{2}}{dx^{2}} [\sigma^{2}(x,t)p(x,t)]\]여기서 $\mu(.)$ 와 $\sigma(.)$ 가 각각 SDE의 Drift 계수, Diffusion 계수를 의미한다고 한다. 아무튼 위 식은 $1$ 차원 SDE 인 $dx = \mu(x,t)dt + \sigma^{2}(x,t)dw$ 를 대상으로 나타낸 것이다.
아무튼 위에 폭커-플랑크..? 이름도 드럽게 어렵다. 아무튼 이 식에 대해 $d$ 차원으로 확장시킨 우리의 Diffusion SDE 식을 적용해보자. 그대로 대입만 하면 된다. 물론 $d$ 차원으로 확장되기 때문에, 기존 $1$ 차원에서 $\frac{d}{dx}[\mu(x,t)p(x,t)]$ 의 이 부분을, 각 차원 $x_{i}$ 에 대한 편미분값을 모두 더해주어야 한다.
\[\begin{align} \frac{d}{dt}p_{t}(x) &= - \sum_{i=1}^{d} \frac{d}{dx_{i}}[f_{i}(x,t)p_{t}(x)] + \underbrace{\frac{1}{2} \sum_{i=1}^{d}\sum_{j=1}^{d} \frac{d^{2}}{dx_{i}dx_{j}} \left[\sum_{k=1}^{d} G_{ik}(x,t)G_{jk}(x,t) p_{t}(x)\right]}_{(1)} \\ (1) &= \frac{1}{2} \sum_{i=1}^{d} \frac{d}{dx_{i}} \left[\underbrace{\sum_{j=1}^{d} \frac{d}{dx_{j}} \left[\sum_{k=1}^{d} G_{ik}(x,t)G_{jk}(x,t) p_{t}(x)\right]}_{(2)}\right] \\ (2) &= \sum_{j=1}^{d} \frac{d}{dx_{j}} \left[\sum_{k=1}^{d} G_{ik}(x,t)G_{jk}(x,t)\right]p_{t}(x) + \sum_{j=1}^{d} \sum_{k=1}^{d}G_{ik}(x,t)G_{jk}(x,t)p_{t}(x) \frac{d}{dx_{j}}\log p_{t}(x)\\ &= p_{t}(x) \nabla [G(x,t)G(x,t)^{T}] + p_{t}(x)G(x,t)G(x,t)^{T}\nabla_{x} \log p_{t}(x) \\ \frac{d}{dt}p_{t}(x) &= - \sum_{i=1}^{d} \frac{d}{dx_{i}}[f_{i}(x,t)p_{t}(x)] + \frac{1}{2} \sum_{i=1}^{d} \frac{d}{dx_{i}} \left[ p_{t}(x) \nabla [G(x,t)G(x,t)^{T}] + p_{t}(x)G(x,t)G(x,t)^{T}\nabla_{x} \log p_{t}(x)\right] \\ &= - \sum_{i=1}^{d} \frac{d}{dx_{i}}\left[f_{i}(x,t)p_{t}(x) - \frac{1}{2}\left[ \nabla \cdot [G(x,t)G(x,t)^{T}] + G(x,t)G(x,t)^{T}\nabla_{x} \log p_{t}(x)\right]p_{t}(x) \right] \\ &= - \sum_{i=1}^{d} \frac{d}{dx_{i}} \left[f_{i}(x,t) - \frac{1}{2}\nabla \cdot [G(x,t)G(x,t)^{T}] - \frac{1}{2} G(x,t)G(x,t)^{T}\nabla_{x} \log p_{t}(x)\right]p_{t}(x) \end{align}\]즉,
\[\begin{align} \frac{d}{dt}p_{t}(x) &= - \sum_{i=1}^{d} \frac{d}{dx_{i}}[\tilde{f}_{i}(x,t)p_{t}(x)] = - \nabla [\tilde{f}(x,t)p_{t}(x)]\\ \therefore \tilde{f}(x,t) &= f(x,t) - \frac{1}{2} \nabla \cdot [G(x,t)G(x,t)^{T}] - \frac{1}{2} G(x,t)G(x,t)^{T}\nabla_{x} \log p_{t}(x) \\ \therefore dx &= \tilde{f}(x,t)dt \end{align}\]논문 저자는 뭐하는 사람일까
…아무튼 식을 최종 식을 보면… 맨처음 식은.. 1차미분의 드리프트 부분과 2차미분의 Diffusion 부분으로 나뉘어져 있었다. 근데 마지막 최종 식을 보니? $\tilde{f}$ 의 1차미분으로만 나타나졌다..! 즉, 기존 Diffusion 항 부분, 확률 과정을 필요로 하는 항이 사라진 것이다. 즉, $\tilde{G}(x,t) = 0$ 인 다음 식의 Kolmogorov’s Forward Equation과 같아진 것이다..
\[dx = \tilde{f}(x,t)dt + \tilde{G}(x,t)dw = \tilde{f}(x,t)dt\]즉…! 더이상 SDE가 아닌 ODE가 된 것이다…!!!!!!
다시 말하자면, 우리가 지금껏 했던 샘플링 과정을, 지그재고 형태로 가는 SDE나, 차분하게 똑바로 가는 ODE나, 이들이 이루는 전체적인 확률 밀도는 같다라는 것이다.
그래서 정리하자면,
\[\begin{align} dx &= f(x,t)dt + g(t)dw \\ &\to \\ dx &= \underbrace{\left[f(x,t) - \frac{1}{2}g(t)^{2}s_{\theta}(x,t)\right]}_{\tilde{f}_{\theta}(x,t)}dt \end{align}\] \[\begin{align} dx &= f(x,t)dt + G(x,t)dw \\ &\to \\ dx &= \underbrace{\left[f(x,t) - \frac{1}{2} \nabla \cdot [G(x,t)G(x,t)^{T}] - \frac{1}{2} G(x,t)G(x,t)^{T}s_{\theta}(x,t)\right]}_{\tilde{f}_{\theta}(x,t)}dt \end{align}\]식을 보면 확률적 샘플링 과정이 아에 사라지고, 결정론적으로 샘플링을 할 수 있게 되는데, 아무튼 이를 Probability Flow ODE 라고 한다.
이 개념을 통해서, DDPM 에서의 ELBO를 통한 기존 우도함수의 근사치를 손실함수로 쓰는게 아닌, 정확한 손실함수를 계산할 수 있게 되는 것이다.
기존에 $dw$ 항으로 인해서 $x(0)$ 에서 $x(T)$ 로 가는 경우의 수가 그냥 겁나게 많아서, 이를 적분할 수가 없기 때문에 ELBO를 사용하여 근사할 수밖에 없었다.
하지만 이렇게 ODE 로 나타내어 이 무작위성이 사라지고, $x(0)$ 에서 $x(T)$ 로 가는 경우의 수가 한개로 줄어들어, Change of Variables 를 통해 정확한 손실함수를 계산할 수 있는 것이다.
어.. 그러니까, ODE 가 만들어내는 $x(t)$ 의 궤적에 따른 로그 확률 밀도 $\log p_{t}(x(t))$, 이거의 시간 $t$ 에 따른 변화량을 계산 해보자. 앞서서 살펴본 두 식을 마음속에 품고, 전개해보자.
\[\begin{align} \frac{d}{dt}p_{t}(x) &= - \nabla [\tilde{f}(x,t)p_{t}(x)]\\ dx &= \tilde{f}(x,t)dt \end{align}\]요거를 사용해서, 일단 $\log p_{t}(x(t))$ 의 시간 $t$ 에 따른 미분은 다음과 같다.
\[\frac{d}{dt}\log p_{t}(x(t)) = \frac{d}{d t}\log p_{t}(x) + \nabla_{x}\log p_{t}(x) \cdot \frac{d}{dt}x(t) \\\]이때, 첫번째 항을 먼저 계산해보자.
\[\begin{align} \frac{d}{dt}\log p_{t}(x) &= \frac{1}{p_{t}(x)} \cdot \frac{d}{dt}p_{t}(x) \\ &= \frac{1}{p_{t}(x)} \cdot (- \nabla [\tilde{f}(x,t)p_{t}(x)]) \\ &= - \nabla \tilde{f}(x,t) - \tilde{f}(x,t) \cdot \frac{\nabla p_{t}(x)}{p_{t}(x)} \\ &= - \nabla \tilde{f}(x,t) - \tilde{f}(x,t) \cdot \nabla_{x}\log p_{t}(x) \end{align}\]이제, 두번째 항에 $\frac{d}{dt}x(t) = \tilde{f}(x,t)$ 임을 인지하고, 각각 대입하면 다음과 같다.
\[\begin{align} \frac{d}{dt}\log p_{t}(x(t)) &= - \nabla \tilde{f}(x,t) - \tilde{f}(x,t) \cdot \nabla_{x}\log p_{t}(x) + \nabla_{x}\log p_{t}(x) \cdot \tilde{f}(x,t) \\ &= - \nabla \tilde{f}(x(t),t) \end{align}\]…이제 0부터 $T$ 까지 적분을 진행하자.
\[\begin{align} \int_{0}^{T}\frac{d}{dt}\log p_{t}(x(t)) \, dt &= - \int_{0}^{T} \nabla \tilde{f}(x(t),t) \, dt \\ \log p_{T}(x(T)) - \log p_{0}(x(0)) &= - \int_{0}^{T} \nabla \tilde{f}(x(t),t) \, dt \\ \log p_{0}(x(0)) &= \log p_{T}(x(T)) + \int_{0}^{T} \nabla \cdot \tilde{f}_{\theta}(x(t),t) \, dt \end{align}\]여기서 $x(t)$ 는 방금 우리가 실컷 본 Probability Flow ODE 을 통해 얻을 수 있다.
여기서 $\nabla \cdot \tilde{f}(x(t),t)$ 을 그대로 계산하는건 조금 부담이 크기 때문에, SKilling-Hutchinson trace estimator 라는 걸로 다음과 같이 계산한다. (이름도 드럽게 길다.)
\[\nabla \cdot \tilde{f}_{\theta}(x(t),t) = \mathbb{E}_{p(\epsilon)}[\epsilon^{T}\nabla\tilde{f}_{\theta}(x(t),t)\epsilon]\]이때 $\nabla\tilde{f}_{\theta}$ 는 $\tilde{f}_{\theta}$ 의 Jacobian 이고, $\mathbb{E}_{p(\epsilon)}[\epsilon] = 0$, $\text{Cov}_{p(\epsilon)}(\epsilon)=\mathbf{I}$ 를 만족한다.
아무튼 식을 보면 기존 $\nabla \cdot \tilde{f}(x(t),t)$ 를 그대로 계산하는게 아니라 무작위 노이즈 벡터 $\epsilon$ 을 곱한 후에 기댓값을 취하여 값을 계산한다.
\[\begin{align} \nabla \cdot \tilde{f}(x(t),t) &= \sum_{i=1}^{d} \frac{d}{dx_{i}}\tilde{f} = \text{Tr}(\nabla\tilde{f}) = \text{Tr}(J) \\ \mathbb{E}_{\epsilon}[\epsilon^{T}J\epsilon] &= \mathbb{E}_{\epsilon}[\text{Tr}(\epsilon^{T}J\epsilon)]\\ &= \mathbb{E}_{\epsilon}[\text{Tr}(J\epsilon^{T}\epsilon)]\\ &= \text{Tr}(J \cdot \mathbb{E}_{\epsilon}[\epsilon^{T}\epsilon]) \\ &= \text{Tr}(J) = \text{Tr}(\nabla\tilde{f}) \end{align}\]아무튼 이렇게 $\epsilon$ 을 곱해 기댓값을 취해도 같은 값이 나오므로, 전체 jacobian 을 계산할 필요 없이 요런 식으로 계산한다.
아니면 Sliced Score Matching 과 비슷하게, $\epsilon^{T}\nabla\tilde{f}_{\theta}(x(t),t)$ 를 Reverse-mode Automatic Differentiation 을 통해 계산하여 얻은 $\epsilon^{T}\nabla\tilde{f}_{\theta}(x(t),t)\epsilon$ 을 평균냄으로써, 전체 로그 우도함수를 정확화게 계산할 수 있다.
그러면? 샘플링 과정도 ODE 로 나타낼 수 있는데, 다시 다음 Diffusion SDE를 가정해보자…
\[\begin{align} dx &= f(x,t)dt + G(t)dw \\ &\to \\ x_{i+1} &= x_{i} + f_{i}(x_{i}) + G_{i}z_{i} \quad i = 0, 1, ..., N-1 \end{align}\]이 방식을 참고해서.. Probability Flow ODE 를 Reverse Process에 대해 이 방식대로 이산형으로 나타내면 다음과 같다. ($G(.)$가 $t$에만 의존함을 보자.)
\[\begin{align} dx &= \left[f(x,t) - \underbrace{\frac{1}{2} \nabla [G(t)G(t)^{T}]}_{= 0} - \frac{1}{2} G(t)G(t)^{T}\nabla_{x} \log p_{t}(x)\right]dt\\ &= \underbrace{\left[f(x,t) - \frac{1}{2}G(t)G(t)^{T}\nabla_{x} \log p_{t}(x)\right]}_{\tilde{f}(x,t)}dt \\ \end{align}\]아무튼 단순히 다음과 같이 이산형으로 나타낼 수 있다.
\[x_{i} = x_{i} - \tilde{f}(x_{i+1},i+1)\]위 식을 간단히 대입하면 아래와 같다.
\[x_{i} = x_{i+1} - f_{i+1}(x_{i+1}) + \frac{1}{2}G_{i+1}G_{i+1}^{T}s_{\theta^{\star}}(x_{i+1}, i+1) \quad i = 0, 1, ..., N-1\]이렇게 샘플링 과정에도 확률 과정이 사라져서… 만약 입력 데이터 $x_{0} \sim p_{\text{data}}(x)$ 를 $p_{T}(x)$ 로 인코딩하고, 다시 위와 같이 샘플링 과정을 거치면 같은 데이터 $x_{0}$ 로 복원할 수 있을 것이다..
…그래서 궤적이 지그재그 처럼 뺑 돌아가는게 아니라.. 비교적 효율적으로 가니까.. 샘플링의 속도도 더 빠를 것이다..
또한 마찬가지로 잠재공간 내에서 보간도 쉽게 할 수 있을 것이고.. 아무튼튼 그렇다.
찌라시시
따로 실험해보는건… 일단 먼 훗날로 미루겠다.
지금 글이 개념개념개념개념개념개념 0.2초 무량공처인데, 일단 계속해서 조금이라도 가독성 좋아지게끔 고쳐나가겠다. (나름대로 노력해서)
…수학 잘하고 싶다.
(2026.08.03) 다시 복습하면서 살펴보는데, 뭔가 오인한 개념들이 조금 많아서 살짝 수정했다..
아무튼 다시 정리하자면? 결국에 SMLD나 DDPM이나 별개의 학습방식이 아닌, 하나로 일반화할 수 있다는 것이다. 결국 SDE로 나타낼 수 있고, 이를 통해서 기존에 사용하던 다양한 Solver 들을 사용할 수 있으므로, 샘플링 과정에서 다양한 자유성이 보장된? 아무튼 그렇다고 한다. ..내가 이해하기로는 그렇다.




