iMTE

Restricted Boltzmann Machine 본문

Deep learning/Tensorflow

Restricted Boltzmann Machine

Wonju Seo 2018. 6. 21. 23:43

Restricted Boltzmann Machine


back propagation을 사용해, deep한 neural network를 학습시킬 수 있다. 하지만, deep networks의 cost function은 non-convex function이므로, 어디서 최적화를 시작하는지는 모델의 성능을 크게 좌우한다. (Weights initialization) 


다양한 initializer들이 제시되었다. Xavier initializer, He initializer 등이 그렇다. 이 initializer는 들어오는 neurons의 수와 (fan-in) 출력되는 neurons의 수 (fan-out)을 사용해서 normal distribution의 variance를 결정한다. 이 방법은 대부분의 neuron들이 동일하게 activation이 되도록 만들어주기 때문에 몇 neuron이 과도하게 activation되는 것을 방지한다. 


이외 weights을 초기화하는 방법으로는, unsupervised learning으로 'Restricted Boltmann Machine'이 pre-training에 사용된다. 


RBM은 입력 v에 대해서 hidden layer의 unit 사이의 weight을 결정해주는 방법으로, 다음과 같은 순서를 따른다.


1. v에 랜덤한 초깃 값 (0 혹은 1)을 할당.

2. weights을 곱해 h를 sampling 한다.

3. 반대로 h로부터 동일한 weight의 transpose를 곱해 v를 구한다.

4. 이 과정을 반복하면 최종적으로 v와 t는 주어진 weight에 대한 v와 t의 joint probability distribution을 나타낸다. (Gibbs sampling)

5. sample된 값을 기초로 모델의 기대값을 산출하고 이 값으로 gradient를 계산한다.

6. 실제 probability distribution과 비슷하면 학습을 하지 않는다.


Tensorflow로 구현하면 다음과 같다.




입력된 MNIST data



Hidden unit으로 부터 복구된 MNIST data


RBM의 hidden layer로 부터 복구된 MNIST data, 즉 입력은 실제와 비슷한 형태를 보인다. 단, salt noise가 추가된 것 처럼 보인다. Hidden layer의 크기는 500이고 input의 size는 784이므로, 차원이 reduction되었음을 확인할 수 있다. Autoencoder 처럼 RBM은 차원 축소을 할 수 있을 뿐만 아니라 generation을 할 수 있다.


RBM은 주어진 model로 data x의 분포를 학습한다. 그 비교 대상은 실제 데이터의 분포와 비교된다. 그 과정에서 hidden layer가 학습이 되는 재미있는 아이디어를 사용하였다.


RBM으로 학습된 hidden layer의 weight은 unsupervised learning으로 pre-trained되어있고 이 network를 사용해서 classification을 할 수 있다. RBM으로 학습된 모델에 layer를 추가하고 softmax layer를 추가하고, supervised learning을 진행하면 Deep Belief Network (DBN)이 된다.




200 epoch (unsupervised learning), 200 epoch (supervised learning) 결과, accuracy는 95 %로 계산되었다. 하지만, 숫자 2를 7로 분류하였다. 

'Deep learning > Tensorflow' 카테고리의 다른 글

Sparsity regularization  (0) 2018.06.21
Comments