볼츠만 머신: 짝 평균을 데이터에서 배운다
홉필드 네트워크는 기억할 패턴을 미리 알고 있어서 결합을 헤브 규칙으로 정해 줄 수 있었다. 그런데 신경과학자가 망막의 신경세포 수십 개를 한꺼번에 기록하면, 손에 쥐는 것은 짧은 시간 구간마다 어느 세포가 발화했는지의 기록뿐이다. 누가 누구와 함께 켜지려 하는지, 곧 결합은 어디에도 적혀 있지 않다. 이미지마다 붙은 라벨들의 기록도 마찬가지다. 실험마다, 데이터셋마다 이런 기록이 새로 쌓이니 결합을 사람이 일일이 정해 줄 수는 없다. 거꾸로 데이터를 보고 결합을 배울 수는 없을까? 데이터에서 뉴런 쌍이 함께 켜지는 정도를 쟀다면, 그것만 지키는 분포는 어떤 모양일까?
역사: 애클리, 힌턴, 세즈노스키
홉필드 네트워크는 입력에서 가장 가까운 골짜기로 내려가 멈춘다. 기억을 떠올릴 때는 그것이 장점이지만, 여러 조건을 한꺼번에 가장 잘 만족하는 답을 찾을 때는 단점이 된다. 가까운 얕은 골짜기에 걸리면 더 깊은 골짜기로 갈 길이 없기 때문이다. 1985년 애클리, 힌턴, 세즈노스키는 논문에서 이 문제를 커크패트릭과 동료들의 담금질 기법(온도를 높였다가 천천히 낮추며 답을 찾는 방법)으로 풀었다. 뉴런이 이따금 에너지가 올라가는 쪽으로도 바뀌도록 잡음을 넣으면 얕은 골짜기를 빠져나올 수 있고, 그렇게 돌린 네트워크가 머무는 상태는 볼츠만 분포를 따른다. 그들은 바로 이 성질에서 결합을 데이터에서 배우는 학습 규칙을 끌어내고, 볼츠만 분포를 따른다는 뜻에서 이 네트워크를 볼츠만 머신이라 불렀다.
그 규칙을 시험한 과제 가운데 하나가 「4-2-4 부호기」다. 보이는 뉴런 네 개짜리 묶음 둘이 서로 직접 이어지지 않고 숨은 뉴런 두 개를 거쳐서만 이어져 있을 때, 모든 결합을 0에서 시작한 네트워크가 한쪽 묶음의 상태를 다른 쪽으로 전할 두 자리짜리 부호를 스스로 만들어 내는지를 본 것이다. 2024년 노벨 물리학상은 홉필드와 힌턴에게 돌아갔고, 노벨 위원회의 보도자료는 힌턴이 홉필드 네트워크를 바탕으로 볼츠만 머신을 만들었다고 소개했다. 스웨덴 왕립과학원은 힌턴이 「비슷한 구성 요소 여럿으로 이루어진 계를 다루는 과학인 통계물리학의 도구」를 썼다고 설명했다.
짝 평균만 지키는 분포
데이터에서 각 뉴런의 평균 ⟨sᵢ⟩와 두 뉴런의 곱의 평균 ⟨sᵢsⱼ⟩를 재고, 그 평균들만 지키고 나머지는 단정하지 않는 최대 엔트로피 분포를 고르면, 확률의 로그가 sᵢ와 sᵢsⱼ의 일차식이 되어 바로 이징 모형이 나온다. 편향 bᵢ는 한 뉴런 평균의 라그랑주 승수이고, 결합 Jᵢⱼ는 짝 평균의 라그랑주 승수다. 이 모델을 최대우도로 맞추는 것이 볼츠만 머신 (짝 평균을 데이터에 맞추도록 결합을 학습하는 이징 모형, Boltzmann machine)이고, 지수 모양 모델의 로그우도 기울기가 늘 그렇듯 학습 규칙은 데이터의 평균에서 모델의 평균을 뺀 것이다.
기울기에서 더하는 항을 양의 단계(positive phase), 빼는 항을 음의 단계(negative phase)라 부른다. 첫째 항은 데이터에서 함께 켜지는 쌍의 결합을 키우는 헤브 규칙 그대로이고, 둘째 항은 모델이 스스로 만들어 낸 상태에서 함께 켜지는 쌍의 결합을 줄인다. 두 항이 같아지는 곳에서 학습이 멈추므로, 학습을 마친 볼츠만 머신은 데이터의 짝 평균을 그대로 재현한다. 어려운 것은 둘째 항이다. 모델의 짝 평균을 정확히 알려면 2^N개의 배치를 모두 더해야 하므로 실제로는 깁스 샘플링(스핀 하나를 골라, 나머지를 그대로 둔 채 그 스핀만 조건부 확률로 새로 뽑는 방법) 같은 마르코프 사슬로 샘플을 뽑는데, 상전이 아래에서는 이것이 막힌다. 앞에서 본 것처럼 사슬이 한쪽 봉우리에 갇히면, 음의 단계는 모델 분포의 절반만 보고 평균을 낸다.
힌턴과 동료들은 이 어려움을 구조로 비켜 갔다. 보이는 유닛끼리, 숨은 유닛끼리는 결합을 두지 않는 제한된 볼츠만 머신(RBM)에서는 보이는 유닛을 고정하면 숨은 유닛들이 서로 독립인 두 상태짜리 변수가 되어 분배함수가 곱으로 쪼개지고, 반대쪽도 마찬가지라 한 층 전체를 한꺼번에 샘플링할 수 있다. 힌턴(2002)의 대조 발산(contrastive divergence)은 음의 단계를 데이터에서 출발한 짧은 사슬 몇 걸음으로 대신해 RBM 학습을 실용적으로 만들었다.
ML에서: 신경세포 집단의 짝 모형
볼츠만 머신은 뇌를 기록한 데이터를 설명하는 데도 쓰인다. 짧은 시간 구간마다 각 신경세포가 발화했는지를 ±1로 적으면, 세포 쌍 사이의 상관은 대부분 약하다. 그래서 세포들을 독립으로 보는 모델이 괜찮아 보이지만, 여러 세포가 한꺼번에 발화하거나 모두 침묵하는 구간은 독립 모델의 예측보다 훨씬 자주 나타난다. 슈나이드만, 베리, 세게브, 비알렉(2006)은 논문 요약에서 이렇게 적었다. 「척추동물의 망막에서 뉴런 쌍 사이의 약한 상관이 10개 이상의 뉴런이 보이는 강하게 집단적인 반응과 함께 존재함을 보인다. 이 집단 행동은 관찰된 짝 상관을 포착하되 더 높은 차수의 상호작용은 가정하지 않는 모델로 정량적으로 설명된다. 이 최대 엔트로피 모델은 이징 모델과 같다.」
이 장을 마친 독자는 이 문장을 「짝 평균만 맞춘 볼츠만 머신이 셋 이상의 뉴런이 함께 움직이는 확률까지 맞혔다」로, 그리고 「약한 결합도 많이 모이면 집단 전체를 한 방향으로 끌 수 있다」로 읽게 된다. 아래 문제 15에서 뉴런 다섯 개짜리 작은 예로 직접 확인한다.
문제 14. 금요일의 단체 모임
친구 네 명이 저녁 모임을 연다. 날의 25%인 금요일에는 각자 60%, 나머지 날에는 각자 20% 확률로 나오고, 같은 날 안에서는 서로 상관없이 정한다. (가) 한 사람이 나오는 날의 비율은 얼마인가? (나) 네 명이 모두 나오는 날의 비율을, 한 사람의 비율로 네 명을 따로 계산한 값과 비교하라. (다) 친구들은 서로 따라 나오는가?

(가)는 0.25 × 0.6 + 0.75 × 0.2 = 0.30이에요. (나)는 한 사람이 0.30이니까 0.3⁴ = 0.0081, 0.81%요.

같은 날 안에서만 서로 상관없다고 했잖아. 금요일에는 다 같이 잘 나오니까 날을 먼저 나눠야지. 0.25 × 0.6⁴ + 0.75 × 0.2⁴ = 0.0324 + 0.0012 = 0.0336, 3.36%야. 네 배 넘게 차이 나.

(다)요. 누가 누구를 따라 나왔죠?

아무도 안 따라 나왔어요. 금요일이라는 공통 원인이 있을 뿐인데, 날을 모르고 출석만 보면 서로 끌어당기는 것처럼 보이는 거예요.

비 오는 날 길에서 우산이 한꺼번에 펴지는 걸 보고 사람들이 서로 따라 편다고 하면 안 되는 거네요.
문제 15. 짝 평균만 맞춘 뉴런 다섯 개
뉴런 다섯 개를 짧은 시간 구간마다 기록했다. 각 뉴런은 구간의 18%에서 발화하고(+1, 발화하지 않으면 −1), 두 뉴런 사이의 상관계수는 0.17로 약하다. 동시에 발화한 뉴런 수가 0, 1, 2, 3, 4, 5개인 구간의 비율은 0.479, 0.294, 0.121, 0.069, 0.032, 0.0063이다. (가) 뉴런들을 독립으로 보는 모델의 예측과 비교하라. (나) 볼츠만 머신(편향과 짝 결합)을 학습시켜 같은 비율을 예측하라. (다) 학습에 쓰지 않은 세 뉴런의 곱의 평균 ⟨s₁s₂s₃⟩를 비교하라. (라) 사실 이 데이터에는 뉴런 사이의 결합이 없다. 구간의 20%에만 들어오는 공통 자극이 각 뉴런의 발화 확률을 0.1에서 0.5로 올렸을 뿐이다. 그런데도 짝 모형이 잘 맞는 이유는 무엇인가?

(가)부터요. 독립이면 이항분포라서 0.371, 0.407, 0.179, 0.039, 0.0043, 0.00019예요. 다섯 개가 한꺼번에 발화하는 구간이 데이터에서는 0.0063인데 독립 모델은 0.00019라서 33배나 적게 봐요. 모두 침묵하는 구간도 0.479 대 0.371이고요.

상관계수가 0.17밖에 안 되는데, 다 같이 발화하는 확률은 30배 넘게 차이가 나네.

금요일 모임에서 넷이 다 나오는 날을 따로 계산하면 네 배 넘게 적게 봤던 거랑 같은 모양이네요.

그럼 (나)요. 학습 규칙부터 적어 봐요.

데이터에서 함께 발화하는 쌍의 결합을 키우는 거니까 헤브 규칙이죠. 홉필드처럼 한 번에 b = ⟨sᵢ⟩_데이터 = −0.64, J = ⟨sᵢsⱼ⟩_데이터 = 0.512로 두고 모델을 계산했어요. 그랬더니 모두 침묵할 확률이 0.973이고, 모델의 짝 평균이 0.979예요. 데이터는 0.512인데요.

너무 많이 간 거네. 그 방향으로 더 가면 더 나빠지겠다.

그래서 다시 했어. 모델 쪽 평균은 배치를 모두 더해야 해서 어렵다고 했으니까 그 항은 빼고, 학습률 0.1로 데이터 쪽 항만 계속 더해 봤어. 쉰 걸음이면 J = 2.56이 되고, 모든 뉴런이 늘 침묵하는 상태 하나에 확률이 전부 몰려. 멈추질 않아.

어렵다고 뺀 그 항은 로그우도의 기울기에서 무슨 일을 하던 항이죠?

학습을 멈추게 하는 항이요. 기울기는 ⟨sᵢsⱼ⟩_데이터 − ⟨sᵢsⱼ⟩_모델이라서, 모델이 데이터의 짝 평균을 넘어서면 결합을 줄이는 쪽으로 돌아와요. 데이터 항만 쓰면 기울기가 늘 같은 양수라 멈출 곳이 없고요. 상태가 2⁵ = 32개뿐이니까 모델 평균은 정확히 더해서 구할 수 있어요.

맞힌 문제에 점수만 주고 틀린 문제는 하나도 안 깎는 채점표였네요, 제 헤브 규칙은. 그러면 결국 모두 만점이 되죠. 모델 항을 넣고 다시 돌리니까 b = −0.392, J = 0.167에서 멈춰요. 발화 수별 비율은 0.479, 0.288, 0.135, 0.062, 0.027, 0.0095라서, 다섯 개가 한꺼번에 발화하는 구간도 데이터의 0.0063과 자릿수가 맞아요. 독립 모델은 30배 넘게 틀렸는데요.

(다)는 데이터가 −0.410, 짝 모형이 −0.402, 독립 모형이 −0.262예요. 세 뉴런의 곱은 학습에 넣지도 않았는데 짝 모형이 거의 맞혀요. 엔트로피로 보면 독립 모형의 엔트로피와 데이터의 엔트로피 사이의 차이 가운데 97.9%를 짝 모형이 메워요.

이제 (라)요. 데이터에는 뉴런 사이의 결합이 전혀 없었어요.

네? 결합이 없는데 J = 0.167이 나왔다고요? 그럼 모델이 틀린 거 아니에요?

공통 자극이 들어오면 다섯 개가 한꺼번에 발화하기 쉬워지니까, 자극을 모르고 뉴런만 보면 뉴런들이 서로 끌어당기는 것처럼 보이는 거야. 숨은 변수를 합쳐 없애면 남은 변수들 사이에 겉보기 에너지(유효 에너지)가 생긴다는 거, 자유에너지 배울 때 봤잖아.

그래요. 결합 J는 「뉴런 i가 뉴런 j에게 직접 신호를 보낸다」는 뜻이 아니라, 짝 평균을 지키게 하는 라그랑주 승수예요. 숨은 공통 자극을 합쳐 없앤 효과는 원래 셋 이상의 뉴런을 한꺼번에 묶는 항까지 만들지만, 이 데이터에서는 그 대부분을 짝 결합이 대신할 수 있었던 거고요. 슈나이드만과 동료들이 망막에서 본 것도 이런 모습이에요. 짝 상관은 약한데 짝 모형이 집단 반응을 설명했고, 논문 요약에는 「더 큰 네트워크는 상관 효과가 완전히 지배할 것」이라는 예측도 적혀 있어요.

결합 하나하나는 약해도 다섯 개가 서로 조금씩 끌어당기니까, 하나가 발화하면 나머지가 다 같이 조금씩 따라오고, 그게 모이면 다 같이 발화하는 확률이 30배로 뛰는 거네요. 모든 쌍을 묶은 스핀 100개에서 쌍 하나의 결합은 J/100뿐인데 전체가 한쪽으로 쏠렸던 것처럼요.

그럼 뉴런이 수백 개가 되면 이 작은 결합들이 모여서 임계점 근처까지 갈 수도 있겠네. 약한 결합이라고 얕보면 안 되겠다.