Contact
제품, 인재 채용, 투자 관련 또는 기타 문의사항이 있으신 경우 편하신 방법으로 연락주시기 바랍니다
문의하기
summary
Score-based generative modeling (NCSN)은 데이터 분포를 이해하기 위한 접근법으로, Kingma가 2014년에 활용한 Variational Inference의 개념에서 출발하여 꼼꼼히 수식적으로 NCSN v2의 나머지 부분과 실험 및 저자들의 insight를 따라가 본다.
고화질 이미지들에 대해서, 저자들은 앞 글에서의 technique 1과 2를 통해 큰 \( \sigma_1 \)을 잡고 다양한 noise scale에 대해서 학습을 하는 것을 추천했다. 원래 NCSN 논문에서 저자들은 각 noise scale을 다루기 위해 scale의 separate set과 bias의 separate scale을 통해 접근하였다.
하지만 이 방식은 \( L\)에 대해 메모리가 선형적으로 증가하고 NCSN이 normalization layer이 없으면 작동하지 않는다. NCSN 본 논문에 나온 것처럼, 저자들이 실험적으로 관찰한 것은
\( \|s_{\sigma}(x,\sigma)\|_2\propto1/\sigma\)
라는 것이다. 따라서 저자들은 NCSN을 \( 1/\sigma\)로 나눠줄 것을 제안한다.
NCSN을 다음처럼 정규화하는 것을 추천한다:
\( s_{\theta}(x,\sigma)=s_{\sigma}(x)/\sigma\)
이 때 \( s_{\theta}(x)\)는 unconditioned score network이다.
NCSN을 annealed Langevin dynamics로 샘플링하기 위해서는 noise scale \(T\)마다 sampling의 수를 정해야 하고 step size parameter \( \epsilon \)을 정해야 한다. 원래 NCSN의 논문에서는 \( \epsilon=2\times10^{-5}\)이고 \( T=100\)이어야 하는데, 다른 noise scale에서는 이를 어떻게 정해야 하는지 불명확하다.
이를 이론적으로 접근하기 위해서, 다시 한 번 앞 글에서처럼 \( p_{\sigma_{i}}(x)=\mathcal{N}(x|0,\sigma_{i}^{2}I)\)로 데이터셋이 한 점만으로 구성되어 있다고 가정한다.
Langevin dynamics가 다음처럼 구성된다는 것을 다시 상기하자.
\( x_{t+1}\leftarrow x_t+\alpha\nabla_{x}\log p_{\sigma_{i}}(x_t)+\sqrt{2\alpha}z_t\)
이 때 \( x_0\sim p_{\sigma_{i}}(x)\)이고 \( z_t\sim\mathcal{N}(0,I)\)이다. 다행히도, \( x_T\)의 분포는 closed form으로 표현이 가능하다.
조건들로부터, 다음이 성립한다:
\( x_0\sim p_{\sigma_{i-1}}(x)=\mathcal{N}(0,\sigma_{i-1}^{2}I)\)
\( x_{t+1}\leftarrow x_t+\alpha\nabla_{x}\log p_{\sigma_{i}}(x_t)+\sqrt{2\alpha}z_t=x_{t}-\alpha\frac{x_{t}}{\sigma_{i}^{2}}+\sqrt{2\alpha}z_{t}\)
따라서 \( x_{t}\)의 variance는 다음을 만족한다:
\( \text{Var}[x_{t}]=\begin{cases}\sigma_{i-1}^{2}I&\text{if }t=0\\ \bigg(1-\frac{\alpha}{\sigma_{i}^{2}}\bigg)^2\text{Var}[x_{t-1}]+2\alpha I&\text{otherwise}\end{cases}\)
이제
\( v:=\frac{2\alpha}{1-(1-\frac{\alpha}{\sigma_{i}})^2}I\)
라고 하면
\( \text{Var}[x_{t}]-v= \bigg(1-\frac{\alpha}{\sigma_{i}^{2}}\bigg)^2(\text{Var}[x_{t-1}]-v)\)
가 성립한다. 따라서
\( \begin{align*}&\text{Var}[x_{t}]-v= \bigg(1-\frac{\alpha}{\sigma_{i}^{2T}}\bigg)^2(\text{Var}[x_{0}]-v)\\ \Rightarrow&\text{Var}[x_{t}]= \bigg(1-\frac{\alpha}{\sigma_{i}^{2T}}\bigg)^2(\text{Var}[x_{0}]-v)+v\\ \Rightarrow&s_{T}^{2}=\bigg(1-\frac{\varepsilon}{\sigma_{i}^{2}}\bigg)^{2T}\bigg(\sigma_{i-1}^{2}-\frac{2\epsilon}{1-(1-\frac{\alpha}{\sigma_{i}^{2}})^2}\bigg)+\frac{2\alpha}{1-(1-\frac{\alpha}{\sigma_{i}^{2}})^2}\end{align*}\)
이 된다. 이제 \( \alpha\)를 \( \epsilon\sigma_{i}^{2}/\sigma_{L}^{2}\)으로 바꾸면,
\( \gamma=\sigma_{i-1}/\sigma_{i}\)라고 하자. \( \alpha=\epsilon\cdot\frac{\sigma_{i}^{2}}{\sigma_{L}^{2}}\)일 때, \( x_T\)는 다음 분포를 따른다: \( x_T\sim\mathcal{N}(0,s_{T}^{2}I)\). 이 때
\( \frac{s_{T}^{2}}{\sigma_{i}^{2}}=\bigg(1-\frac{\varepsilon}{\sigma_{L}^{2}}\bigg)^{2T}\bigg(\gamma^{2}-\frac{2\epsilon}{\sigma_{L}^{2}-\sigma_{L}^{2}(1-\frac{\epsilon}{\sigma_{L}^{2}})^2}\bigg)+\frac{2\epsilon}{\sigma_{L}^{2}-\sigma_{L}^{2}(1-\frac{\epsilon}{\sigma_{L}^{2}})^2}\)
이다.
을 얻는다.
\( T\)를 가용한 자원 내에서 크게 잡고 \( \epsilon\)을 위 Proposition의 식이 가능한 1이 되도록 잡는다.
Training의 stability를 높이기 위해서 저자들은 실험적으로 NCSN이 artifact를 보임에 주목했고, 이를 해결하기 위해 \( m=0.999\)정도로 둔 다음 parameter update를 \(\theta'\leftarrow m\theta' + (1-m)\theta_i\)로 업데이트 하는 moving average를 둠으로 해결하였다.
위 방식처럼 parameter를 moving average를 통해 update한다.
저자들은 다양한 실험을 통해 위 테크닉들이 효과적임을 증명하였고 결과를 간략하게 살펴보면,
NCSN의 결과보다 NCSN v2의 결과가 더 다양하고 양질인 것을 알 수 있다.