Boltzman machine!

Boltzman machine.

Featured image

맨 처음에는 베낀 포스팅을 하겠다. ㅠㅠ

출처 :https://m.blog.naver.com/PostView.nhn?blogId=msnayana&logNo=220691853708&proxyReferer=https:%2F%2Fwww.google.com%2F

볼츠만 머신(BM)

딥러닝의 알고리즘 중에 제한된 볼츠만 머신(RBM)과 DBN이 상당한 부분을 차지한다.

볼츠만 머신(BM)에서 층간 연결을 없애서 단순화시킨 것이 제한된 볼츠만 머신(RBM)인데 정작 볼츠만이라는 이름이 사용된 이유부터 알아야 이해가 된다.

대부분의 제한된 볼츠만 머신(RBM) 설명이 수식으로 채워져 그 의미를 초보자는 알 수가 없다.

볼츠만(Ludwig Boltzmann)에서 설명을 시작하자.

볼츠만은 독일 물리학자(오스트리아 태생 1844~1906)로 열역학법칙으로도 유명하다.

또한 엔트로피와 확률이 로그로 연결된다는 수식을 처음으로 유도해 냈다.

image-20200917164226228

우주의 에너지는 항상 보존되고(어떤 변화 속에서도) 변화의 방향성은 항상 증가이다(엔트로피라는 무질서도의 증가) 현상을 수식으로 유도하여 열이 더운 곳에서 차가운 곳으로만 흐른다 같은 진리를 수식으로 도출했다.

추가적으로 설명하면

우리가 아직 보지 못한 열이 차가운 곳에서 더운 곳으로 흐르는 현상은

확률적으로 극히 낮아 우리의 관측에 거의 잡히지 않는다고 설명하며

반대로 높은 온도에서 낮은 온도로 흐르는 현상은 그 방향의 변화가 지극히 높은 확률로 존재한다는 것

이것을 일반화 시키면

우주의 엔트로피가 증가하는 방향으로 된다는 것은

엔트로피의 증가하는 변화가 일어날 확률이 지극히 높다는 것이다.

어떤 한 상태(상태 1)에서 다른 한 상태(상태 2)로의 변화가 항상 일어나기 위해서는

상태 2가 상태 1보다 확률이 지극히 높은 상태여야만 한다.

그런데 이 변화에서 상태 2는 상태 1보다 엔트로피가 높은 상태이므로,

결국 엔트로피가 확률과 직접 연결되어 있고,

어떤 상태에 대한 엔트로피가 그 상태에 대한 확률의 척도가 될 것임을 알 수 있다.

볼츠만은 주어진 상태에 대한 엔트로피가

그 상태에 해당하는 분자들의 배열 방법 수의 로그(log)에 비례함을 보일 수 있었고,

확률이 배열 방법 수에 비례하기 때문에 이는 엔트로피가 확률의 로그에 비례함을 의미했다.

엔트로피를 이처럼 확률을 통해 정의해 줌으로써

열역학 제 2법칙을 확률의 법칙의 직접적인 표현으로 만들어 주었는데

어떤 상태에 대한 엔트로피는 그 상태의 확률을 나타내주는 척도이기도 하다.

여기서 중요한 것은 확률이 열과 같은 엔트로피와 연결된다는 것.

또한 발생빈도(확률)이 로그스케일로 엔트로피와 관계한다는 것

이렇게

엔트로피가 자연 변화의 방향을 표시하는 개념으로 사용될 수 있다.

아래 그림에서

중력을 이용하여 작은 것은 아래로 큰 것은 위로 정렬시키려면 컵을 살살 흔들어 줘야 한다.

처음에는 세게 흔들고 안정화되면 살살 흔들어 구슬의 움직임이 거의 0이면 멈춘다.

image-20200917164958320

위 그림을 보면

컵을 살살 흔들면 작은 구슬은 밑으로 가고 큰 것은 위로 하여 정렬된다.

중간 영역에 머물 때 산 전체를 살살 흔드는 작업을 하고 만일 큰 것이 가로 막으면 탁하고 흔들어야 한다.

그래야 작은 것이 빠진다. 이렇게 정렬되면 각 구슬들은 중력에서 가장 안정 지점들에 놓인다.

비슷하게 금속을 가공하면 내부 응력이 쌓이고 결함이 증가하는데

이렇게 되면 쉽게 금속이 부러지거나 약하여 큰 결정을 유도하는 작업인 담금질을 한다.

재료를 일정 온도까지 일정 시간 가열을 유지한 후 서서히 냉각시키면,

변태로 인해 최초의 결정 입자가 붕괴되고 새롭게 미세한 결정 입자가 조성되어

내부 응력이 제거될 뿐만 아니라 재료가 연화된다.

이러한 목적을 위한 열처리 방법을 풀림(annealing)이라 한다.

이렇게 풀림(annealing)의 처리를 하면

열을 가한 후 서서히 내려가면서 처음 위치의 원자가 열에 의해 위치에서 떨어져 방황하고

서서히 식히는 과정에서 처음보다 더 낮은 에너지 격자를 찾을 확률이 높게 만든다.

이것은 응력과 결함을 제거시키는 전통적 야금학에서 담금질이다.

온도를 너무 급격히 내리면 지역 최소점에 잘 빠지고 느리게 내리면 시간이 너무 걸린다.

칼을 만들 때 식히고 두르기고를 반복하여 강한 칼을 만드는 원리와 같다.

컴퓨터에서 이러한 야금학의 어닐링을 하려면 어떻게 할까?

아주 많은 경우의 수를 가진 조합 최적화 (Combinatorial Optimization) 문제 같은 경우에

컴퓨터 시뮬레이션에 의하여 위의 담금질과 같은 방법으로 시도해 볼 수 있는데

이 방법을 Simulated Annealing이라고 한다.

위의 경우처럼 온도를 서서히 내리면

결국 서서히 식히고 간간히 내려왔다가 다시 올라가는 식으로 하면 시간이 매우 많이 걸린다.

이것은 알고리즘 구현시 필요한 엄청나게 많이 걸리는 시간을

대규모 병렬처리를 기반으로 하는 계산 모델을 사용하여 많이 줄일 수 있는데

이러한 모델 중의 하나가 바로 볼츠만 머신(Boltzmann Machine)이다.

멀리 돌아서

드디어 볼츠만이라는 이름이 등장했다.

예를 좀 더 들어보자.

아래처럼 지역 최대점이 아닌 최고 높은 꼭대기를 찾는 경우라면 어떨까?

울창한 산에서 길을 잃은 경우처럼

image-20200917165829227

주변이 하나도 보이지 않으면 무조건 현재 위치보다 높은 곳으로 이동해야 한다.

이렇게 오르면 산봉우리가 다수이면 1/해당 봉우리수로 최정상의 확률이 나온다.

지역 최대점을 벗어나려면 위처럼 컵을 흔드는 역할을 추가해야 하는데

산봉우리에 도달하면 가끔씩 올라가지 않고 조금 내려오는 것이다.

옆 그림처럼

이렇게 반복하면 시간은 많이 걸리지만 최고봉을 오를 확률이 가만히 머무는 것보다 높다.

볼츠만 머신(Boltzman Machine)은

볼츠만이 만든 것이 아니고 1984년 Geoffrey E. Hinton과 Terrence J. Sejnowski 에 의해 논문으로 발표된 것으로 홉필드 신경망에 확률적인 동작 규칙을 넣어 일반화한 모델로 알려졌다.

즉, 볼츠만의 확률과 엔트로피의 개념 수식이 구현된 신경망에서 비슷하다하여 붙인 이름이다.

볼츠만 머신은 신경망과 위에서 이야기한 Simulated Annealing을 엮어 신경망의 일반적인 단점인 지역해로 빠지는 문제를 대부분 해결한 모델로써

볼츠만 머신 이전에 이미 알려진 홉필드 네트워크(1982년 존 홉필드에 의해 발표)의 단점을 보완한 모델인데 홉필드 네트워크는 신경망에 처음으로 에너지 함수를 도입했는데 동작 규칙은 네트워크 에너지를 감소하는 방향으로 동작하고 이렇게 하여 최적해를 찾는다.

비슷하게 볼츠만 머신도 네트워크 에너지를 감소시키는 방향으로 동작하지만 어닐링 기법처럼 간간히 에너지가 증가하는 확률을 도입하여 지역해를 벗어나게 한다.

위에서 자꾸 네트워크 에너지를 줄인다는 건 무슨 소리일까?

실제 출력과 기대 출력의 차이인 오차를 줄인다고 보면 된다.

목적이 원하는 출력값이 있을테고 이것을 피드백을 통하여 줄여 나갈텐데

결국 오차가 0(제로)인 지점이 최소 에너지 상태인 것이다.

신경망에 구성되는 형태는 Visible과 Hidden 층만으로 구성되지만

아래 그림처럼 요소 서로간에는 전체 다 연결되는 형태이다.

image-20200917171016160

대부분 구현이 쉬운 제일 오른쪽 형태로 구현한다.