Score-Based Generative Modeling through Stochastic Differential Equations 에 대해 리뷰해보겠습니다.
이번 글에서는 논문 “Score-Based Generative Modeling through Stochastic Differential Equations“에 대해 리뷰해보겠습니다. 이 논문은 확률미분방정식(Stochastic Differential Equation 이하 SDE)를 이용해서 데이터 샘플에 perturbation 을 주는 과정을 정의하고 그 반대과정인 perturbation 을 걷어내는 과정을 학습하는 방법을 제시하였습니다. 사실 이 논문에 대해서는 많은 리뷰들이 있습니다. 찾아보니 좋은 글도 많고 영상도 많더라고요. 그래서 Score-Based Generative Modeling through Stochastic Differential Equations 에 대한 영상들을 긁어 모아봤습니다. 바로 아래에 있는 영상들인데요. Score-Based Generative Modeling through Stochastic Differential Equations에 대해 깊이 알고 싶다면 아래의 영상을 보는 것을 추천합니다.
만약에 이영상들을 볼 시간이 없다면 이 글을 읽으 시는 것을 추천합니다. 이제 시작해보겠습니다.
Score-Based Generative Modeling through Stochastic Differential Equations의 구조
이 논문의 핵심아이디어를 나타내는 그림은 아래와 같습니다.
Score-Based Generative Modeling through Stochastic Differential Equations 의 그림
확률미분 방정식 Forward SDE 을 이용해서 왼쪽의 데이터 샘플에 노이즈를 주입해서 perturbation 을 줍니다. 확률미분방정식에 대해서는 차차 설명 드릴게요. 이렇게 노이즈를 주는 확률미분방정식을 설정한다면 이 반대과정인 Reverse SDE 또한 존재합니다. 이런식으로 노이즈를 주입하는 과정의 역과정을 배움으로써 노이즈로 부터 데이터 샘플을 생성하는 방법을 제시하였습니다.
Forward SDE 와 Reverse SDE
위에서 보듯이 데이터에 perturbation 주는 과정과 noise 로부터 데이터를 생성해 가는 과정은 SDE를 통해 표현한다고 했는데요. 두개의 SDE를 사용합니다. 노이즈를 주는 Forward SDE와 노이즈를 걷어내는 Reverse SDE 요.
Forward SDE
Forward SDE의 식은 아래의 식 (1)와 같이 생겼습니다.
\begin{equation} d \mathbf{x} = \mathbf{f} ( \mathbf{x}, t) dt + g(t) d \mathbf{w}, \mathbf{x} : \text{ SDE에 따른 data 샘플의 변화를 나타내는 stochastic process} \end{equation}Forward SDE는 데이터 샘플에 perturbation 을 주는 과정을 표현한 SDE 입니다. 여기서 \mathbf{f} ( \mathbf{x}, t) 는 Drift term 이라 불리우고요. 데이터 샘플을 변형하는 규칙에 해당하는 항입니다. g(t) 는 Diffusion term 이라고 부릅니다. 이것은 데이터 샘플에 노이즈를 추가 하는데 기여하는 항입니다.
Reverse SDE
Forward SDE 의 역과정인 Reverse SDE에 대해 알아보겠습니다. Reverse SDE는 아래의 수식 (2) 처럼 생겼습니다. Reverse SDE 는 Forward SDE 의 반대과정이니까 Forward SDE 가 perturubation 주는 역할을 했던것과 반대로 perturbation 을 걷어내는 역할을 합니다.
\begin{equation} d\mathbf{x} = [ \mathbf{f} ( \mathbf{x}, t) - g(t)^2 \nabla_x \log p_t ( \mathbf{x}) ] dt + g(t) d \bar{\mathbf{w}} \end{equation}
Score function 의 중요성
데이터 샘플을 생성하는 reverse SDE (2)를 살펴보면 \nabla_x \log p_t ( \mathbf{x}) 가 있습니다. \mathbf{f} ( \mathbf{x}, t), g(t) 는 인간이 설정하기 때문에 알고 있고요. 그러면 reverse SDE 를 제대로 알기 위해서는 \nabla_x \log p_t ( \mathbf{x}) 만 있으면 되겠네요. 근데 잘 봅시다. \nabla_x \log p_t ( \mathbf{x}) 는 PDF (Probability Density Function)의 로그 미분인 score 이죠. 제가 최근에 작성했던 [논문리뷰] Generative modeling by estimating gradients of the data distribution, [논문리뷰] Denoising Diffusion Probabilistic Models, 에서도 score가 중요한 역할을 했고 score 를 추정하는 방식으로 loss를 설정하였었죠. 이제 좀 느낌이 오나요? 제가 지금 리뷰하고 있는 논문 Score Based Generative Modeling through Stochastic Differential Equations은 이전의 논문인 논문리뷰] Generative modeling by estimating gradients of the data distribution, [논문리뷰] Denoising Diffusion Probabilistic Models, 를 통합하는 일반화된 이론을 제시하는 논문입니다. 그 이전의 두 논문은 perturbation 을 discrete 하게 여러번 줬다면 SDE를 이용해서 noise 를 연속적으로 주는 것을 표현하였죠. 이 점에서는 굉장히 신기 했습니다. 서로 다른 이유에서 시작한 방법이 SDE를 통해서 통합해서 설명할 수 있다니! 재밌지 않나요.
Loss function 설정
그러면 Score 를 추정하기 위해서 loss function 을 어떻게 사용하였을 까요? loss function 은 score function 을 추정하도록 아래와 같이 설정하였습니다.
보다시피 score 를 추정하기 위한 네트워크를 학습 한다는 것을 알 수 있어요. score 를 추정한다는 점은 이 전 논문 논문리뷰] Generative modeling by estimating gradients of the data distribution, [논문리뷰] Denoising Diffusion Probabilistic Models,에서 했던 시도와 같습니다.
이 논문의 의의
SDE를 이용해서 데이터에 연속적인 perturbation 을 주는 방법을 제시하였습니다. 그리고 그 과정속에서 score 를 추정해야 된다는 것을 제시하였습니다. 이점은 이전의 논문들을 통합해서 설명할 수 있었습니다.
출처-Song, Y., Sohl-Dickstein, J., Kingma, D.P., Kumar, A., Ermon, S., and Poole, B. “Score-Based Generative Modeling through Stochastic Differential Equations.” ICLR, 2021.