티스토리 뷰

https://biomadscientist.tistory.com/61

 

[오일석 기계학습] 10.4 - 확률 그래피컬 모델 RBM과 DBN (1)

DeepConv-DTI 논문을 읽는데 Deep Belief Network(이하 DBN)이라는 모델이 등장한다. 읽어보니 Restricted Boltzmann Machine(이하 RBM)을 여러층 쌓아 만든 확률적 분포 생성모델 뭐시기 하는데 도저히 한줄도 이해

biomadscientist.tistory.com

https://biomadscientist.tistory.com/62

 

[오일석 기계학습] 10.4 - 확률 그래피컬 모델 RBM과 DBN (2)

https://biomadscientist.tistory.com/61 [오일석 기계학습] 10.4 - 확률 그래피컬 모델 RBM과 DBN (1) DeepConv-DTI 논문을 읽는데 Deep Belief Network(이하 DBN)이라는 모델이 등장한다. 읽어보니 Restricted Boltzmann Machine(이

biomadscientist.tistory.com

 

3. Deep Belief Network (DBN)

이전 포스팅들에서 RBM의 구조(1)와 RBM이 학습하는 방법(2)에 대해 공부했다.

마지막으로 RBM을 여러겁 쌓아 Deep Neural Net구조처럼 만든 모델이 바로 Deep Belief Network(DBN)이다. 

그림 10.22

그림 10.22 (a)는 제프리 힌튼 교수님이 MNIST를 이용해 DBN을 실험한 구조이다. RBM을 총 4개 적층하여 784 차원(MNIST 28*28)의 Visible layer를 이용해 1000 차원의 hidden layer를 sampling하고 이것을 다시 1000차원의 visible layer로 이용하여 다음 hidden layer를 sampling... 반복하여 최종 30 차원의 hidden node로 차원 축소한 것이다. 이때 RBM을 쌓아가는 과정을 층별 예비 학습(layer-wise pretraining)이라고한다. 

 

층별 예비 학습(layer-wise pretraining)

 

오토인코더의 층별 예비학습

해당 이미지는 RBM과는 약간 다른 오토인코더의 층별 예비학습의 학습 방식이다. RBM과는 구조가 약간 다르지만 층별 예비학습의 구조를 파악하는데 있어서는 크게 무리가 없을 것이다. x는 훈련집합이다. 훈련집합의 샘플로부터 첫번째 layer의 encoder(f1)와 decoder layer(g1)를 학습한다. (RBM은 decoder layer가 없다.) 학습을 마치면 decoder layer는 떼어내고 encoder layer의 가중치는 고정시킨다. 

고정시킨 f1을 이용해 훈련집합 x로부터 h1을 만든다. f1가중치는 고정시켰으므로 입력된 x샘플에 의해 h1을 얻는 것은 쉽다. 다음으로 얻어진 h1 노드를 이용해 다시 encoder layer(f2)와 decoder layer(g2)를 학습하고 마찬가지로 decoder layer(g2)는 떼어내고 encoder layer(f2) 가중치는 고정시킨다. 

고정시킨 f1, f2를 이용해 훈련집합 x로부터 h2를 만든다. f1과 f2 가중치는 고정되어있기 때문에 h2를 얻는 과정은 쉽다. 다음 마찬가지로 얻어진 h2를 이용해 encoder layer(f3)와 decoder layer(g3)를 학습하고 decoder layer(g3)는 떼어내고 f3는 고정시킨다.

이렇게 만들어지는 hidden node는 쌓일수록 점점 더 input x를 나타내는 정교한 representation vector(=latent vector)가 된다. h1보다는 h2가, h2보다는 h3가 더 정교하고 많은 특징을 표현하는 벡터가 된다는 것이다. (학습이 잘 되었다는 전제 하에) 여기까지는 input그 자체가 label인 비지도학습으로 가중치 학습이 이뤄진다.

이 과정을 쌓아올린 층만큼 끝까지 반복한다. 이때 마지막 층에서는 내가 원하는 분류기의 모델을 적용할 수도 있다. 예를들어 그림에서는 맨 마지막 레이어는 Encoder-Decoder 구조가 아닌 Classifier로써 Regression task를 적용했다고 하면 MLP를 통해 가중치(f4, f5)를 학습시킬 수 있다. 

이렇게되면 f1~f5까지 전체 모델의 가중치를 결정할 수 있다. 마지막으로 전체 가중치를 연결하고 가중치 고정을 해제한 최종 모델을 만들어 학습시킨다. 이 과정을 통해 최종적으로 가중치들에 대해 fine-tuning을 진행해 모델을 결정하게된다. 맨 마지막 layer에 대한 예비학습과 fine-tuning과정은 label이 있는 지도학습이다.

인공 신경망 학습에 익숙한 사람이라면 현재의 학습방법과 다르다는 것을 쉽게 눈치챌 것이다. 현재는 전체 모델을 end-to-end로 backpropagation하여 모든 layer에 대해 한번에 가중치를 업데이트한다. 그러나 층별 예비학습과 DBN 개념은 MLP를 여러 층으로 쌓아올렸을 때 좋은 성능을 낼 수 있다는 개념을 사람들에게 인식시켜주는, deep learning 알고리즘의 아주 중요한 근간이 되는 개념이었다고 평가된다.

 

층별 예비 학습 구조와 RBM 개념을 알고있다면 DBN 개념은 이해하기 어렵지 않다. 각 층별 RBM의 은닉노드를 다음 RBM의 입력 노드(visible node)로 사용해 점진적으로 각각의 RBM을 학습시켜 각 층별 가중치를 결정한다. 그리고 모든 가중치를 연결한 하나의 DBN구조를 형성하면 된다. 그리고 마지막으로 전체 가중치에 대한 fine tuning을 진행한다. 

그림 10.22는 RBM을 쌓아 만든 DBN을 이용해 만든 AutoEncoder 구조이다. 흔히 알고있는 AE와 크게 다를 것은 없지만 보통 알고있는 AE는 샘플링없이 만들어지는 결정론적 구조라면 DBN을 이용한 AE는 확률적 샘플링 개념이 도입되는 확률 오토인코더이다.

10.22 (a)에서 결정한 순방향(Encoder) DBN의 가중치 벡터의 집합을 W라고 하면 10.22 (b)에서 30차원으로 축소된 representation vector로부터 원본 복원을 하는 과정(Decoder)에 필요한 가중치들은 WT로 단순히 Transpose한다. 그리고 전체 DBN AutoEncoder를 fine-tuning하면 학습이 완료되는 것이다.

댓글