11장 — 이징 모형과 상전이

이 장의 물음

뉴런 100개짜리 홉필드 네트워크를 만들어 보자. 뉴런마다 켜짐(+1)과 꺼짐(−1) 두 상태만 있고, 무작위로 만든 ±1 패턴 다섯 개를 「함께 켜지는 뉴런 쌍의 결합을 키운다」는 헤브 규칙으로 결합 행렬에 새긴다. 결합(coupling)은 두 뉴런이 같은 쪽으로 켜지도록 묶는 계수로, 신경망의 가중치 자리에 선다. 그런 다음 첫 번째 패턴에서 100개 가운데 30개를 뒤집어 넣고, 뉴런을 하나씩 골라 다른 뉴런들이 보내는 입력 합의 부호로 맞추는 일을 되풀이한다. 한 바퀴를 돌고 나면 뒤집혔던 30개가 모두 제자리로 돌아와 원래 패턴이 그대로 나오고, 그동안 네트워크의 에너지는 −7.2에서 −49.0으로 내려간 뒤 더 움직이지 않는다. 신기한 것은 패턴을 통째로 뒤집어서 넣었을 때다. 이때 네트워크는 원래 패턴이 아니라 모든 부호가 반대인 패턴으로 모이는데, 그것도 기억된 상태라는 듯 에너지가 똑같이 −49.0이다.

저장하는 패턴을 늘리면 기억은 무너지는데, 무너지는 모양이 흥미롭다. 입력의 10%를 뒤집어 넣고 복원된 결과가 원래 패턴과 얼마나 겹치는지(겹침, 1이면 완전 복원)를 재면, 패턴 수가 뉴런 수의 0.1배일 때는 거의 완벽하던 복원이 0.2배에서는 크게 무너지고, 그 무너짐은 뉴런 100개보다 1000개에서 더 갑작스럽다. 결합을 정해 주었을 뿐인데 뉴런들은 어떻게 한 패턴으로 함께 모이며, 기억은 왜 조금씩이 아니라 한꺼번에, 그것도 네트워크가 클수록 더 갑자기 무너질까?

같은 일은 가장 단순한 계에서도 일어난다. 위나 아래만 향할 수 있는 스핀(spin, 원자 하나가 품은 작은 자석의 방향) 100개의 모든 쌍을 같은 결합으로 묶어 두면, 결합이 약할 때는 스핀 전체의 평균 방향이 0 근처에 모이지만 결합이 어느 정도를 넘으면 평균 방향의 분포가 양수와 음수 두 곳으로 갈라진다. 에너지는 모든 스핀을 뒤집어도 그대로인데 계는 둘 중 한쪽을 골라 머문다. 홉필드 네트워크가 패턴과 그 반전을 함께 기억하는 것도 이와 닮았다. 이 장은 다음 물음들에 차례로 답한다.

두 봉우리: 서로 끌어당기는 스핀들의 평균 방향

동전 N개를 던지면 앞면 비율은 N이 커질수록 절반 근처에 몰린다. 동전들이 서로 아무 영향을 주지 않으니 앞면과 뒷면이 고르게 섞이기 때문이다. 그런데 동전 대신 이웃과 같은 방향을 좋아하는 작은 자석들을 늘어놓으면 어떻게 될까? 서로 끌어당기는 힘이 아주 약해도 여전히 절반 근처에 몰릴까?

역사: 자석이 자성을 잃는 온도

쇠붙이 자석을 불에 달구면 어느 온도에서 자성이 사라지고, 식히면 다시 자석이 될 수 있다. 1895년 피에르 퀴리는 박사 논문에서, 강한 자석과 정밀한 저울로 여러 물질을 온도를 바꿔 가며 잰 결과를 바탕으로 강자성체가 일정한 온도 위에서 자성을 잃는다는 것을 정리했고, 이 온도는 그의 이름을 따 퀴리 온도라 부른다. 철은 약 770°C다. 원자 하나하나가 작은 자석이라는 것까지는 받아들여졌지만, 이웃한 원자 자석들이 같은 방향을 좋아한다는 단순한 규칙만으로 이런 급격한 변화가 설명되는지는 오랫동안 풀리지 않았다.

스핀 100개

실제 자석의 원자는 바로 이웃과만 영향을 주고받는다. 그런데 이웃끼리만 묶으면 어느 스핀이 누구 옆에 있는지에 따라 에너지가 달라져서, 배치를 하나하나 따져야 한다. 그래서 가장 셈이 쉬운 경우부터 보자. 모든 쌍을 똑같이 묶으면 에너지가 위를 향한 스핀의 개수만으로 정해진다.

위(+1)나 아래(−1)만 향할 수 있는 스핀 100개가 있고, 모든 쌍이 같은 방향일 때 에너지가 조금씩 낮아지도록 묶여 있다고 하자. 쌍 하나가 같은 방향이면 에너지가 J/100만큼 내려가고 반대 방향이면 그만큼 올라간다. 결합을 스핀 수로 나눈 까닭은 쌍의 수에 있다. 스핀이 100개면 쌍은 4950개이고, 쌍의 수는 스핀 수의 제곱에 비례해 늘어난다. 쌍마다 J를 그대로 주면 스핀 하나가 나머지 99개에게서 받는 끌림이 99J가 되어 스핀을 늘릴수록 끝없이 세지지만, J/N으로 나눠 두면 그 끌림이 99J/100, 곧 스핀 수와 상관없이 J 남짓으로 일정하다. 스핀들이 가질 수 있는 배치(스핀 100개가 각각 위(+1)인지 아래(−1)인지 적은 목록 하나, 예: (+1, −1, +1, …). ML의 미니배치와는 다른 말)는 2¹⁰⁰, 약 1.27 × 10³⁰가지이고, 온도 T의 열원과 맞닿아 있으면 각 배치의 확률은 e^(−βE)에 비례한다. 알고 싶은 것은 스핀 전체의 평균 방향, 곧 위를 향한 비율에서 아래를 향한 비율을 뺀 m이 어떤 분포를 갖는가이다.

2¹⁰⁰개를 하나씩 더할 수는 없지만 이 계에서는 그럴 필요가 없다. 모든 쌍이 같은 결합으로 묶여 있으므로 에너지는 어느 스핀이 위를 향하는지가 아니라 몇 개가 위를 향하는지에만 달려 있다. 위를 향한 스핀이 n개이면 평균 방향은 m = 2n/N − 1이고, 그런 배치의 수는 N개 가운데 n개를 고르는 이항계수다. 그래서 배치들을 n에 따라 101개의 무리로 묶으면 무리마다 (배치 수) × (볼츠만 인자)만 계산하면 된다.

p(m)=1Z W(n) e−βE(n),W(n)=(Nn),E(n)=−JN∑i<jsi sj=−J2(Nm2−1)\textcolor{#e377c2}{p}(\textcolor{#dd6677}{m}) = \frac{1}{\textcolor{#667733}{Z}}\, \textcolor{#d62728}{W}(\textcolor{#17becf}{n})\, e^{-\textcolor{#8c564b}{\beta} \textcolor{#ff7f0e}{E}(\textcolor{#17becf}{n})}, \qquad \textcolor{#d62728}{W}(\textcolor{#17becf}{n}) = \binom{\textcolor{#1f77b4}{N}}{\textcolor{#17becf}{n}}, \qquad \textcolor{#ff7f0e}{E}(\textcolor{#17becf}{n}) = -\frac{\textcolor{#b8860b}{J}}{\textcolor{#1f77b4}{N}} \sum_{i<j} \textcolor{#1b9e77}{s_i}\, \textcolor{#1b9e77}{s_j} = -\frac{\textcolor{#b8860b}{J}}{2}\big(\textcolor{#1f77b4}{N}\textcolor{#dd6677}{m}^2 - 1\big)
p(m)스핀 전체의 평균 방향이 m일 확률m평균 방향 = (위를 향한 비율) − (아래를 향한 비율) = 2n/N − 1n위를 향한 스핀의 수W(n)위를 향한 스핀이 n개인 배치의 수E(n)그 배치들의 에너지 (무리 안에서는 모두 같다)J결합 계수 (쌍마다 J/N)sii번째 스핀의 방향 (+1 또는 −1)N스핀의 수 (여기서는 100)β, Z역온도, 분배함수\begin{array}{ll} \textcolor{#e377c2}{p}(\textcolor{#dd6677}{m}) & \text{스핀 전체의 평균 방향이 m일 확률} \\ \textcolor{#dd6677}{m} & \text{평균 방향 = (위를 향한 비율) − (아래를 향한 비율) = 2n/N − 1} \\ \textcolor{#17becf}{n} & \text{위를 향한 스핀의 수} \\ \textcolor{#d62728}{W}(\textcolor{#17becf}{n}) & \text{위를 향한 스핀이 n개인 배치의 수} \\ \textcolor{#ff7f0e}{E}(\textcolor{#17becf}{n}) & \text{그 배치들의 에너지 (무리 안에서는 모두 같다)} \\ \textcolor{#b8860b}{J} & \text{결합 계수 (쌍마다 J/N)} \\ \textcolor{#1b9e77}{s_i} & \text{i번째 스핀의 방향 (+1 또는 −1)} \\ \textcolor{#1f77b4}{N} & \text{스핀의 수 (여기서는 100)} \\ \textcolor{#8c564b}{\beta},\ \textcolor{#667733}{Z} & \text{역온도, 분배함수} \end{array}

온도는 kT = 1로 두고 J만 바꾸자. 볼츠만 인자에는 βJ라는 조합만 들어가므로 J를 키우는 것은 온도를 낮추는 것과 같다. N = 100에서 βJ를 바꿔 가며 m의 분포를 계산하면 다음과 같다.

βJ 봉우리 위치 P(−0.1 < m < 0.1)
0.5 0 0.476
0.9 0 0.251
1.0 ±0.18 0.165
1.1 ±0.54 0.075
1.5 ±0.88 0.000

βJ = 0.5에서는 평균 방향 0 근처에 절반가량이 몰려 있고, 1.5에서는 확률이 가장 큰 곳이 ±0.88로 옮겨 가면서 0 근처가 거의 비어 버린다. 그 사이의 변화는 완만해 보인다. βJ가 0.9일 때 봉우리는 아직 0에 있고, 1.1이면 이미 ±0.54에 있다. 봉우리가 갈라지는 정확한 자리가 있기는 한 것일까? 스핀 수를 늘려 같은 계산을 해 보자.

모든 쌍을 같은 결합 J/100으로 묶은 스핀 100개의 평균 방향 m의 분포를 정확히 센 것. βJ = 0.5, 0.9에서는 봉우리가 0에 있고, 1.0에서 꼭대기가 평평해진 뒤 1.1이면 ±0.54, 1.5이면 ±0.88로 갈라진다. 회색 띠(−0.1 < m < 0.1)의 확률은 0.476, 0.251, 0.165, 0.075, 0.000이다.
모든 쌍을 같은 결합 J/100으로 묶은 스핀 100개의 평균 방향 m의 분포를 정확히 센 것. βJ = 0.5, 0.9에서는 봉우리가 0에 있고, 1.0에서 꼭대기가 평평해진 뒤 1.1이면 ±0.54, 1.5이면 ±0.88로 갈라진다. 회색 띠(−0.1 < m < 0.1)의 확률은 0.476, 0.251, 0.165, 0.075, 0.000이다.
N βJ = 0.9의 P(−0.1 < m < 0.1) βJ = 1.1의 P(−0.1 < m < 0.1) βJ = 1.1의 봉우리 위치
100 0.251 0.075 ±0.540
1000 0.690 0.001 ±0.506
10000 0.999 0.000 ±0.503

스핀이 많아질수록 βJ = 0.9에서는 거의 모든 확률이 0 근처로 모이고, 1.1에서는 0 근처가 완전히 비면서 봉우리가 ±0.503에 자리를 잡는다. 두 값의 차이는 0.2에 불과한데 스핀 1만 개에서는 전혀 다른 계가 되었으니, 둘 사이 어딘가에 경계가 있는 셈이다. 그 경계는 어디이고, 무엇이 스핀들을 두 무리로 나누는 것일까?

직접 움직여 보기평균 방향 m의 분포새 창에서 열기 ↗

문제 1. 스핀 네 개의 배치를 손으로 세기

모든 쌍을 같은 결합 J/4로 묶은 스핀 네 개가 βJ = 2인 상태에 있다. (가) 위를 향한 스핀 수 n = 0, 1, 2, 3, 4마다 배치 수 W(n)과 에너지 E(n)을 적어라. (나) 평균 방향 m이 −1, −0.5, 0, 0.5, 1일 확률을 구하라. (다) 결합이 없을 때(βJ = 0)와 견주면 확률은 어디로 옮겨 갔는가?

김민준 M11
김민준

에너지는 −(J/2)(Nm² − 1)에 넣으면 되죠. m = ±1이면 −1.5J, ±0.5면 0, 0이면 +0.5J예요. 볼츠만 인자가 e³ = 20.09, 1, e⁻¹ = 0.368이니까 합이 1이 되게 나누면 m = 0일 확률은 0.368/(2 × 20.09 + 2 + 0.368) = 0.0086, 1%도 안 돼요.

선생님 T01
선생님

결합을 없애면 민준 학생의 계산으로 m = 0일 확률이 얼마가 되죠?

김민준 M01
김민준

볼츠만 인자가 모두 1이니까 다섯 경우가 똑같이 0.2… 어, 동전 네 개를 던져서 앞면이 둘 나올 확률은 6/16 = 0.375인데요.

이서연 S06
이서연

동전 네 개에서 앞면이 두 개인 배치가 여섯 가지잖아. 위를 향한 스핀이 n개인 무리는 배치 하나가 아니라 W(n)개를 묶은 거야. 1, 4, 6, 4, 1을 곱해야 해.

김민준 M04
김민준

무리 하나를 배치 하나로 셌네요. 다시 하면 20.09, 4, 2.21, 4, 20.09이고 합이 50.38이니까, m = 0이 0.044, ±0.5가 합쳐서 0.159, ±1이 합쳐서 0.797이에요.

선생님 T01
선생님

결합이 없을 때와 나란히 놓으면 무엇이 달라졌어요?

이서연 S07
이서연

결합이 없으면 0.375였던 m = 0이 0.044로 줄고, 합쳐서 0.125였던 양 끝이 0.797로 늘었어요. 배치 수는 가운데가 끝의 여섯 배인데, 볼츠만 인자는 끝이 가운데의 e⁴ ≈ 55배라서 뒤집힌 거예요. 그런데 위쪽 끝과 아래쪽 끝은 0.399씩 똑같네요. 확률이 한쪽 끝이 아니라 양쪽 끝으로 나뉘어 옮겨 가요.

김민준 M12
김민준

조교가 분반 평균들로 학년 평균을 낼 때 학생 수를 안 곱하고 그냥 더해서 나눈 거랑 같은 실수였네요. 30명 분반이랑 5명 분반을 똑같이 친 거죠.