로그인 바로가기 하위 메뉴 바로가기 본문 바로가기

인공지능 및 기계학습 심화

임시 이미지 KAIST 산업및시스템공학과 문일철 교수 KOOC (KAIST Open Online Course)
http://www.edwith.org/aiml-adv/forum/129464
좋아요 689 수강생 3324

안녕하세요, 조교 김동준입니다.

지난시간에 diffusion model의 가장 널리 사용되는 두가지 perturbation 방법인 VE/VP SDE를 알아보았습니다.

그런데, 이러한 특정한 형태를 가지는 VE/VP SDE가 아니라 forward-time Data SDE를 보다 일반적인 형태로 만드는 것은 쉽지 않은 일입니다. 여러가지 원인이 있을 수 있는데, 그중 가장 대표적 원인은 아래와 같습니다.

1. General한 drift와 volatility를 가정했을 때 prior distribution이 우리가 잘 아는 (scaled) Gaussian distribution이 된다는 보장이 없습니다.

2. General한 drift와 volatility를 가정했을 때 transition probability  p_{0t}(x_{t}\vert x_{0})  p0t(xtx0) 에 대한 tractable한 계산이 불가능합니다. 이는, denoising diffusion loss  L(\theta;\lambda)=\int_{0}^{T}\lambda(t)E_{x_{0},x_{t}}[\Vert s_{\theta}(x_{t},t)-\nabla_{x_{t}}\log{p_{0t}(x_{t}\vert x_{0})}\Vert_{2}^{2}] dt  L(θ;λ)=0Tλ(t)Ex0,xt[sθ(xt,t)xtlogp0t(xtx0)22]dt 를 optimize하는데 있어서 두가지 문제점을 야기합니다.

2-1) 첫번째는  x_0  x0 가 주어져 있을 때  x_t\vert x_0  xtx0 를 모르기 때문에 매 batch마다  x_t  xt 를 SDE solver를 통해서 계산해야 한다는 점입니다. 이는 매우 오래 걸리는 일로, training 속도가 매우매우 느려집니다.

2-2) 두번째는  p_{0t}(x_{t}\vert x_{0})  p0t(xtx0) 를 계산하는 것입니다. 일단은, exact한 transition probability의 계산은 Feynmann-Kac formula를 통해 구할 수는 있으나, Feynmann-Kac formula가 forward sample path인  \{x_{s}\}_{s\in (0,t)}  {xs}s(0,t) 에 대한 expectation으로 표현되기 때문에 이는 계산 불가능합니다. (혹은 좀 더 상황을 ease시켜서 ODE score를 구하는 것으로 만족하기로 한다면 Feynmann-Kac을 피해갈 수는 있는데, 이 경우에 있어서도 integration을 한번 해야 하기 때문에 매우 느린 계산이 됩니다)

위의 두가지 문제로 인해 denoising diffusion loss는 학습이 불가능해집니다.

다음 시간에는 위의 문제를 explicit nonlinear diffusion model에서 어떻게 해결하였는지 살펴보고, 그 다음시간에는 implicit nonlinear diffusion model에서는 어떻게 해결하였는지 살펴보도록 하겠습니다.

감사합니다