티스토리 뷰

DeepConv-DTI 논문을 읽는데 Deep Belief Network(이하 DBN)이라는 모델이 등장한다. 읽어보니 Restricted Boltzmann Machine(이하 RBM)을 여러층 쌓아 만든 확률적 분포 생성모델 뭐시기 하는데 도저히 한줄도 이해가 안가더라. 예전부터도 도대체 이놈의 RBM만 나오면 무슨말인지 이해를 도저히 못하겠었는데 이번기회에 확실하게는 아니더라도 개념이라도 잡고 가야겠다는 생각이 강하게 들어서 일단 다 제쳐두고 오늘은 이 RBM과 DBN의 개념에 대해 공부해보기로 하자.

먼저 RBM의 기본 시작은 BM부터다. 다음 그림을 통해 BM과 RBM의 개념을 이해하자

Boltzmann Machine(BM)과 Restricted Boltzmann Machine(RBM)

BM은 입력층으로 사용되는 가시 노드(visible node)와 출력층의 은닉 노드(hidden node, latent node)로 구분된다. 아이러니하게도 Basic한 BM은 학습이 너무 어려워서 거의 사용하지 않는다.

반면 RBM은 같은 종류의 노드간의 연결(에지)을 제한한다. (a)와 (b)그림과는 달리 RBM인 (c)그림에서는 서로 같은 종류의 노드들은 연결된 부분이 없는것을 확인할 수 있다.

RBM은 스몰린스키에 의해 최초 제안되었고, 초창기에는 하모니움(hamonium)이라 불리기도 했다. 그러나 이렇게 제한을 가한 RBM 조차도 초창기에는 학습할 방법을 찾지 못해 한참 애를 먹다가 2002년 제프리 힌튼 교수님이 Contrastive divergence alogorithm을 고안해내면서 학습에 빛을 본다. 2006년 이어서 RBM을 여러층 쌓아 만든 Deep Belief Network(DBN)까지 개발하며 이를 빠르게 학습할 수 있는 Layer Pretraining 알고리즘까지 제안한다. (Layer pretraining 알고리즘에 대해서는 추후 포스팅에서 다시 다룰 예정)

 

1. RBM의 구조와 원리

RBM은 노드의 값에 따라 에너지가 정해진다. 에너지값이 낮을수록 해당 RBM은 발생확률이 높다. 따라서 RBM을 잘 학습시킨다면 원하는 특정 패턴을 높은 확률로 발생시킨다. 즉 RBM은 원하는 샘플을 높은 확률로 생성할 수 있는 생성 모델(generative model)이다. 거기에 오차 역전파 알고리즘과 같이 분류 학습을 추가로 적용시키면 분별 모델(discriminative model)로도 사용할 수 있다.

 

RBM의 구조

RBM은 무방향 바이파타이트 그래프(undirected bipartite graph)이다.

 

1. 두종류의 노드가 있는 것을 볼 수 있다. 하나는 xi로 이루어진 가시노드(visible node)이고 나머지 하나는 hj로 표시된 은닉노드(hidden node, latent node)이다. 다시 말하지만, RBM은 같은 종류의 노드 사이에는 에지(가중치)가 없어야 한다.

    1-1. 가시 노드는 외부에서 입력되는 특징 벡터값을 입력하는 노드이다. 이때 가시 노드가 이루는 벡터를 x(소문자, 볼드체)로 표기한다. i번째 가시노드의 값을 xi라고 하자. 입력되는 특징 벡터의 차원이 d라면 RBM의 가시노드는 당연히 d개이다. 그림에서는 d=3이다. 

    1-2. 은닉 노드는 가시 노드로부터 생성된 중간 결과를 출력하는 노드이다. 은닉노드가 이루는 벡터를 h로 나타낼 것이다. j번째 은닉 노드값을 hj로 표기하자, 또한 은닉노드의 수를 m이라고 하자. 그림에서 m=2이다.

2. i번째 가시노드와 j번째 은닉노드를 연결하는 에지(가중치)를 wij라고 표기한다. 

3. x=(x1, x2, x3)Th=(h1, h2)T이다. 가시노드의 바이어스는 ai로 표기하며 은닉노드의 바이어스를 bj로 표기한다. 

 

위 그림에 나오는 모든 매개변수들을 벡터로 표현해보면 다음과 같다.

W는 가중치 행렬, x는 가시노드 h는 은닉노드, a는 가시노드 바이어스, b는 은닉노드 바이어스이다. Transpose형태로 나타내는 것에 유의하자. (1 by n) 행벡터가 아니라 (n by 1) 열벡터로 나타낸 것이다.

학습이 알아내야 하는 매개변수 집합은 Θ = {W, a, b}이다.

모든 노드는 0 또는 1 두가지 값만 가진다고 가정한다. 예를들어 x=(0,1,1)T는 가능하지만 x=(0.7, 0.0, 0.4)T는 허용되지 않는다. 은닉 노드에 대해서도 마찬가지이다. 0또는 1이외의 값을 가지는 방법에 대해서는 추후에 다시 포스팅할 예정이다.

 

에너지와 확률분포

RBM의 가시층과 은닉층의 가시노드와 은닉노드가 모두 지정되면 해당 RBM의 에너지를 계산할 수 있다. 에너지 계산식은 다음과 같다.

식 10.14 (차무식아님)

 

다음, 계산된 에너지 값을 이용하여 x와 h가 발생할 결합확률 P(x, h)를 구할 수 있다.

위 : 식 10.15 // 아래 : 식 10.16

Z는 partition function으로 불리며 모든 가능한 x의 발생확률 P(x)의 합이 1이 되도록 하는 factor이다. Z를 구하는 방법에 대해서는 아래 예제에서 좀 더 설명할테니 이해가 안가도 걱정말고 일단 넘어가자.

다음, 결합확률 P(x, h)를 margianlization하여 h를 제외한 x의 발생확률 P(x)를 구할 수 있다.

식 10.17

 

결합확률분포의 marginalization개념을 모른다면 다음 포스팅을 참고하거나 구글링을 통해 이해하도록 하자.

https://biomadscientist.tistory.com/24

 

오토인코더의 모든 것-3) 도입부의 marginal likelihood에 대하여

해당 내용을 이해하기 위해서는 기초적인 수준의 조건부 확률, 베이지안 룰, 결합확률변수와 주변확률변수에 대한 이해가 있어야합니다. 1. 결합확률 변수에 대한 강의는 아래 김성범교수님의

biomadscientist.tistory.com

 

예제

위에서 설명한 식 10.14~10.17를 이용해서 P(x) 발생 확률을 알아낼 수 있다는 말을 예제를 통해서 이해해보자.

RBM 예제

다음과 같은 RBM이 있다고 하자, 먼저 x = (1, 0, 1)T이고 h = (1, 1)T일때 해당 RBM의 에너지를 계산해보자 이 RBM의 파라미터들을 모두 행렬 또는 벡터로 나타내보면 다음과 같다.

1. energy(x, h) 계산 공식은 식 10.14와 같으므로 계산해보면 -0.7이 나오는 것을 확인 할 수 있다. 이해를 위해 반드시 손으로 따라 풀어보길 바란다.

2. 다음 x와 h의 결합확률 P(x, h)를 구하기 위해 먼저 식 10.16을 이용해 Z값을 구하자

Z는 x와 h가 가질 수 있는 모든 상태들의 에너지값을 이용한다. 즉, 볼츠만 머신으로 가능한 모든 경우의 수를 전부 이용한다. 사람이라면 조금만 노드가 많아져도 불가능하지만 컴퓨터에겐 식은죽 먹기인 계산이다. 여기서는 노드가 5개 있기 때문에 총 25=32개의 경우의 수에 대하여 에너지를 계산한 뒤 식 10.16을 이용하여 Z값을 구하면 된다.

32개의 경우의 수 중 한가지가 바로 위에서 구한 경우(energy(x, h) = -0.7)가 되는 것이고 나머지 31가지 가능한 모든 경우의 수에 대해서도 동일하게 해당 RBM의 에너지값을 구한 뒤 exponential 함수를 적용해 그 값을 모두 더해주면 Z값이 된다. 에너지를 그대로 더하는게 아니라 exponential 함수를 취한 뒤에 더해주는 것임을 유의하자.

계산하면 이 제한 볼츠만 머신에서의 Z값은 40.9493이 나온다.

혹시몰라 가져온 이해를 돕기 위한 exponential 함수 그래프, 출처 : 위키피디아

 

3. 이제 식 10.15를 이용해서 P(x, h)를 구한다. 단순 대입만 하면되니까 이해하기 어렵지 않다. 여기서 P(x, h)값은 0.04918이 된다.

4. 마지막으로 식 10.17을 이용해 marginalization하여 P(x)를 구한다. 모든 가능한 은닉노드 벡터 h에 대하여 P(x, h)값을 이용해 marginalization 하면 P(x)값을 구할 수 있다. 계산하면 P(x = (1, 0, 1)T) = 0.156465가 된다.

가능한 모든 가시노드 벡터 경우의 수에 대한 발생 확률은 다음과 같다.

 

지금까지 RBM에서 각 입력벡터 P(x)의 발생 확률분포를 얻는 방법을 공부하였다. 다음 포스팅에서는 얻어진 P(x)값들로부터 RBM을 학습하는 방법에 대해서 공부해보도록 하자.

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

 

 

↓ 내용이 혹시나 도움되셨다면 좋아요 눌러주세요 꾸준한 포스팅에 매우 큰 응원이 됩니다 🥰

댓글