Energy-Based Model 에서는 정규화 과정을 Normalization Costant Z(θ) 를 통해 간소화 했고, 계산이 불가능한 Z(θ)를 풀이하기 위해 MCMC 방법을 사용했다.

하지만 MCMC 는 학습 데이터 D가 존재하는 기존 Monte Carlo 방법과는 다르게 직접 Marchov Chain 으로 부터 데이터를 생성해내야 하므로, 상당히 시간이 오래 걸린다는 단점이 있다.

이에 대한 대안으로 Score-Based Model은 Z(θ)를 계산하는 과정을 스킵했다. 참고로 이러한 Score-Based Model을 개선한 모델이 Diffusion Model이다.

Score Function

이전 생성 모델 알고리즘들은 log likelihood의 gradient ∇θlog⁡pθ(x)으로 파라미터 θ를 업데이트했다면, Score-Based 모델과 Diffusion 모델은 학습 데이터 x자체의 gradient을 구하는 Stein Score Function을 바탕으로 학습을 진행한다.

$$ s_{\theta}(x) = \nabla_{x} \log p_{\theta}(x) $$

즉 Score Function이란 데이터 x의 분포를 기준으로 가능도가 높은 방향으로 gradient가 향하도록 유도하는 알고리즘이다.

이렇듯 x자체의 gradient를 구하는 Score function을 사용하면, 아래와 같이 θ에 관한 식인 Z(θ)를 없앨 수 있다.

$$ p_{\theta}(x) = \frac{1}{\int \exp(-f_{\theta}(x))dx} \exp(-f_{\theta}(x)) = \frac{1}{Z(\theta)} \exp(-f_{\theta}(x)) $$

$$ \nabla_{x} \log p_{\theta}(x) = -\nabla_{x}f_{\theta}(x) - \cancel{\nabla_{x}\log Z(\theta)} = -\nabla_{x}f_{\theta}(x) $$

Score Matching

image.png

Score Based Model은 Score function sθ(x)=∇xlog⁡pθ(x)을 데이터의 gradient ∇xlog_⁡pdata(x)에 근사하도록 학습하기 위해 KL-Divergence, JS Divergence와 같이 두 확률 분포의 gradient 간의 l2-norm의 차이를 수치화하는 Fisher Divergence을 학습 목표로 설정한다.

$$ \frac{1}{2} E_{x \sim p_{data}(x)}[|| \nabla_{x} \log p_{data} (x) - s_{\theta}(x){||}_2^2] $$