Tuesday, June 7, 2016

Restricted Boltzmann Machine #1 (Korean)

기계학습 알고리즘 첫 번째
Restricted Boltzmann Machine(제한 볼츠만 머신), RBM의 개념에 대해서.

RBM에 대해 이야기하기 전에, 우선 Energy based model과 Free energy, BM(Boltzmann Machine)에 대해서 먼저 이야기 해보겠습니다.



- Energy Based Model
확률모델링을 비롯해 기계학습 모델들은 변수들 사이의 상관관계를 수치적으로 계산하는 것에서 시작합니다. Energy based model은 이런 변수들 사이의 상관관계를 에너지로 인코딩하며, 에너지가 낮을수록 연관성이 높음을 의미합니다. 주어진 데이터(x)에 대해서 가능한 모든 출력변수(y)들의 배열들{(x, y)....}의 에너지인 E(x,y)는 각 배열의 연관성을 의미하며 모델이 제시하는 출력값은 에너지값이 가장 작은 배열의 출력변수(y)가 됩니다. 즉 모델은 가능한 모든 배열에 대한 에너지값을 알고 있어야 하며, 이 모든 배열에 대한 에너지값을 정해주는 수학적인 함수가 필요합니다. 학습이란, 주어진 학습데이터들에 대해서 좋은 에너지 함수가 되도록 에너지 함수의 파라미터를 수정하는 과정을 의미합니다. 이러한 에너지 함수를 정의하고 좋은 에너지 함수를 측정하기 위해 손실함수를 정의해서, 손실함수를 최소화 시키는 방향으로 기계학습이 진행됩니다.



Energy based model은 energy function을 통해서 확률 분포를 정의하는 특징이 있고 아래와 같이 확률을 정의합니다.

Z = partition function

위의 식은 다시 Visible - x와 hidden - h에 맞게 아래와 같이 표현할 수 있습니다.


그리고 이 식을 위의 식과 유사한 형태로 표현하기 위해 free energy 개념과 식을 사용합니다.



- Free energy
어떤 시스템 내부에 가지고 있는 에너지 중 실제로 일로 변환될 수 있는 '자유로운' 에너지를 뜻합니다.

Free energy는 아래와 같이 정의합니다.


그리고 확률을 에너지로 표현한 식에 대입하여 아래와 같이 표현할 수 있습니다.


Energy based model은 gradient descent를 수행함으로써 모델을 학습하고, training data set에 기반한 Negative log-likelihood 값에 대해 최적화를 합니다.

아래와 같이 log-likelihood와 negative log-likelihood를 정의하고

gradient descent의 정도로 와 위에 free energy 식을 이용하여 아래와 같이 전개할 수 있습니다.



Energy based model과 Free energy에 대해서 간단하게 알아보았고, 이어서 Boltzmann Machine과 Restricted Boltzmann Machine의 개념에 대해 간략하게 소개하겠습니다.



- Boltzmann Machine
BM은 stochastic recurrent neural network로, 에너지 모델을 확률로 해석한 모델이고 Geoffrey Hinton과 Terry Sejnowski에 의해 1985년 제안되었습니다. 각각 하나의 visible layer와 hidden layer로 구성되며, 이 네트워크를 하나의 에너지 모델로 간주합니다. visible layer와 hidden layer가 학습과정에서 에너지 함수를 이용하여 학습하게 됩니다.


BM & energy function
ref : [hugo larochelle youtube channel]

하지만 그림과 같이 unconstrained connectivity(fully connected) 때문에 weight를 구하는 계산과정이 너무 복잡하고 그로 인해 기계학습이나 추론 분야에서 실제적인 문제를 해결하는데 유용하지 않았습니다. 이러한 Boltzmann Machine의 단점을 보완하는 방법으로 연결에 제약을 둠으로써(같은 layer간의 노드연결을 없앰) 실제적인 문제 해결에 이용하기 위해 고안된 것이 바로 Restricted Boltzmann Machine입니다.


RBM & energy function
ref : [hugo larochelle youtube channel]



- Restricted Boltzmann Machine
bidirectional link로 서로 연결된 노드(unit)들로 구성되어 있으며 노드들은 on/off 상태를, 링크들은 weight(real value)를 가집니다. 같은 layer의 노드들 끼리 연결되는 링크는 없고, 링크에 주어진 weight는 양방향으로 노드에 동일하게 적용됩니다. BM과 마찬가지로 열역학 법칙(에너지는 높은 곳에서 낮은 곳으로 이동)처럼 확률이 낮은 상태에서 높은 상태로 학습됩니다.


아래는 RBM의 Energy function입니다.


Energy function을 확률로 풀이한 것입니다.


ref : [hugo larochelle youtube channel]

RBM도 마찬가지로 log-likelihood의 gradient descent를 수행함으로써 네트워크를 학습합니다. 학습 과정에서 Markov chain을 수렴할 때까지 반복함으로써 p(x)로부터의 표본들을 구하는 Gibbs sampling을 사용합니다. 하지만 표본을 추출하기 위해 sampling을 수렴할 때 까지 반복하는 것은 비효율적이기 때문에, 표본 추출 시 속도 개선을 위해 contrastive divergence 방식을 사용합니다.




개인적으로 공부하면서 그냥 정리한 것입니다.
누군가에게 도움이 될만한 포스팅이라기 보다는....ㅎㅎ
잘못된 것이 있으면 리플로 알려주세요~