11장 — 이징 모형과 상전이

홉필드 네트워크: 기억은 에너지의 골짜기다

이제 이 장 첫머리의 홉필드 네트워크로 돌아가자. 30개를 뒤집어 넣은 패턴은 왜 제자리로 돌아오고, 그동안 에너지는 왜 내려가기만 할까?

역사: 헤브와 홉필드

1949년 캐나다의 심리학자 도널드 헤브는 『행동의 조직』에서 함께 활동하는 뉴런 사이의 연결이 강해진다는 가설을 내놓았다. 뉴런들이 함께 켜지는 경험이 연결에 새겨진다는 이 생각은 30여 년 뒤 물리학자의 손에서 기억 모형이 된다.

1982년 칼텍과 벨 연구소에 적을 둔 물리학자 존 홉필드는 『미국 국립과학원 회보』에 「창발적인 집단 계산 능력을 가진 신경망과 물리계」라는 논문을 냈다. 그는 일부만 보고 전체를 떠올리는 기억, 곧 내용으로 찾아가는 기억의 예로 참고문헌 한 줄 「H. A. Kramers & G. H. Wannier Phys. Rev. 60, 252 (1941)」을 들었다. 이상적인 기억이라면 「& Wannier, (1941)」만 주어져도, 철자가 틀린 「Vannier, (1941)」이 주어져도 전체를 되살려 내야 한다는 것이다. 예로 든 논문이 바로 2차원 이징 모형의 전환 온도를 짚은 크라머르스와 바니에의 논문이었다. 홉필드는 뉴런을 켜짐과 꺼짐 두 상태의 스핀으로, 시냅스를 스핀 사이의 결합으로 보고 기억을 에너지의 골짜기로 만들었다. 2024년 노벨 물리학상 보도자료는 이 네트워크가 「각 원자를 작은 자석으로 만드는 성질인 원자의 스핀으로 물질의 특성을 설명하는 물리」를 쓴다고 소개했다.

존 홉필드(1933– ). 2024년 노벨상 주간 기자회견에서. 사진: Arthur Petron, 출처: Wikimedia Commons, CC BY-SA 4.0
존 홉필드(1933– ). 2024년 노벨상 주간 기자회견에서. 사진: Arthur Petron, 출처: Wikimedia Commons, CC BY-SA 4.0
홉필드가 내용으로 찾아가는 기억의 예로 든 참고문헌 조각(위)과 이 장 첫머리의 실험(아래). 패턴 다섯 개를 헤브 규칙으로 새긴 뉴런 100개에 첫 패턴에서 30개를 뒤집어 넣으면(겹침 +0.40, 에너지 −7.2) 한 바퀴 갱신한 뒤 원래 패턴이 그대로 나온다(에너지 −49.0). 진한 칸은 켜짐(+1), 연한 칸은 꺼짐(−1)이다.
홉필드가 내용으로 찾아가는 기억의 예로 든 참고문헌 조각(위)과 이 장 첫머리의 실험(아래). 패턴 다섯 개를 헤브 규칙으로 새긴 뉴런 100개에 첫 패턴에서 30개를 뒤집어 넣으면(겹침 +0.40, 에너지 −7.2) 한 바퀴 갱신한 뒤 원래 패턴이 그대로 나온다(에너지 −49.0). 진한 칸은 켜짐(+1), 연한 칸은 꺼짐(−1)이다.

결합에 패턴을 새기기

홉필드 네트워크 (패턴을 결합에 새겨 두고 에너지의 골짜기로 되살리는 신경망, Hopfield network)는 편향이 없는 이징 모형을 온도 0에서 돌리는 것이다. 저장할 패턴 ξ¹, ξ², …(ξ는 「크사이」라고 읽고, 위첨자 μ는 몇 번째 패턴인지를 가리키는 번호다)를 헤브 규칙으로 결합에 새기고, 뉴런 하나를 골라 다른 뉴런들이 보내는 입력 합의 부호로 맞추는 일을 되풀이한다.

Jij=1N∑μξiμ ξjμ  (i≠j),si←sign⁡(∑jJij sj),E(s)=−12∑i≠jJij si sj\textcolor{#b8860b}{J_{ij}} = \frac{1}{\textcolor{#1f77b4}{N}} \sum_{\mu} \textcolor{#1b9e77}{\xi^{\mu}_i}\, \textcolor{#1b9e77}{\xi^{\mu}_j}\ \ (i \ne j), \qquad \textcolor{#1b9e77}{s_i} \leftarrow \operatorname{sign}\Big(\sum_j \textcolor{#b8860b}{J_{ij}}\, \textcolor{#1b9e77}{s_j}\Big), \qquad \textcolor{#ff7f0e}{E}(\textcolor{#1b9e77}{\mathbf{s}}) = -\frac{1}{2}\sum_{i \ne j} \textcolor{#b8860b}{J_{ij}}\, \textcolor{#1b9e77}{s_i}\, \textcolor{#1b9e77}{s_j}
ξiμμ번째로 저장한 패턴에서 뉴런 i의 값 (±1)Jij헤브 규칙으로 만든 결합 (저장한 패턴들에서 함께 켜지는 쌍일수록 크다)si뉴런 i의 현재 상태 (±1)E(s)네트워크의 에너지 (편향이 없는 이징 모형)N뉴런의 수\begin{array}{ll} \textcolor{#1b9e77}{\xi^{\mu}_i} & \mu \text{번째로 저장한 패턴에서 뉴런 i의 값 (±1)} \\ \textcolor{#b8860b}{J_{ij}} & \text{헤브 규칙으로 만든 결합 (저장한 패턴들에서 함께 켜지는 쌍일수록 크다)} \\ \textcolor{#1b9e77}{s_i} & \text{뉴런 i의 현재 상태 (±1)} \\ \textcolor{#ff7f0e}{E}(\textcolor{#1b9e77}{\mathbf{s}}) & \text{네트워크의 에너지 (편향이 없는 이징 모형)} \\ \textcolor{#1f77b4}{N} & \text{뉴런의 수} \end{array}

갱신할 때 에너지는 왜 내려가기만 할까? 손으로 따라갈 수 있는 가장 작은 예로 보자. 뉴런 네 개에 패턴 하나 ξ = (+1, +1, +1, +1)을 새기면 헤브 규칙의 결합은 모든 쌍에서 Jᵢⱼ = 1/4이다. 넷째 뉴런 하나만 틀린 상태 (+1, +1, +1, −1)에서 시작하면, 넷째 뉴런이 받는 입력 합은 다른 세 뉴런이 보내는 (1/4) × 3 = 0.75이고 부호가 +이므로 넷째 뉴런을 +1로 뒤집는다. 에너지는 −(1/4) × (같은 방향인 쌍의 수 − 반대 방향인 쌍의 수)로 셀 수 있다.

상태 같은 방향인 쌍 반대 방향인 쌍 에너지
갱신 전 (+1, +1, +1, −1) 3 3 0
갱신 뒤 (+1, +1, +1, +1) 6 0 −1.5

에너지는 0에서 −1.5로, 입력 합 0.75의 두 배만큼 내려갔다. 뉴런 하나를 뒤집으면 그 뉴런이 끼어 있는 쌍의 항만 부호가 바뀌는데, 그 항들을 모두 더한 것이 바로 그 뉴런의 입력 합에 자기 상태를 곱한 값이기 때문이다. 그래서 일반적으로도 뉴런 i를 입력 합의 부호로 맞추면 에너지는 입력 합의 절댓값의 두 배만큼 줄거나 그대로이므로, 갱신을 거듭하면 에너지가 더 내려갈 수 없는 골짜기에서 멈춘다. 홉필드는 1982년 논문에서 이렇게 적었다. 「그러므로 Vᵢ(뉴런 i의 상태)를 바꾸는 알고리즘은 E를 단조 감소 함수로 만든다. 상태 변화는 (국소적으로) 가장 작은 E에 이를 때까지 계속된다. 이 경우는 이징 모형과 동형이다.」 이 장을 마친 독자는 이 문장을 「기억은 이징 모형의 에너지 골짜기이고, 복원은 온도 0의 볼츠만 분포가 가장 가까운 골짜기로 떨어지는 일」로 읽게 된다.

같은 네트워크의 에너지 풍경을 개념적으로 그린 것. 저장한 패턴 다섯 개와 첫 패턴의 반전 −ξ⁰가 골짜기이고, 골짜기 깊이는 실제 에너지(−48.3~−49.5)다. 30개를 뒤집은 입력(−7.2)은 갱신할 때마다 에너지가 내려가 가장 가까운 골짜기 ξ⁰(−49.0)에서 멈춘다. 가로축은 실제 좌표가 아니다.
같은 네트워크의 에너지 풍경을 개념적으로 그린 것. 저장한 패턴 다섯 개와 첫 패턴의 반전 −ξ⁰가 골짜기이고, 골짜기 깊이는 실제 에너지(−48.3~−49.5)다. 30개를 뒤집은 입력(−7.2)은 갱신할 때마다 에너지가 내려가 가장 가까운 골짜기 ξ⁰(−49.0)에서 멈춘다. 가로축은 실제 좌표가 아니다.

ML에서: 현대 홉필드 네트워크와 어텐션

이 모형은 최근 다시 주목받았다. 람자우어 외(2020)는 상태가 연속이고 에너지에 logsumexp가 들어간 현대 홉필드 네트워크를 만들었고, 논문 요약에 「새 갱신 규칙은 트랜스포머에서 쓰는 어텐션 메커니즘과 같다」고 적었다. 저장된 패턴과 현재 상태가 어텐션의 어느 자리에 서는지는 아래 문제 12에서 직접 계산해 보자. 이 장을 마친 독자는 어텐션을 「쿼리가 저장된 패턴들의 에너지 골짜기 가운데 하나로 내려가는 한 걸음」으로 읽을 수 있다.

문제 10. 이름이 지워진 운동 기록

세 친구가 헬스장에 간 요일(월요일부터 일요일까지)을 운동한 날 +1, 쉰 날 −1로 적어 두었다. 가는 (+1, +1, +1, +1, +1, +1, +1), 나는 (+1, −1, −1, +1, −1, −1, −1), 다는 (−1, −1, −1, −1, −1, −1, +1)이다. 이름이 지워진 기록 (−1, +1, −1, +1, −1, −1, −1)이 하나 나왔는데, 옮겨 적다가 두 요일쯤 틀렸을 수 있다. 누구의 기록일 가능성이 가장 큰가?

김민준 M11
김민준

운동한 날이 겹치는 걸 세면 되죠. 기록에서 운동한 날은 화요일과 목요일인데, 가는 둘 다 겹치고 나는 목요일 하나, 다는 하나도 안 겹쳐요. 가예요.

이서연 S03
이서연

가는 매일 가니까 어떤 기록이든 운동한 날은 다 겹치잖아. 그럼 늘 가가 뽑히는 거 아니야?

선생님 T14
선생님

쉰 날이 같은 것도 같은 거죠? 일곱 요일 가운데 기록과 같은 요일이 몇 개인지 세어 볼까요.

김민준 M04
김민준

가는 화요일과 목요일만 같아서 2개, 나는 월요일과 화요일만 달라서 5개, 다는 화요일, 목요일, 일요일이 달라서 4개네요. 나예요. 월요일과 화요일을 바꿔 적은 거였어요.

이서연 S07
이서연

같은 요일 수에서 다른 요일 수를 빼서 7로 나누면, 두 기록의 ±1을 요일마다 곱해 더한 값을 7로 나눈 것과 같아요. 가는 −3/7, 나는 3/7, 다는 1/7이에요. 원래 패턴과 같은 뉴런의 비율에서 다른 뉴런의 비율을 뺀 겹침이랑 같은 계산이네요.

선생님 T02
선생님

맞아요. 저장된 기록 가운데 겹침이 가장 큰 것을 고르는 일, 그게 일부가 틀린 입력에서 전체를 떠올리는 기억이 하는 일이에요.

김민준 M12
김민준

조교가 이름 없는 시험지를 누구 것인지 맞힐 때, 맞힌 문항만 견주면 만점 받은 학생 것처럼 보이지만 틀린 문항까지 같이 봐야 하는 거랑 같네요.

문제 11. 넷을 한꺼번에 갱신하면

위의 뉴런 네 개 예(패턴 ξ = (+1, +1, +1, +1), 모든 쌍의 결합 1/4)에서 상태 (+1, +1, −1, −1)로 시작한다. (가) 뉴런을 1, 2, 3, 4 순서로 하나씩 입력 합의 부호로 맞추며 에너지를 적어라. (나) 이번에는 네 뉴런의 새 값을 모두 지금 상태에서 계산한 뒤 한꺼번에 바꾸는 일을 되풀이하라. 어떻게 되는가?

김민준 M02
김민준

(가)부터요. 처음에는 같은 방향인 쌍이 2개, 반대 방향인 쌍이 4개라 에너지가 −(1/4)(2 − 4) = 0.5예요. 뉴런 1의 입력 합은 (1/4)(1 − 1 − 1) = −0.25라서 −1로 뒤집고 에너지 0, 뉴런 2는 입력 합 −0.75라서 −1로 뒤집고 −1.5, 뉴런 3과 4는 이미 −1이라 그대로예요. (−1, −1, −1, −1)에서 멈춰요.

이서연 S03
이서연

패턴이 아니라 패턴을 통째로 뒤집은 상태로 갔네. 처음에 위아래가 반반이라 어느 쪽으로든 갈 수 있었던 거구나.

김민준 M01
김민준

(나)는 한 번에 다 바꾸니까 더 빨리 끝나겠죠. 입력 합이 (−0.25, −0.25, 0.25, 0.25)라 새 상태는 (−1, −1, +1, +1)이고… 다음에는 (+1, +1, −1, −1)로 돌아와요. 어? 둘 사이를 계속 오가요. 에너지도 0.5 그대로고요.

김민준 M05
김민준

에너지가 내려가기만 한다고 했잖아요!

선생님 T14
선생님

에너지가 입력 합의 두 배만큼 내려간다는 계산에서, 다른 뉴런들은 어떤 상태라고 놓았죠?

이서연 S09
이서연

뒤집는 뉴런 하나만 바뀌고 나머지는 그대로라고 놓았어요. 그런데 한꺼번에 바꾸면 뉴런 1이 기대던 뉴런 3과 4도 같이 뒤집혀요. 넷이 모두 뒤집히면 같은 방향인 쌍과 반대 방향인 쌍의 수가 그대로라서 에너지가 안 바뀌고요.

선생님 T02
선생님

그래서 「한 번에 하나씩」은 덤이 아니라 에너지 논증이 서는 조건이에요. 홉필드도 1982년 논문에서 뉴런들이 서로 박자를 맞추지 않고 제각각 갱신한다는 점을 강조했어요. 디지털 컴퓨터처럼 모두가 한 박자에 맞춰 바뀐다는 증거가 뇌에는 없다고 보았거든요.

김민준 M12
김민준

조별 과제에서 네 명이 동시에 서로의 옛 원고를 보고 고치면, 내가 고친 걸 친구가 되돌리고 친구가 고친 걸 내가 되돌려서 끝이 안 나는 거랑 같네요.

문제 12. 어텐션 한 번은 갱신 한 번

현대 홉필드 네트워크에 패턴 세 개 ξ¹ = (1, 1, 1, 1), ξ² = (1, 1, −1, −1), ξ³ = (−1, 1, −1, 1)이 저장되어 있다. 넷째 값이 지워진 상태 s = (1, 1, 1, 0)이 들어오면 상태는 한 번의 갱신으로 s ← w₁ξ¹ + w₂ξ² + w₃ξ³가 된다. 여기서 비중 (w₁, w₂, w₃)은 세 값 (βξ¹·s, βξ²·s, βξ³·s)를 softmax에 넣은 것이다. (가) β = 1일 때 비중과 갱신된 상태를 구하라. (나) 트랜스포머의 어텐션은 쿼리 q와 키 k_μ의 내적을 √d로 나눠 softmax에 넣은 비중으로 값 v_μ들을 평균한다. 키와 값이 모두 저장된 패턴이고 쿼리가 s이며 차원이 d = 4이면, 어텐션 한 번은 (가)의 식에서 β가 얼마일 때와 같은가? 그때의 출력을 구하라.

김민준 M02
김민준

(가)는 내적부터요. 3, 1, −1이니까 softmax(3, 1, −1) = (0.867, 0.117, 0.016)이고, 갱신된 상태는 (0.968, 1.000, 0.734, 0.765)예요. 지워졌던 넷째 값이 0.765로, ξ¹의 1 쪽으로 채워졌어요.

이서연 S06
이서연

(나)는 1/√d 자리에 β가 오면 되니까 β = 1/√4 = 0.5야. 내적은 그대로니까 비중도 출력도 (가)랑 같겠네.

선생님 T14
선생님

softmax에 들어가는 값은 무엇과 무엇을 곱한 것이죠?

이서연 S04
이서연

내적에 β를 곱한 거요. β가 1에서 0.5로 바뀌었으니 들어가는 값이 (1.5, 0.5, −0.5)로 바뀌어요. 그대로인 건 내적뿐이었네요.

김민준 M07
김민준

다시 하면 비중이 (0.665, 0.245, 0.090)이고 출력은 (0.820, 1.000, 0.330, 0.510)이에요. 이 비중 낯익은데… 로짓 (2, 1, 0)의 softmax랑 같아요. 로짓끼리의 차이가 같으면 softmax도 같으니까요.

선생님 T02
선생님

그래요. 어텐션에서 √d로 나누는 일이 바로 β를 정하는 일이에요. β가 크면 가장 가까운 패턴 하나로 거의 다 가고, β가 작으면 여러 패턴을 섞은 상태가 나와요.

이서연 S10
이서연

그러니까 β가 역온도 자리네요. 온도가 낮으면 가장 깊은 골짜기 하나에 몰리고, 높으면 여러 골짜기를 섞고요. β를 끝없이 키우면 겹침이 가장 큰 패턴 하나를 고르게 되는데, 고전 홉필드가 온도 0에서 하는 일과 닮았어요.

김민준 M12
김민준

아까 운동 기록에서 같은 요일을 센 게 내적이었네요. 그걸 softmax에 넣어 섞으면 어텐션이고요.