논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Learning Deep Architectures for AI (5)

[cite]10.1561/2200000006[/cite]

실력이 부족하여 이 논문은 실패인 것 같습니다. 하지만 부정확하더라도 끝까지 해보도록 하겠습니다. 혹시 참고하시는 분들은 감안하여 보셔야 할 것입니다. 꼭 원문을 보고 참고만하시기 바랍니다.

5. Energy-Based Models and Boltzmann Machines

Deep Belief Networks (DNBs)은 에너기 기반 모델(energy-based model)인 Restricted Boltzmann Machines (RMBs)을 기반으로 만들어져있습니다. 여기에 주로 사용되는 수식들과 Contrastive Divergence (CD)에 대해서 이야기해보겠습니다.

5.1 Energy-Based Models and Products of Experts

에너지 기반의 모델은 우리가 관심있어 하는 변수이 갖는 값들의 조합에 따라 스칼라 값을 갖습니다. 학습 과정은 에너지 함수를 수정해 가면서 낮은 에너지를 갖도록 하는 등의 모델이 어떠한 특성을 갖도록 하는 과정으로 생각할 수 있습니다. 에너지 기반의 확률 모델로 에너지 함수를 이용한 확률 분포를 정의할 수 있습니다.

$$P(x) = \frac{e^{-\text{Energy}(x)}}{Z}$$

이 식은 앞에서 보았던 $ \eta(\theta), \pi(x) $ 를 갖는 $ \text{Energy}(x) $을 이용하여 표현한, 지수족(exponential family) 확률 분포, 즉 지수 함수 기반의 확률 분포 모델을 일반화합니다. 앞으로도 살펴보겠지만 RBM에서 어느 한 층이 주어졌을 때의 다른 층의 조건부 분포(conditional distribution)는 어떠한 지수족 분포에서라도 취할 수 있습니다. 이론적으로는 어떠한 확률 분포라도 에너지 기반의 모델에서 사용할 수 있지만, 지수족 확률 분포를 사용하면 학습 과정에서 얻는 이득이 있습니다.

정규화 팩터(normalizing factor)인 Z는 파티션 함수(partition function)이라고 부릅니다.

$$Z = \sum_x e^{-\text{Energy}(x)}$$

이는 입력 공간을 모두 더하거나, x가 연속인 경우에는 적분으로 계산됩니다. 하지만 어떤 에너지 기반 모델들은 이 Z를 없는 것으로 사용하기도 합니다.

전문가(expert)들의 곱으로 나타내어지는 수식에서는 에너지 함수가 각 전문가 $f_i$의 합으로 나타내어집니다.

$$\text{Energy}(x) = \sum_i f_i(x)$$

따라서,

$$P(x) \propto \prod_i P_i(x) \propto \prod_i e^{-f_i (x)}$$

으로, 각 전문가의 $P_i(x)$는 x가 주어졌을 경우, 적당하지 않은 x의 조합을 찾아내는 검출기로 사용될 수 있습니다. 이는 mixture of experts로 가중치 합으로 표현될 때 몇가지 장점을 가집니다. 그 중 하나는 $f_i(x)$가 distributed representation을 갖는다는 것입니다. 하나의 전문가가 한 영역을 둘로 나누어 판단하는 대신, 여러 전문가에 의해 나눌 수 있는 가능한 모든 조합에 의해 공간을 나누게 됩니다.

5.1.1 Introducing Hidden Variables

대부분의 경우, 변수 x가 가진 요소 $x_i$들의 값을 모두 관찰하기가 쉽지 않습니다. 혹은 관찰이 불가능할 때도 있습니다. 따라서 다루고자 하는 변수를 관찰 가능한 부분 x와 숨겨진 부분 h로 나누어 표시하기로 합시다.

$$P(x, h) = \frac{e^{-\text{energy}(x, h)}}{Z}$$

우리가 관찰할 수 있는 것은 x이기 때문에 우리가 모르는 h에 대해서는 marginal을 사용할 수밖에 없습니다.

$$P(x, h) = \sum_h \frac{e^{-\text{energy}(x, h)}}{Z}$$

여기서 자유 에너지(free energy)라는 개념을 도입하여 봅시다.

$$\text{FreeEnergy}(x) = - \log \sum_h e^{-\text{Energy}(x, h)}$$

$$Z = \sum_x e^{-\text{FreeEnergy}(x)}$$

$$P(x) = \frac{e^{-\text{FreeEnergy}(x)}}{Z}$$

식에서와 같이 자유 에너지는 로그 도메인에서 에너지의 marginalization 입니다. 이제 모델의 파라미터를 $\theta$라고 나타내면, 확률 분포의 log-likelihood 그래디언트는 다음과 같이 계산할 수 있습니다.

$$\frac{\partial \log P(x)} {\partial \theta} = \frac{\partial \text{FreeEnergy}(x)}{\partial \theta} + \frac{1}{Z} \sum_{\tilde{x}} e ^ {-\text{FreeEnergy}(\tilde{x})} \frac{\partial \text{FreeEnergy}(\tilde{x})}{\partial \theta} \\
= - \frac{\partial \text{FreeEnergy}(x)}{\partial \theta} + \sum_{\tilde{x}} P(\tilde{x}) \frac{\partial \text{FreeEnergy}(\tilde{x})}{\partial \theta}$$

따라서 모든 트레이닝 셋에 대한 평균 log-likelihoood의 그래디언트는 다음과 같이 나타낼 수 있습니다.

$$E_{\hat{P}} \big[ \frac{\partial \log P(x)}{\partial \theta} \big] = -E_{\hat{P}} \big[ \frac{\partial \text{FreeEnergy}(x)}{\partial \theta} \big] +E_{P} \big[ \frac{\partial \text{FreeEnergy}(x)}{\partial \theta} \big]$$

식에서 보듯 트레이닝 셋에 의한 경험적 분포(empirical distribution) $ \tilde{P} $의 기대값(expectation)과 현재 모델의 분포 $P$의 기대값(expectation)과의 차이로 표현됩니다. 따라서 우리가 P로부터 샘플을 얻어 자유 에너지를 계산할 수만 있다면, Monte-Carlo 방법을 이 식에 적용하여 log-likelihood 그래디언트를 추정할 수 있습니다.

만약 에너지를 아래와 같이 각 은닉 유닛에 대하여 개별적으로 계산한 뒤 그것의 합으로 표현할 수 있다면, 자유 에너지와 likelihood의 분자항은 계산이 가능하게 됩니다.

$$\text{Energy}(x, h) = -\beta (x) + \sum_i \gamma_i (x, h_i)$$

$$P(x) = \frac{1}{Z} e^{-\text{FreeEnergy}(x)} = \frac{1}{Z} \sum_h e^{- \text{Energy}(x, h)} \\
= \frac{e^{\beta (x)}}{Z} \sum_{h_1} e^{-\gamma_1 (x, h_1)} \dots, \sum_k e^{-\gamma_k (x, h_k)} \\
= \frac{e^{\beta (x)}}{Z} \prod_i \sum_{h_i} e^{-\gamma_i (x, h_i)}$$

$ \sum_{h_i} $는 각 은닉 유닛 $h_i$이 가질 수 있는 값의 합으로, 전체 은닉 유닛들에 대한 $\sum_h$보다 계산이 쉬운 것은 명백할 것입니다. 위의 에너지 식을 사용할 경우 자유 에너지는 아래와 같습니다.

$$\text{FreeEnergy}(x) = - \log P(x) - \log Z = -\beta (x) - \sum_i \log \sum_{h_i} e^{-\gamma_i (x, h_i)}$$

5.1.2 Conditional Energy-Based Models

우리가 하고자 하는 궁극적인 목적은, 어떠한 x가 주어졌을 때 확률 등을 토대로 하여 변수 y에 대하여 어떤 결정을 내리는 것이지만, 일반적으로 파티션 함수를 계산하는 것이 어렵습니다. 따라서 모든 (x, y) 쌍을 고려하는 것 대신 x가 주어졌을 때의 y만을 고려하는 방법을 사용합니다. 가장 일반적인 예로 y가 한정된 몇 개의 값들 중 하나를 가질 때를 생각해볼 수 있습니다.

$$P(y|x) = \frac{e^{-\text{Energy}(x, y)}}{\sum_y e^{-\text{Energy}(x, y)}}$$

이러한 경우에는, 에너지 함수의 파라미터들에 대한 조건부 log-likelihood 그래디언트를 쉽게 계산할 수 있는 장점이 있습니다. 이 식은 Discriminative RBM에 사용되었습니다. 흥미로운 사실 한가지는 에너지 기반의 모델이 꼭 log-likelihood 를 사용하지 않더라도, 에너지가 올바른 방향으로 갈 때 그래디언트가 줄어드는 특징을 갖는 다른 기준이 있다면 그것을 사용하여도 최적화가 가능하다는 것입니다. 그러한 에너지 함수는 확률 모델을 가질 필요는 없지만, x가 주어졌을 때 y를 선택하는 어떤 함수로 사용될 수 있습니다.

5.2 Boltzmann Machines

볼츠만 머신(boltzmann machine)은 은닉 변수를 갖는 에너지 기반 모델의 한 종류입니다. 나아가 RBMs는 볼츠만 머신의 특별한 형태로, $P(h|x)$$P(x|h)$가 쉽게 다룰 수 있도록 서로 분리(factorize)되어 있습니다. 볼츠만 머신의 에너지 함수는 2차 다항식으로 표현됩니다.

$$\text{Energy}(x, h) = -b'x -c'h - h'Wx - x'Ux - h'Vh$$

이 식에 쓰인 파라미터는 크게 2가지로 나눌 수 있는데, 벡터 x, h의 각 요소들의 오프셋 파라미터 $b_i, c_i$와, 각 요소들끼리의 가중치 $W_{ij}, U_{ij}, V_{ij}$로 나눌 수 있습니다. 따라서 가중치 행렬 U, V는 대칭이고, 일반적으로 대각 요소들은 0의 값을 갖는 경우가 많습니다.

위의 식은 은닉 변수 h에 관하여 2차식을 이루는 관계가 되어있기 때문에 5.1.1에서 언급한 것처럼 각각의 h에 대해 분리하는 방법은 사용하기가 힘이 듭니다. 따라서 MCMC(Monte Carlo Markov Chain) 샘플링 방법을 이용하여 그래디언트의 stochastic estimator를 얻는 방법을 사용합니다. 이 방법을 이용하여 log-likelihood의 그래디언트는 다음과 같이 계산됩니다.

$$\frac{\partial \log P(x)}{\partial \theta} =
\frac{\partial \log \sum_h e^{-\text{Energy}(x, h)}}{\partial \theta} -
\frac{\partial \log \sum_{\tilde{x}, h} e^{-\text{Energy}(\tilde{x}, h)}}{\partial \theta} \\
= - \sum_h P(h|x) \frac{\text{Energy(x, h)}}{\partial \theta} + \sum_{\tilde{x}, h} P(\tilde{x}, h) \frac{\text{Energy}(\tilde{x}, h)}{\partial \theta}$$

여기서 $\partial \text{Energy}(x, h) / \partial \theta $는 계산하기가 쉽습니다. 따라서 우리가 $P(h|x)$$P(x,h)$에서 샘플링하는 방법을 알고 있기만 한다면 log-likelihood 그래디언트의 unbiased stochastic estimator를 얻을 수 있습니다. 이와 관련하여 몇몇 연구에서는 다음과 같은 설명법을 사용하고 있습니다. Positive phase에서 x를 관측된 벡터로 고정하고 x가 주어진 상태에서 h를 샘플링하며, negative phase에서는 모델 자체에서 x와 h를 모두 샘플링합니다. 일반적으로 샘플링 또한 근사적인 샘플링만 가능하기 때문에 MCMC를 위해서 반복적으로 방법을 적용합니다. MCMC는 Gibbs 샘플링을 기반으로 하고 있습니다. N개의 랜덤 변수 $ S = (S_1, \dots, S_N) $의 분포에서의 Gibbs 샘플링은, 다음의 보조 샘플링 과정을 N번 하는 것으로 이루어집니다.

$$S_i \sim P(S_i | S_{-i} = s_{-i})$$

보조 샘플링은 현재 샘플링하는 변수 한개를 제외하고는 나머지는 고정으로 두고 샘플링이 이루어집니다. N 번의 샘플링이 얻어지면 한 단계가 끝난 것입니다. 이 단계를 무한으로 반복하면 샘플들은 원래 분포 $P(S)$에 수렴하게 됩니다. 여기에 붙는 조건은 finite-state Markov Chain이 aperiodic이고 irreducible이어야만 합니다.

이제 Gibbs 샘플링을 볼츠만 머신에 적용하는 방법을 알아봅시다. 볼츠만 머신에서 각 요소를 $ s = (x, h)$ 라고 표현해봅시다. $s_{-i}$는 모든 요소중 i개 요소를 제외한 나머지 것들의 값을 나타냅니다. 볼츠만 머신의 에너지 함수는 모든 파라미터들을 벡터 d와 대칭 행렬 A에 넣은 것으로 바꾸어 표현할 수 있습니다.

$$\text{Energy}(s) = -d's - s'As$$

이제 앞의 것과 마찬가지로 i번째 요소를 제외한 벡터, 행렬들을 $d_{-i}, A_{-i}$라 하고 $ A_{-i}$의 한 행(또는 열)을 $a_{-i}$라고 합시다. 이 표현들을 사용하여 $P(s_i | s_{-i})$를 다시 표현하면 계산이 한결 쉬워집니다.

앞의 식에서 positive, negative phase에 대하여 2개의 MCMC과정이 필요하므로 그래디언트를 계산에는 많은 비용이 듭니다. 이것은 1980년대 볼츠만 머신이 back-propagation 방법으로 대체된 이유이기도 합니다. 하지만 최근, 짧은 체인을 이용한 방법이 나오기 시작했고 이것이 Contrastive Divergence의 기초가 되었습니다. 또한 negative phase에서는 새로운 샘플 x에 대한 별다른 제한이 없는데, 이러한 부분은 persistent MCMC estimetor에서 사용되었습니다.

5.3 Restricted Boltzmann Machines

제한된 볼츠만 머신(Restricted Boltzmann Machine)은 Deep Belief Network (DBN)을 구성하는 블록입니다. 이는 DBN의 각 층들의 파라미터들을 공유하며, RBM을 훈련시킴으로써 효과적으로 DBN을 학습할 수 있었습니다. RBM에서는 h의 각 요소들은 x가 주어졌을 경우 다른 h요소들로부터 독립이고, x 또한 마찬가지로 h가 주어졌을 때 다른 x 요소들로부터 독립입니다. 또한 U와 V 행렬은 0입니다. 즉, 은닉 요소와 관측 요소만이 서로 상호작용을 하며, 같은 층에서는 상호작용이 없는 것입니다. 그 결과 에너지 함수는 쌍일차형식(bilinear form)이 됩니다.

$$\text{Energy}(x,h) = -b'x - c'h - h'Wx$$

이 식에서는 5.1.1에서 제시했던 분해법을 적용할 수 있게 됩니다.

$$\beta(x) = b'x \\
\gamma(x, h_i) = -h_i (c_i + W_i x)$$

여기서 $ W_i$는 행렬 W의 i번째 행입니다.

이제 입력에 대한 자유 에너지는 다음과 같이 표현할 수 있습니다.

$$\text{FreeEnergy}(x) = -b'x - \sum_i \log \sum_{h_i} e^{h_i (c_i + W_i x)}$$

이제 앞에서 5.1.2에서 언급한 방법을 사용하여 조건부 확률 $P(h|x)$를 계산할 수 있게 됩니다.

$$P(h|x) = \frac{\exp(b'x + c'h + h'Wx)}{\sum_{\tilde{h}} \exp(b'x + c'h + h'Wx)} \\
= \prod_i \frac{\exp(c_i h_i + h_i W_i x)}{\sum_{\tilde{h}_i}\exp(c_i h_i + h_i W_i x)} \\
= \prod_i P(h_i | x)$$

보통 $h_i$가 가질 수 있는 값은 0 아니면 1으로 제한하기 때문에 결국 한 은닉 변수가 1의 값을 가질 확률은 다음과 같이 됩니다.

$$P(h_i = 1| x) = \frac{e^{c_i + W_i x}}{1 + e^{e_i + W_i x}} = \text{sigm}(c_i + W_i x)$$

또한, x와 h는 서로 대칭적인 형태를 띄고 있으므로 $P(x|h)$도 비슷한 방법으로 계산할 수 있습니다.

$$P(x|h) = \prod_i P(x_i | h)$$

앞에서와 마찬가지로 바이너리 값만 가진다고 한다면, $P(x_j = 1 | h) = \text{sigm}(b_j + W'_j h ) $ 이 됩니다.

$W'_j $는 행렬 W의 j번째 열입니다.

만약 이미지에 대해서 계산을 하고자 하였을 때에는 그 값을 바이너리 입력에 대한 binomial 요소로써 사용하거나 가우시안 요소로 사용하는 방법 등 여러 분포 요소에 적용하는 방법들이 제안되어있습니다.

RMBs는 충분한 은닉 요소들이 사용될 경우 어떠한 이산적(discrete) 분포라도 표현할 수 있을 뿐만 아니라, 은닉 요소를 추가할 수록 log-likelihood를 향상시킴으로써 완벽하게 훈련 분포를 모델링할 수 있습니다. 또한 RBM은 앞에서 살펴본 것처럼 각 은닉 요소가 입력 공간을 둘로 나누는 멀티 클러스터링으로 볼 수도 있습니다. 예를 들면, 세개의 은닉 유닛을 가지는 RBM일 경우, 총 8개의 부분 영역으로 나눠지게 되며 각 부분 영역들은 은닉 요소들이 갖는 값의 조합에 대응하게 됩니다. 즉 엔코딩으로 볼 수가 있습니다. 따라서 입력 x에 대응하는 부분 영역은 그 영역에 해당하는 h값의 조합일 때, $P(h|x)$가 최대가 됩니다.

RBM이 은닉 층의 값의 가능한 모든 조합에 대하여 더하는 과정은 mixture의 한 꼴로 볼 수도 있습니다.

$$P(x) \ sum_h P(x|h)P(h)$$

$ P(x|h)$는 h의 어떠한 한 조합에 따른 모델로 생각할 수 있습니다. 만약 이 $P(x|h)$를 가우시안으로 생각한다면, 은닉 요소의 수 n에 따라 $2^n$개의 요소를 갖는 가우시안 mixture로 생각할 수 있습니다. 이러한 경우 가우시안의 중심은 $ b+ W'h$라고 생각할 수 있습니다.

5.3.1 Gibbs Sampling in RMBs

RBM에서의 샘플링은 몇가지 이유에서 유용하게 사용됩니다. 먼저 학습 알고리즘 사용시, log-likelihood의 그래디언트 estimator를 얻는데 사용됩니다. 또한 데이터 분포가 제대로 반영되었는지 확인하기 위해 모델로부터 샘플을 생성하는데에도 사용됩니다.

볼츠만 머신에서의 Gibbs 샘플링은 요소들간 서로 연결된 Gibbs 체인이 많아 수행 속도가 느렸지만, RBM에서 요소들간 서로 분리가 가능해졌기에 얻은 이득들이 있습니다. 첫번째는 자유에너지가 anallytically하게 계산이 가능하기 때문에 positive phase에서 샘플링을 할 필요가 없어졌으며, 두번째로 (x, h)는 단 두 단계의 Gibbs 체인만으로의 샘플링이 가능해졌습니다. 즉 x가 주어졌을 때 h를 샘플링 하고, 다음 그 h를 고정하고 새로운 x를 샘플링합니다.

일반적인 products of the experts 모델에서는 Gibbs 샘플링의 대안으로 hybrid Monte-Carlo 방법이 사용됩니다. 이것은 MCMC 방법으로, 마르코프 체인의 각 단계마다 자유 에너지의 그래디언트 계산이 이루어지는 방법입니다. 따라서 이 경우 $\log \sum_{h_i} e^{(e_i + W_i x ) h_i }$는 i번째 전문가(expert)에 해당하는 수식이라 이야기 할 수 있습니다. 다시 말하면 은닉 요소마다 전문가가 하나씩 있는 꼴이라 말할 수 있습니다. 이러한 환경에서는 효과적인 Gibbs 샘플링이 가능하게 됩니다. 트레이닝 데이터로부터 시작하여 k 번의 Gibbs 샘플링은 다음과 같이 이루어집니다.

$$x_1 \sim \hat{P}(x) \\
h_1 \sim P(h|x_1) \\
x_2 \sim P(x|h_1) \\
h_2 \sim P(h|x_2) \\
\vdots \\
x_{k+1} \sim P(x|h_k)$$

트레이닝 데이터로부터 체인을 시작하는 것 또한 괜찮은 방법으로 보입니다. 트레이닝 데이터를 이용하여 모델을 향상시키게 되면 모델 분포 $P$와 트레이닝 분포 $\hat{P}$는 점점 비슷해지는 방향으로 갈 것이기 때문입니다. 만약 체인을 모델 분포 $ P $ 자신으로부터 시작햇다면 단 한번의 샘플링 단계만 수행하여도 수렴해버릴 것입니다. 따라서 $\hat{P}$로부터 시작하는 것은 적은 샘플링 단계로도 수렴을 꾀하도록 할 때 좋은 방법입니다.

5.4 Contrastive Divergence

Contrastive Divergence는 log-likelihood 그래디언트를 추정하는 방법으로, RBMs를 훈련시키는데 좋은 방법으로 알려져 있습니다. 가상 코드는 다음과 같습니다.

$ \text{RBMupdate}(x_1, \epsilon, W, b, c)$
이것은 binomial 유닛을 위한 RBM update 방법으로 다른 타입의 유닛에 대해서도 쉽게 적용될 수 있습니다.
$x_1$은 RBM을 위한 트레이닝 분포로부터 샘플링한 것입니다.
$\epsilon$은 학습율로 Contrastive Divergence에서의 stochastic gradient descent를 얼마나 적용할 것인지를 위한 것입니다.
$W $는 RBM 가중치 행렬입니다. 그 크기는 (은닛 유닛의 수, 입력의 수) 입니다.
$b$는 RBM의 입력 유닛에 대한 오프셋 벡터입니다.
$c$는 RBM의 은닛 유닛에 대한 오프셋 벡터입니다.
$Q(h_{2 \cdot}=1|x_2)$$Q(h_{2 i}=1|x_2)$를 요소로 갖는 벡터입니다.

for all 은닉 요소 i do

  • $Q(h_{1i}=1|x_1)$를 계산한다. ($\text{sigm}(c_i + \sum_j W_{ij}x_{1j})$를 통해)
  • $Q(h_{1i}=1|x_1)$로부터 $h_{1i} \in \{0, 1\}$를 샘플링한다.

end for

for all 입력 요소 j do

  • $P(x_{2j}=1|h_1)$를 계산한다. ($\text{sigm}(c_j + \sum_i W_{ij}h_{1i})$를 통해)
  • $P(x_{2j}=1|h_1)$로부터 $x_{2j} \in \{0, 1 \} $를 샘플링한다.

end for

for all 은닉 요소 i do

  • $Q(h_{2i}=1|x_2)$를 계산한다. ($\text{sigm}(c_i + \sum_j W_{ij}x_{2j})$를 통해)

end for

$W \leftarrow W + \epsilon(h_1 x_1' - Q(h_{2 \cdot}=1|x_2)x_2') $
$b \leftarrow b + \epsilon(x_1 - x_2) $
$c \leftarrow c+ \epsilon(h_1 - Q(h_{2 \cdot}=1|x_2)) $


5.4.1 Justifying Contrastive Divergence

CD에서는 몇가지 추정값을 사용하여 기존의 방법을 좀 더 단순화하게 계산하는 방법을 사용합니다.

첫번째 추정은 입력할 모든 데이터의 평균을 하나의 샘플로 교체하는 작업입니다. 우리는 미니 배치(mini-batch) 방식을 이용하여 파라미터를 자주 업데이트할 것이기 때문에, 이미 어느정도 평균을 하고 있는 상태입니다. 그리고 전체를 모두 더하는 방법을 사용하지 않고, 적은 양의 MCMC 샘플링으로 발생되는 추가적인 분산(variance)의 영향은 그래디언트가 계속적으로 업데이트되는 과정에서 부분적으로 상충이 될 것입니다.

여러 단계의 MCMC 체인을 실행하는 것은 비용이 매우 비쌉니다. k-단계 Contrastive Divergence (CD-k)는 그보다 간단합니다. 여기서 두번째 추정을 합니다. 그것은 관측된 샘플 $x_1 = x $으로부터 시작하여 MCMC의 k개의 단계만을 진행하여 그래디언트에 약간의 편향(bias)을 허용하는 것입니다. 따라서 샘플 x로부터 CD-k의 업데이트 식은 다음과 같습니다. (이것이 log-likelihood 그래디언트는 아닙니다.)

$$\Delta \theta \propto \frac{\partial \text{FreeEnergy}(x)}{\partial \theta} - \frac{\partial \text{FreeEnergy}(\tilde{x})}{\partial \theta}$$

$\tilde{x}= x_{k+1} $으로 k번 샘플링 단계를 진행한 후, 마르코프 체인의 마지막 샘플을 의미합니다. 만약 k를 무한으로 갈 수록 편향은 점점 없어질 것입니다. 또한 모델 분포가 트레이닝으로 관찰된 분포와 매우 비슷하다면, 즉 $P \approx \hat{P} $이라면, 샘플 $ x \sim \hat{P}$로부터 시작하더라도 MCMC는 이미 수렴하였을 것이기 때문에 단 한번의 샘플링 단계만 진행한다면 P로부터 unbiased 샘플을 얻을 수 있습니다.

놀랄만한 사실은 k=1을 사용하여 CD-1으로 수행하여도 좋은 결과를 얻을 수 있다는 것입니다. 정확한 log-likelihood 그래디언트와 CD-k를 비교한 연구를 보면, k가 1보다 커지면 결과는 점점 좋아지지만, k=1이라도 상당히 좋은 추정을 보여준다고 되어있습니다. Contrastive Divergence를 해석하는 한가지 방법은, 트레이닝 포인트 $x_1$ 주변에서 지역적으로 log-likelihood 그래디언트를 추정한다고 이야기할 수 있습니다.

5.4.2 Alternatives to Contrastive Divergence

최근 RBMs를 학습시킬 때 사용되는 다른 방법으로 persistent MCMC라는 알고리즘이 제안되었습니다. 이 방법은 negative phase를 위한 방법입니다. 아이디어는 다음과 같습니다. 일단 negative phase에서의 샘플을 얻기 위한 $x_t \rightarrow h_t \rightarrow x_{t+1} \rightarrow h_{t+1} \dots $의 MCMC 체인은 유지합니다. CD-k 방법에서는 짧은 체인을 이용하려고 하지만 그 대신 여기서는, 체인이 이동함에 따라 파라미터가 변경되는 점을 무시하고 추정을 하고자 합니다. 다시 말해 각 파라미터마다 별도로 체인으로 나누어 실행하지 않는 것입니다. 이렇게 하였을 때, 보통의 CD-k의 경우보다 좋은 log-likelihood를 얻을 수 있었습니다.

Contrastive Divergence의 또 다른 대안은 Score Matching입니다. 에너지 기반의 모델을 훈련 시키는 방법은 기본적으로 에너지의 계산이 가능하나 normalization constant Z는 계산이 힘들다는 전제하에 이루어집니다. 밀도 $p(x) = q(x)/Z$의 점수 함수는 $\psi (\partial \log p(x)) / \partial x $입니다. 하지만 모델의 점수 함수는 noamarlization constant에 종속적이지 않음을 밝혀냈습니다. 즉 $\psi (\partial \log q(x)) / \partial x $ 입니다. 이것을 기반으로 모델의 점수 함수와 트레이닝 데이터의 실험적인 밀도의 점수를 비교하고자 할 수 있습니다. 두 점수의 차이를 squared norm 한 것의 평균은, 모델 점수의 2차 미분 값인 $\partial^2 \log q(x)) / \partial x^2 $으로 표현할 수 있습니다. Score Matching 방법은 locally consistent하여 모델이 데이터 생성 과정과 일치한다면 수렴하게 됩니다.

5.4.3 Truncations of the Log-Likelihood Gradient in Gibbs-Chain Models

Constrastive Divergence 업데이트 규칙을 다른 관점에서 보아봅시다. 이것은 이 방법의 일반화나 재구성 에러와도 연결될 수 있고 auto-encoders의 최적화에도 사용됩니다. 특별히 Contrastive Divergence 업데이트 규칙에서의 편향을 살펴보려면 실제 log-likelihood의 그래디언트와의 비교를 통해야합니다.

수렴하고 있는 마르코프 체인 $x_t \rightarrow h_t \rightarrow x_{t+1} \dots $를 생각해봅시다. 아래 식은 log-likelihood의 그래디언트가 어떻게 확장될 수 있는지 보여줍니다.

$$\frac{\partial \log P(x_1)}{\partial \theta} = - \frac{\partial \text{FreeEnergy}(x_1)}{\partial \theta} + E \big[ \frac{\partial \text{FreeEnergy}(x_t)}{\partial \theta} \big] + E \big[ \frac{\partial \log P(x_t)}{\partial \theta} \big]$$

여기서 마지막 항은 t가 무한으로 갈 수록 0으로 수렴합니다. 그렇게 때문에 마지막 항을 제외하고 $\hat{x} = x_{k+1}$로 치환하면 식은 정확히 CD-k의 식이 됩니다. 따라서 CD-k의 편향은 마지막 항인 $ E \big[ \frac{\partial \log P(x_t)}{\partial \theta} \big] $이라고 말할 수 있습니다. 이 식에 따라 CD-k 방법은 CD-(k-1)보다 편향이 적기 때문에 빨리 수렴하는 것으로 알려져 있습니다. 당연하게도 k가 작아지면 편향이 커지긴 하지만, CD-k의 실험적인 업데이트 규칙은 모델의 파라미터를 log-likelihood의 그래디언트 방향으로 이동키실 것입니다. 이것은 k=1을 쓰더라도 좋은 결과를 냄을 알 수가 있습니다.

이 이론은 다음과 같은 현상으로 이해할 수 있습니다. $x_1$을 이용하여 체인이 초기화 되었을 때, $x_2$를 향한 첫번째 마르코프 체인이 이루어질 때에도 $x_1$에 비해 좋은 방향으로 이동하는 경향이 있습니다. 그래디언트는 $x_2$$x_1$사이에서의 변화에만 의존하므로 그래디언트의 방향이 올바르다고 생각할 수 있습니다.

따라서 CD-1은 $h_1|x_1$, $x_2|h_1$으로부터의 2개의 샘플링 과정을 거친 뒤 체인을 잘라버린 것으로 볼 수 있습니다. 만약 첫번째 샘플에서 멈추면 어떻게 될까요? 다음 식처럼 나타낼 수 있습니다.

$$\frac{\partial \log P(x_1)}{\partial \theta} = E \big[ \frac{\partial \log P(x_1|h_1)}{\partial \theta} \big] -E \big[ \frac{\partial \log P(h_1)}{\partial \theta} \big]$$

여기서 첫번째 항을 mean-field 추정값을 사용하여 대체하게 되면, 다시 말하면 $P(h_1|x_1)$을 이루는 모든 $h_1$ 조합에 대한 평균을 내는 대신, $h_1$ 자체의 평균 값을 $\hat{h}_1 = E[h_1|x_1]$을 이용하는 것입니다.

$$E \big[ \frac{\partial \log P(x_1|h_1)}{\partial \theta} \big] \simeq \frac{\partial \log P(x_1|\hat{h}_1)}{\partial \theta}$$

만약 CD에서 두번째 항을 무시한다면, 업데이트의 방향으로써 첫번째 항의 추정 값인 위의 수식만이 남게 됩니다. 이것은 결국 reconstruction 오류의 그래디언트의 역방향입니다.

$$- \log P(x_1|\hat{h}_1)$$

이것은 일반적으로 auto-encoders를 훈련시키는게 사용되는 것입니다.

종합해보면, Gibbs 체인을 잘라내며는 것은 결국 mean-field 추정을 통하여 reconsrction error로의 추정을 사용하고 되고 이것은 CD-1보다 더 나은 추정이며 CD-k보다 더 많은 항을 사용하게 됩니다.

reconstructino error는 결정적으로 계산되고 log-likelihood와 연관되어 있기 때문에 CD를 사용하여 RMBs를 훈련시킬 때 진행 상황을 추적하는데 사용되어 왔습니다.

5.4.4 Model Samples Are Negative Examples

에너지 기반의 모델의 학습은 모델로부터 생성된 샘플들의 분류 문제들을 푸는 것으로 이루어질 수 있습니다. Contrastive Divergence를 이용한 볼츠만 머신의 학습에서 중요한 부분 모델로부터 샘플링을 하는 것입니다. 먼저 대강의 아이디어를 이야기한 후에 이를 형식화해보겠습니다. Maximum likelihood 기준은 트레이닝 샘플에 대한 likelihood를 높이길 원하고 다른 곳에서는 줄이기를 원합니다. 만약 우리가 모델을 가지고 있고 그것의 likelihood를 높이길 원한다면, 높은 확률을 주는 모델과 트레이닝 샘플 사이의 차이는 모델을 어떻게 바꾸어야 하는지를 가리킵니다.


Add a Comment Trackback