본문 바로가기

Machine Learning

Restricted Boltzmann Machine

반응형
근래에 대부분의 비전분야에 사용되는 DCNNs 방식은 인풋, 아웃풋이 있을때, 두 사이를 연결하는 함수를 찾는 과정(supervised learning)이다.


(* Z는 정규화 term)
이와달리, Energy-based model를 이용한 RBM은 대표적인 Unsupervised Learning이다.
주어진 이미지에서 이미지를 가장 잘표현하는 representation을 찾는 과정이다.

가정하는 환경은 위의 Energy-based model이다.
특정상태의 확률은 에너지 비율에 반비례. 이러한 확률 분포를 bolttzman distribution이라고함.
x라는 이미지(입력)가 있을 확률(p(x))은 에너지(E(x))에 반비례한다.
즉, 에너지를 학습하여 찾는 것이 목적이고, 이 아이디어에서 유도된 것이, Boltzmann machine이다.



 
General Boltzmann machine은 모든 노드가 연결되어 있지만, 
RBM에서는 hidden unit간의 연결이나 visible간의 연결 다시말해, 레이어 내부의 연결이 없다. 
오직 visible(image)과 hidden 사이, 레이어와 레이어 사이의 연결만 있다.
이모형은 이전에 봐왔던 Neural Network의 모형과 거의 동일하다.

BM은 확률적으로 각 노드가 0 또는 1로 구성되어, Stochastic network로도 불린다.

이에 더해 RBM은 Layer 내부의 연결을 제한하고, 대신 layer간의 연결은 유지한다.



풀어서 확인해보면 NN와 매우 유사하여, NN의 pre-train용도로 사용되었다.
이미지만을 가지고, Network의 길을 닦고 이를 초깃값으로 하여 학습을 시키면 매우 성능이 좋게 나왔다.

RBM을 정의하기 위해서는 가장 먼저 Energy를 정의해 주어야 한다. RBM학습의 의미는 Energy학습을 의미하기 때문이다.

미리 Energy꼴을 이처럼 정해놓자.
결국, 각각의 v,h에 대해 Weight와 bias를 구하려는게 (w,b,a) 학습의 목표이다. 이것을 NN의 weight로 생각하면 된다.

Energy의 꼴을 정의하면, 확률을 정의할 수 있는데 문제는 Normalizing constant (Z(θ))이다. 
모든 가능한 h와 v노드에 대해 expectation을 해서 sum하기 때문이다.

만약 visible node가 100개가 있고, hidden node가 100개가 있으면, 총 200개의 node가 된다.
그상태에서 Z를 계산하려면, 모든 경우의 수를 고려하는데, 각 h노드와 v노드는 1 or 0이 들어갈 수 있다. 결국, 2^200의 경우의 수가 된다.
Z를 한번 계산하기 위해선 2^200번 합산해야한다. image 크기가 커지면 더욱 복잡해진다. 
에너지를 정의해도 확률을 정의할때, Z를 고려하기가 매우 어렵다.

또한, Energy 함수로부터 조건부 확률을 구할 수 있는데, 

모든 P(x,y)를 알고 있으면, P(x|y)를 구할 수 있는데,
P(x|y) = P(x,y)/Σ_x(P(x,y))
          =P(x,y)/P(y)
이기 때문이다. 항상 성립하진 않지만 대부분의 확률분포는 위의 법칙을 따른다.

결국 이를 통해 joint distribution -> conditional distribution이 가능해 진다. (전개과정은 생략)

우리의 궁극적인 목적은 P(v|θ)(Visible)가 주어 졌을 때,  P(v|θ)를 최대로 하는 parameter를 찾는것이 목표이다.

여기서의 parameter는 Energy를 정의하는 w, b, a였다.

결국, logP(v|θ)의 최대로하는 parameter를 구해야 한다.

그렇다면, -log(P(v))의 gradient를 구하면된다. 마치, cost function gradient를 구했던 것 처럼...
기본적으로 v의 distribution을 알지 못하므로, joint distiriution만 알기 때문에 sum rule에 따라 위처럼 풀어준다.

Z도 θ에 대한 함수이고, E도 θ에 대한 함수이므로, 미분법칙에 따라 미분을 하면 위와 같다.

식을 정리하면, 위와 같아진다. 그런데, 식도중에 P(v|h)의 꼴이 나오게 된다.

또, Z에 대한 미분식을 정리하면, v와 h의 joint distribution(P(v,h))꼴이 나온다.

식을 해석해보면, 기본적으로 각 항은 Energy function을 θ로 미분한 term이 있고, 
앞의 항은 h가 주어졌을때의 v ( 조건부P(v|h) ), 뒷 항은 모든 v,h가 다 주어졌을 때(P(v,h))이다.

이를 정리해보면, Energy를 미분한 부분은 살려두고, 
앞 항의 Expectation을 positive phase, 뒷항의 Expectation을 negative phase.

positive phase의 expectation 의미는 어떠한 visible(v)이 주어졌을 때, 모든 가능한 hidden으로 sum.
hidden node가 100개면 2^100합산.

negative phase는 아무것도 주어지지 않은 상태에서 모든 가능한 v,h로 sum.
h가 100개, v가 100개면, 2^200

결국, Energy function 미분자체는 간단하지만, 모든 가능한 h에 대한 sum(Positive phase)과 모든 가능한 h, v 조합에 대한 sum(Negative phase)이 어려운 것이다.

이를 해결하기위해 고안된 방식으로, Positive phase에서는 v가 주어졌을때 모든 가능한 h에 대해 구하는 것이 아니라, 
v가 주어지면, h에 대한 조건부 분포를 알 수 있었다.
결국 (P(h|v))이 분포에서 sampling을 하면된다. 

알고 있는 v노드를 통해서, 임의의 h를 sampling하면, v와 h 한쌍이 생긴다. 그렇게 하면, 

 E(v,h)를 계산할 수 있다.

마찬가지로 negative에서는 앞에서 얻은 sampling된 hidden을 가지고, 임의의 v를 sampling하면, 다시 또 쌍이 생기고 이를 통해 

 E(v,h)를 계산한다.

이를 통해 하나의 gradient를 얻는다.


  
이것이 바로 hinton이 고안한 CD method이다.
통계학에서의 gibbs sampling과 같다.
joint distribution이 너무 클때, 이를 조건부 확률로 나눠서, Monte carlo처럼 순차적으로 sampling 하면서, 구하는 것이다.



RBM을 쌓아서 만든것이 DBN이다. layer-wise 학습을 시키는 방식(v->h , h->v)이다.

시계열 데이터를 통해 시간에 따라 특정 행동 뒤에 이어지는 행동을 예측하는 DBN논문도 있다.


반응형

'Machine Learning' 카테고리의 다른 글

Linear Model  (0) 2019.01.22
KNN Classifier, Regression  (0) 2019.01.21
Bias term의 필요성  (0) 2019.01.13
Optimization 방법론  (0) 2019.01.12
Overfitting을 막는 Regularization  (0) 2019.01.09