본문 바로가기

Machine Learning/Algorithms

Restricted Boltzmann Machine(볼쯔만 머신)

요즘 한창 machine learning분야에 기존의 state-of-the-art를 갈아치울 것이라 기대를 받고있는 deep learning, deep architecture가 떠오르고.. (아니 이미 떠 올랐다.)Google에서도 Stanford의 Andrew Ng.를 중심으로 practical하게 large scale의 이미지를 대상으로 적용을 하였으니...[각주:1]


deep structure, deep network에 대해서 논문이나 튜토리얼을 찾다보면, 흔하게 나오는게 DRBM(Deep Restricted Boltzmann Machine)이나 DBN(Deep Belief Network)이다. 그래서 몇일에 걸쳐 이 두가지에 대해서 공부하고 정리를 해볼려고 한다. 구글링을 해보면 튜토리얼이 참 많이 나오니 충분히 참고가 될 것이고, 여기서 정리하는 내용들도 모두 해외자료를 일부 발췌, 번역, 이해하기 쉽도록 풀어적은 것일 뿐..


1. Boltzmann Machine? Restricted Boltzmann Machine?

Restricted Boltzmann Machine(이하 RBM)을 이야기하면서, Boltzmann Machine을 먼저 이야기하지 않을 수 없다. 일단 자세한 내용은 1985년 Hinton과 Sejnowski의 논문[각주:2]을 참조하자. 일단 wikipedia[각주:3]에서는 BM을 이렇게 정의한다.


A Boltzmann machine is a type of stochastic recurrent neural network invented by Geoffrey Hinton and Terry Sejnowski. Boltzmann machines can be seen as the stochastic, generative counterpart of Hopfield nets. They were one of the first examples of a neural network capable of learning internal representations, and are able to represent and (given sufficient time) solve difficult combinatoric problems. However, due to a number of issues discussed below, Boltzmann machines with unconstrained connectivity have not proven useful for practical problems in machine learning or inference. They are still theoretically intriguing, however, due to the locality and Hebbian nature of their training algorithm, as well as their parallelism and the resemblance of their dynamics to simple physical processes. If the connectivity is constrained, the learning can be made efficient enough to be useful for practical problems.   


내용인 즉슨, 볼쯔만 머신은 stochastic recurrent neural network이고, 이 unconstrained connectivity때문에 machine learning이나 inference분야에서 practical한 문제를 푸는데는 별로 유용하지 못해서, 이 connectivity에 constraint를 둬서 practical한 문제를 해결할 수 있다는 것.

unconstrained connectivity라고 말한것은 어느 논문에서는 fully connected, 또는 symmetrical이라고 표현을 해놨다. 노드간에 연결에 제약을 두지 않아서 실용적인 측면에서 문제 해결에 어려움이 발생하니 연결에 제약을 둔 모델을 만들어서 적용할 수 있다라는 의미이다. 아래의 graphical model 그림을 보면 쉽게 이해가 가리라 생각한다.




위 그림은 Deep Boltzmann Machines라는 논문[각주:4]에서 발췌한 그림이다. 왼쪽 그림은 일반적인 Boltzmann Machine이다. 상위 레이어는 h로 표기되어 있고, hidden node를 의미한다. 하위 레이어는 v라고 표기되어 있고, visible node를 의미한다. W는 노드들을 서로 연결해주는 edge(graph model에서는 edge라고 함) 또는 link(원래 논문에서는 link라고 되어있음)라고 하는 선으로 연결되어 있다. 각 link마다 실수의 weight값을 가지고 있다. L은 visible layer를 의미하고, J는 hidden layer를 의미한다. 보면 visible layer와 hidden layer는 fully connected되어 있다. 즉, 각 노드는 나머지 모든 노드들과 연결되어 있다. 그 노드들이 visible이건 hidden이건 상관없이.. 이것을보고 unconstrained connectivity라고 표현한 것이다. 제약없이 모든 노드들과 연결되어 있으니.. 그리고, 오른쪽 그래프 모델이 restricted BM이다. connectivity에 constraint를 준 것인데, 같은 layer의 노드들간에는 connection을 만들지 않는 제약이다. 이것을 intra-layer의 connection이 없다라고 말한다. 즉, no hidden-to-hidden and no visible-to-visible connection이 없는것으로 constraint를 준것이다.


이 모델을 제안한 Hinton의 원래 논문의 내용을 보면,


The machine is composed of primitive  computing  elements called units that  are connected  to  each other  by  bidirectional  links.  A  unit  is always in one of  two  states, on  or  off,  and  it  adopts  these states as a probabilistic function  of  the states of  its neighboring  units and the weights on its links to them.  The weights can take on real values of  either sign. A  unit  being on or off  is taken  to  mean that  the system currently  accepts or  rejects some elemental hypothesis about  the domain.  The weight on a link  represents a weak pairwise  constraint  between  two  hypotheses.  A  positive  weight  indicates that  the two  hypotheses tend to support  one another;  if  one is currently  accepted,  accepting  the  other  should  be more  likely.  Conversely,  a negative weight  suggests, other  things  being equal,  that  the  two  hypotheses should not both  be accepted. Link  weights are symmetric,  having the same strength in both  directions  (Hinton  &  Sejnowski,  1983).’ 

 

간략히 내용을 보면, 이전에 설명한 내용과 대부분 동일하다. bidirectional link로 서로 연결된 unit(노드)들로 구성되어 있고, 각 노드들은 항상 on 또는 off 상태만을 가지고 있고(노드들은 binary 상태(0또는 1)만 가진다), 각 노드들은 링크로 연결되어 있고, 이웃하는 노드들과는 확률함수로 상태가 업데이트 되고, 링크들은 부호상관없이 실수(real value)값을 가진다. Link weight가 symmetric하다는 것은 링크가 bidirectional link이기 때문에 양쪽 노드에 동일한 strength를 가진다는 의미이다.


2. 에너지 함수 및 최소화(Energy function and minimization)

Boltzmann machine은 홉필드 네트워크와 유사한데, Boltzmann machine의 네트워크가 에너지를 가지는 네트워크로 정의한다. 네트워크를 구성하는 각 unit들은 0 또는 1의 binary값을 가지고, 홉필드 네트워크와 다르게 unit들이 stochastic하다. 네트워크의 global energy, E를 다음과 같이 정의하고 있다.



위 식에서 w는 unit i와 j사이의 connection weight이고, unit i가 'on'이면 si는 1이고, 'off'이면 0. theta는 unit i의 threshold이다.

Boltzmann machine의 연결에 대해 2가지 제약조건이 있는데, 첫번째는 자기자신과 connection이 된 노드는 없어야 한다. 두번째는, 모든 연결은 symmetric하다는 것이다. (즉, 노드사이에 연결은 bidirectional이고, 링크에 주어진 weight는 양쪽에 모두 동일하게 연결되어 있다는 의미이다.) [각주:5]


근데.. 도대체 네트워크를 에너지로 보는 이유는 뭘까? 이 모델을 열역학과 연관지어서 생각해 볼 수 있다. 열역학 제2법칙[각주:6]이 고립계에서 비가역과정이 일어나면 엔트로피(Entropy)는 항상 증가하며 감소하지는 않는다라는 것이다. (비가역? 말그대로, 거꾸로 일어나지 않는다는 의미임) 엔트로피에 대한 내용을 찾아보면, 이렇게 말을 한다. 열역학적 확률의 최대값은 온도가 균일한 열평형상태에 대응한다. 다른 에너지 출입이 없는 고립계인 경우에는 계 전체가 열평형에 도달하여 모든 열과정이 정지하는 상태이다.


즉, 각 노드(unit)가 활성화(activation, on)되는 것을 열역학 제2법칙과 연관지어서 생각해보면 이유를 알 수 있을것 같다. 다음의 문서[각주:7]를 참고하자.

결론적으로 어떤 한 노드가 'on'이 될 확률을 아래와 같이 표현할 수 있다.



T는 temperature이고 실수값이다, 노드가 ON이 될 확률을 표현하기 위해([0,1]사이의 값) logistic function을 사용하였다. 가만히 보면, exponential 함수안의 term은 entropy를 나타낸다. 엔트로피가 물체가 가지고 있는 열에너지를 온도로 나눈것이니, 결국엔 각 노드의 엔트로피를 logistic function을 통해 [0,1]로 normalize시킨것이고 이것을 확률로 대응시킨것이다.(맞나?? 그냥 내 생각일 뿐이다.) exponential term의 delta E를 Hinton 논문에서는 energy gap이라고 표현하는데,  다음과 같이 설명되어 있다.


Because the connections are symmetric, the difference between the energy of the whole system with the k-th hypothesis rejected and its energy with the k-th hypothesis accepted can be determined locally by the k-th unit, and this "energy gap" is just


 



3. 학습 알고리즘(Learning)

4. Deep Boltzmann Machine?

5. ...




본 내용은 아래의 레퍼런스를 참조하여 작성함.


1) http://blog.echen.me/2011/07/18/introduction-to-restricted-boltzmann-machines/

2) http://imonad.com/rbm/restricted-boltzmann-machine/

3) http://www.mit.edu/~rsalakhu/papers/dbm.pdf

4) http://lvpei.wordpress.com/2010/06/29/boltzmann-machine/

5) http://en.wikipedia.org/wiki/Boltzmann_machine





  1. http://www.digitalstrategyconsulting.com/intelligence/2012/06/google_brain_simulator_uses_16.php [본문으로]
  2. http://learning.cs.toronto.edu/~hinton/absps/cogscibm.pdf [본문으로]
  3. http://en.wikipedia.org/wiki/Boltzmann_machine [본문으로]
  4. http://www.mit.edu/~rsalakhu/papers/dbm.pdf [본문으로]
  5. http://en.wikipedia.org/wiki/Boltzmann_machine [본문으로]
  6. http://en.wikipedia.org/wiki/Second_law_of_thermodynamics [본문으로]
  7. http://www.csie.ntnu.edu.tw/~ipcv/Leader/teaching/ann/ann_ch5.doc [본문으로]

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

Deep learning  (0) 2012.12.26
MATLAB, Learning Deep Boltzmann Machines  (2) 2012.08.25