스핀이 둘일 때 찾은 이 규칙은 스핀이 수백 개인 계에서도 그대로 성립할까? 그리고 그렇게 고른 곱 분포의 자유에너지는 참 자유에너지와 어떤 관계에 있을까? 스핀 N개가 짝마다 결합 Jᵢⱼ, 스핀마다 편향 bᵢ로 묶인 이징 모형 E(s) = −Σ_{i<j} Jᵢⱼsᵢsⱼ − Σᵢbᵢsᵢ에 같은 일을 해 보자. Σ는 아래에 붙은 범위의 항을 모두 더하라는 기호이고, 아래에 i < j를 단 Σ는 스핀 짝을 한 번씩만 모두 더한다는 뜻이다. 곱 분포 q(s) = q₁(s₁)q₂(s₂)⋯q_N(s_N)에서는 서로 다른 스핀의 곱의 평균이 평균의 곱이 되므로 ⟨sᵢsⱼ⟩_q = mᵢmⱼ이고, 자유에너지는 평균 방향 mᵢ들만의 함수가 된다. 이것을 mᵢ로 미분해 0으로 놓으면 스핀 둘일 때와 같은 모양의 조건이 스핀마다 하나씩 나온다.
부등식은 F[q] − F = kT × D_KL(q‖p) ≥ 0에서 오고, 양변에 −β를 곱하면 ln Z ≥ −βF[q], 곧 계산할 수 있는 ln Z의 아래쪽 한계가 된다. 이처럼 서로 독립인 변수들의 곱 분포 가운데 F[q]가 가장 낮은 것으로 볼츠만 분포를 대신하는 것을 평균장 근사 (곱 분포 안에서 자유에너지를 최소화해 볼츠만 분포를 대신하는 근사, mean-field approximation)라 한다. 오른쪽 식에서는 구하려는 값 mᵢ가 양변에 모두 들어 있어서, 답은 이 식에 넣었을 때 스스로와 맞아떨어지는 값이어야 한다. 그래서 이런 식을 자기 일관 방정식(self-consistent equation)이라 부른다. 여기서 자기는 자석의 자기(磁氣)가 아니라 「스스로」라는 뜻이다.
자기 일관 방정식 m = tanh(βJm)을 그림으로 푸는 법(편향 0). 곧은 선 y = m과 곡선 y = tanh(βJm)이 만나는 곳이 해다. βJ = 0.5에서는 원점에서만 만나고, βJ = 1에서 곡선의 원점 기울기가 곧은 선과 같아지며, βJ = 1.5에서는 원점 말고도 ±0.859에서 만난다. 곡선이 곧은 선보다 가팔라지는 순간 0이 아닌 해가 생긴다.
ML에서: 볼츠만 머신의 평균장 학습
볼츠만 머신의 학습 규칙은 결합 Jᵢⱼ를 ⟨sᵢsⱼ⟩_데이터 − ⟨sᵢsⱼ⟩_모델에 비례해 바꾼다. 빼는 둘째 항, 곧 모델 쪽 평균을 구하는 음의 단계(negative phase)에는 모델의 샘플이 필요한데, 상전이(조건이 한 값을 지날 때 계의 전형적인 상태가 갑자기 바뀌는 현상, phase transition)가 일어나는 온도 아래에서는 샘플링하는 마르코프 사슬이 한쪽 봉우리에 갇혀 모델 분포의 절반만 본다. 샘플링은 무척 느리기도 했다.
1987년 텍사스 오스틴의 기업 연구소 MCC(Microelectronics and Computer Technology Corporation)에 있던 카스텐 피터슨과 제임스 앤더슨은 이 항을 평균장으로 대신했다. 그들은 논문 요약에 「시간이 많이 드는 상관의 확률적 측정을 결정론적 평균장 방정식의 해로 대체한다」고 쓰고, XOR(두 입력이 다를 때만 1을 내는 문제)·인코더·선 대칭 문제에서 10~30배 빨라졌다고 보고했다. 자기 일관 방정식으로 mᵢ를 구하고 짝 평균마저 두 평균의 곱으로 한 번 더 근사해 ⟨sᵢsⱼ⟩_모델 ≈ mᵢmⱼ로 두면(논문의 표기로는 VᵢVⱼ) 샘플링이 필요 없고, 그들은 이 방정식이 본래 병렬적이어서 병렬 계산기에 곧바로 올릴 수 있다는 점도 강조했다.
평균장은 샘플링하지 않으니 사슬처럼 갇히지는 않지만, 봉우리가 둘인 모델에서 처음부터 한 봉우리를 골라 답한다는 점에서는 같은 절반만 본다. 게다가 mᵢmⱼ에는 두 뉴런이 평균에서 함께 벗어나는 몫, 곧 공분산이 들어 있지 않다.
문제 4. 문턱을 갓 넘은 결합
편향이 없는 스핀 둘의 평균장 방정식 m = tanh(βJm)를 생각하자. (가) βJ = 1.1과 1.01에서 양수인 해를 되풀이 계산으로 구하라. (나) 0 근처에서 tanh x ≈ x − x³/3을 쓰면 βJ가 1보다 조금 클 때 해가 √(3(βJ − 1))쯤임을 보이고 (가)와 견주라. (다) 스핀 하나당 −βF[q] = βJm²/2 + H((1 + m)/2)에서, 양수인 해는 m = 0보다 얼마나 높은가?
김민준
0에서 시작해서 되풀이했는데 한 번도 안 움직여요. tanh 0 = 0이니까요. 해가 0밖에 없는 거 아니에요?