Boltzmann Machine은 [0,1]의 값을 갖는 binary unit들로 이루어진 network를 의미한다.



 위의 Figure1은 Boltzmann Machine을 안다면 누구나 한번쯤 봤을 그림이다. 먼저 왼쪽의 모형이 general BM이다. 이 BM의 특징은 full-connectivity에 있다. 그리고 오른쪽에 모형이 restricted BM이다. 이 모형은 visible node와 hidden node를 분리시켰다. 이것이 BM과 RBM의 차이이다. 이 간단한 차이로 RBM은 실제 구현이 가능하고, BM은 구현이 매우 어렵다. 


 앞서 설명하였듯이 BM에서 node는 0또는 1의 binary한 값을 갖는다. 그리고 각 node사이에는 symmetric하게 link가 있는데, 이 link에는 weight가 존재한다. 이 weight의 값은 굳이 양수일 필요 없이 모든 값을 가질 수 있다. RBM의 경우 각 node를 visible과 hidden으로 나눠 놓았고, 여기서 visible node는 우리의 data가 들어가는 곳을 의미하고, hidden의 경우 우리는 각 node가 1이 될 확률만을 알게된다. 


BM의 상태는 에너지를 통해서 설명될 수 있는데 엔트로피와 마찬가지로 에너지가 높을 수록 그 존재 확률이 낮아지게 된다. 먼저 특정 상태의 에너지는 다음과 같이 표시된다. 


 그리고 이때 해당 상태의 확률은 다음과 같다. 

 여기서 Z는 단순히 normalizing constant이지만 문제는 이 Z의 계산이 매우 어렵다. 그 이유는 뒤에서 나오는데 쉽게 풀어 말하자면 가능한 모든 경우에 대해서 계산을 해봐야하기 때문이다. 이렇게 구해진 확률의 log-likelihood를 계산해서 그 값이 최대한 크게 하는 gradient ascent방식을 사용하는 것이 일반적인 RBM을 학습시키는 방법이다. 이때 log-likelihood는 다음과 같다. 


 이 식에서 알 수 있듯이 우리가 알고자하는 link의 weight는 주어진 data로 구해진 expectation value에서 model 전체에 대한 expectation value를 빤 값이다. 보통 전자를 positive phase라고 부르고, 후자를 negative phase라고 부른다. 


 이러한 RBM을 train 시키는 다른 방법으로는 Contrastive Divergence(CD)라는 방법이 있다. 이 CD는 간략화 된 학습이라고 보면 되는데, positive phase를 주어진 data에 대한 expectation으로 보고, negative phase를 n번 gibbs sampling을 통해서 얻어진 distribution의 expectation으로 보는 것이다. 말은 어렵지만 gibbs sampling이 무엇인지 안다면 대충 이해가 갈 것이다. 

 

 *gibbs sampling에 대한 포스팅: http://enginius.tistory.com/296


 여튼 내가 구한 소스에는 1-CD를 사용했다. 무슨 말인고 하니 gibbs sampling을 한번만 한 것을 distribution으로 생각하겠다는 것이다.

 만약 n번 gibbs sampling을 할 경우 n-CD가 된다. 간단하다. 


 실험은 매트랩으로 하였고, dataset은 MNSIT digit을 사용하였다. MNIST는 10000개의 train image와 6000개의 test image를 갖는 dataset이다. dataset은 다음 사이트에서 구할 수 있다. 


 http://yann.lecun.com/exdb/mnist/


 여튼 전체적인 실험 과정은 이렇다. 이 dataset을 이용해서 RBM을 train시키고, 이렇게 train된 RBM에 노이즈가 섞인 data를 넣어주었을 때 어떤 결과를 보이는지를 확인하는 것이다. RBM의 경우 unsupervised learning이라 이 자체로 classification 문제를 풀긴 어렵다. 


<매트랩 코드>

더보기


실험 결과










 - 이런식으로 epoch가 커질수록 원래 이미지에 더 가까이 가는 것을 알 수 있다. 이제 테스트를 위해 이 image에 gaussian noise를 입혔을 때 어떤 결과가 나오는지 확인해보자. 


1. 원래 이미지


2. 노이즈를 추가한 이미지 


3. RBM을 거친 후의 이미지 


 RBM을 거친 후의 이미지에서 노이즈가 줄어든 것을 알 수 있다. 


 * 참고로 DBN은 이 RBM을 여러 층 cascade한 것을 의미한다. 


 매트랩 프로젝트


8. Restricted Boltzmann Machine on MNIST.z01


8. Restricted Boltzmann Machine on MNIST.zip



저작자 표시 비영리 동일 조건 변경 허락
신고
« PREV : 1 : ··· : 298 : 299 : 300 : 301 : 302 : 303 : 304 : 305 : 306 : ··· : 578 : NEXT »