Restricted Boltzmann Machine

Energy-based unsupervised-learning model 이라고 할 수 있는 RBM에 대한 내용 정리.

Hidden layer와 Observation의 관계를 물리학에서 가져온 Energy-based로 설정하여 Energy(러프하게 additional necessary information정도?..)를 낮추는 방향으로 확률을 높이는 방향으로 학습을 시킨다.

 

Somewhat HMM과 비슷한 개념으로 latent layer를 두지만 Markov assumption같은 것을 두지는 않고 철저히 latent feature와 observation과의 관계만을 통해서 generative 모델을 설정한다.

큰 그림을 보자면,

먼저 observation x vector 와 latent feature vector를 어떤 distribution p(x, h)로 가정한다.

이 distribution의 parameter를 학습하기 위해서 두 vector 사이의 Energy function을 정의하고 이를 낮추는 과정을 진행하는 것이다. (즉 p(x, h)를 높이는 과정)

참고로 RBM에서는 partition function이 intractable 함..

195344

 

 

다음 정리를 보자. Markov network(undirected graph)의 관점으로도 해석할 수 있다.

x와 h의 joint prob을 energy function으로 설정하는데, 이것들이 undirected graph의 세가지 factor로 factorized될 수 있는것이다!

195404

이럴 경우 latent feature와 observation사이의 pairwise factor와 개별 노드에 대한 unary factor가 정의된다. 후훗. (하지만 물론, 모든 z에 대해 sum하는 intractable한 partition function(Z)으로 나누어주어야 한다는 마음의 짐을 안고 일단 진행해보자.)

 

x vector가 주어졌을 때 h vector가 나올 확률은 -> 각 hj element들이 나올 확률(given x vector)의 곱이다. 왜?

conditional independence의 가정이 들어가기 때문이다. (즉 x가 given일 때, hj 사이는 모두 independent 함. 역으로도 마찬가지.)

Screenshot from 2017-05-18 11-28-55

그러므로 각 p(hj|x)를 구할 수 있는 꼴로 정리가 되었다!

sigmoid로 정리되는 derivation도 간단하다. 위식을 이용해서 sigmoid 꼴로 만들어주면 된다.(실은 이 꼴이 sigmoid라고 불린 거겠지..)

Screenshot from 2017-05-18 11-29-32

즉, given x vector일 때, h의 각 element의 activation은 x vector에 대한 linear transform 뒷단에 sigmoid 함수를 붙인 꼴이 된다.

(-> 사실 Neural network의 기본형이 여기에서 출발하게 된 셈.)

 

따라서 그 수식을 정리하면 다음과 같아진다.

Screenshot from 2017-05-18 11-10-45

 

CRF 강의에서도 보았듯이 sigmoid function이란 결국 인풋 X에 대해 Y가 Logistic output일 때 이를 CRF로 구현한 수식이다.

RBM에서도 h를 binary output일 경우(Bernoullie distribution), x에 대해 conditional 한 h의 값을 구하는 것이 linear function + sigmoid함수를 사용한 non-linearity 꼴로 나오는 것을 확인할 수 있다.

반대로 h가 condition일 경우의 x(x 역시 binary 값일 경우)를 구하는 것도 linear function + sigmoid 함수꼴로 나오는 것을 확인할 수 있다.

(여기서 사용되는 parameter W, b, c 들은 앞서 정의한 Energy function의 parameter들이다.)

 

이를 local Markov property라고 칭하기도 한다. 즉 neighboring하는 element들에만 영향을 받는다는 건데, 즉 hj 는 x vector의 모든 element의 영향을 받고, xk 하나는 h vector의 모든 element의 영향을 받는다는 뜻.

 

Screenshot from 2017-05-18 13-59-25

 

 

 

 

슬슬 결국 우리가 원하는 p(x)로 다가가보자. 이를 위해서 joint에서 h를 marginalize할 필요가 있다.

그렇게 derivate한 후에 특정 부분을 free energy라고 칭한다.

195413

(증명부분이 잘려있어서 다시 올려본다.)

Screenshot from 2017-05-18 14-32-15

Screenshot from 2017-05-18 14-36-02.png

이전 장에서 정의한 p(x, h)를 h에 관해 marginalize하면 저런 나름 단순한 꼴로 정리가 된다.

그 일부를 Softplus function (->Max(0, x)와 비슷하지만 소프트한..) 이라고 정의하면 high prob을 얻기 위해 parameter들이 어떻게 학습되어야 할지에 대한 직관도 엿볼 수 있다.

So, to make p(x) high,

(1) make cTx big. (ck가 양수면 큰 xk = 1이 되도록, ck가 음수면 xk = 0 이 되도록.) : bias of each xi’s probability

(2) find the rows of W that aligns well with x.

  • 각 Wj : feature expected in x vector (각 hj(feature) 마다의 특성을 반영하도록 하는 param)
  • 각 bj : bias of each feature

 

이걸 뭉뚱그려서 묶어버린 것이 아까 본 Free Energy라는 개념.

 

 

오케이. 그럼 이제 트레이닝으로 넘어가보자.

195421

트레이닝의 목표는 Average NLL (negative log-likelihood)를 최소화하는 것이다.

왜냐구? NLL minimization이 MLE maximazation과 같은 의미이기 때문이다.

 

일단 likelihood에 log를 씌우는 것은

1. underflow 예방

2. factor들의 곱을 addition으로 변경하는 trick 사용 가능

3. monotone transformation이기 때문에 원래 식의 성질(의미)를 보전하고 미분 등에 안전

-> 일케 세가지 이유 정도로 좋다 와우. (머신러닝 쪽에서 좋아하는 트릭들 중 하나.. 또 먼가 분모 분자 새로 곱해줘서 전개하는 그런 트릭도 좋아하고 여러가지 있다..)

 

그럼 일단 log-likelihood를 maximize하는 건 negative LL을 minimize하는 것과 같다는 건 매우 당연한 이야기이고, 이 NLL이라는 녀석이 information theory 쪽의 Entropy와 연루가 되는 다리역할을 하게 되는 것이다.

NLL의 average를 구한다고 생각했을 때, 만약 샘플의 갯수가 아주 아주 많아지면 Expectation으로 얼추 치환할 수 있다. 그럼 짜자잔 엔트로피다.

\underset{\theta}{\arg\min} (\frac{1}{n} \sum\limits_{i=1}^n - \log f(x_i|\theta) )     –>   E[- \log f(x|\theta)]    (f가 확률함수)

(참고로, 이런 접근이 Variational inference에서 사용된다. 어떤 뜬금포 확률분포 q(x)라는 애를 설정해서 얘가 true distribution이 되길 원하는데, 우리가 가지고 있는 p(x)와의 KL divergence를 (relative entropy)를 낮추는 쪽으로 학습을 시킨다.)

E[\log f(x|\theta^*) - \log f(x|\theta)] = E[\log\frac{f(x|\theta^*)}{f(x|\theta)}] = \int \log \frac{f(x|\theta^*)}{f(x|\theta)} f(x|\theta^*) dx    –> KL-divergence

(요기선 theta*가 true distribution의 parameter)

이 KL-divergence 개념을 MAP 쪽으로 적용한다면, prior 에서 posterior로 가는 사이의 entropy gain이 바로 KL-divergence인 셈이 되는 것이다! 와웅

maximum likelihood and maximum a posteriori probability 는 결국 loss funcion의 special case가 되는 것이다. 캬.

더 자세히는 요기의 글을 참고하자.

https://quantivity.wordpress.com/2011/05/23/why-minimize-negative-log-likelihood/

그럼 이제 objective가 생겼으니 어떻게 학습을 할지 차근차근 가보자.

NLL 식에 대한 derivative가 전개되면  positive phase와 negative phase로 나누어 지는 것을 보았다. Positive phase 부분은 x(t)에 conditioned된 에너지 function의 미분값의 h에 대한 기대값이고, negative phase 부분은 에너지 function의 미분값의 x, h 둘다에 대한 기대값이다.

따라서 직관적으로는 positive phase는 x에 대해 dependent하고 negative phase는 ‘모델 자체’에 dependent하다.

근데 이 negative phase를 계산하는 것이 intractable하기 때문에 approximate inference를 도입해야 하는 것이다. 힘내 깁스샘플링!

따라서 Contrastive Divergence라는 방식을 사용한다. Sampling-based inference을 적극 활용하는 멋진 방법이다.

전체적으론 약간 EM과 비슷하지만 다르다. Gibbs sampling을 하는 듯 하지만 조금 변형한 방식으로 적용하는 것을 볼 수 있다.

노트를 자세히 들여다보자.

195430

195439

러프하게 직관적인 설명을 해보자면 positive phase에서는 이번 time에서의 x(t)를 잘 설명하도록 (kinda.. biased) 모델이 학습되고,  negative phase에서는 h의 general한 distribution을 추론하도록 학습된다.

195448195457195505195514195523195532

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s