10장 — 요동과 응답
이 장의 물음
softmax 분류기의 크로스 엔트로피 손실을 로짓으로 두 번 미분해 본 적이 있는가? 해 보면 조금 이상한 결과가 나온다. 정답이 0번 클래스일 때와 2번 클래스일 때 손실의 값과 그래디언트는 다른데, 두 번 미분한 값을 모은 행렬인 헤시안(Hessian)은 소수점 끝자리까지 똑같다. 곡률이 정답 라벨과 상관없이 모델이 내놓은 확률만으로 정해지는 것이다. 연속 학습에서 옛 태스크를 잊지 않도록 파라미터를 붙잡아 두는 EWC(elastic weight consolidation)도 비슷한 이야기를 한다. 이 방법은 Fisher 정보 행렬로 파라미터의 중요도를 재는데, 논문은 이 행렬이 최솟값 근처에서 손실의 2차 미분과 같으면서도 1차 미분만으로 계산할 수 있다고 적는다. 곡률을 재는 데 왜 1차 미분이면 충분할까?

그래프는 곡률이 정답과 상관없다는 것을 보여 줄 뿐, 왜 그런지는 말해 주지 않으므로, 이 장은 다음 물음에 차례로 답한다.
- 에너지가 평균 주위로 저절로 흔들리는 정도와, 온도를 조금 올렸을 때 평균 에너지가 늘어나는 정도는 서로 어떤 관계일까?
- 분배함수 Z 하나에서 에너지가 흔들리는 크기(분산)를 어떻게 꺼낼 수 있을까?
- 온도 대신 모델의 파라미터를 바꾸면 같은 관계가 어떤 모양이 될까?
- 크로스 엔트로피의 곡률은 왜 모델이 내놓은 확률만으로 정해지고, 2차 미분인 곡률을 왜 1차 미분만으로 잴 수 있을까?
요동: 평균 주위의 흔들림
볼츠만 분포를 따르는 계의 평균 에너지는 로그 분배함수 ln Z를 역온도 β로 한 번 미분하면 나온다. 그런데 열원과 맞닿은 계의 에너지가 늘 그 평균값에 머물러 있는 것은 아니어서, 열원과 에너지를 주고받는 사이 계의 에너지는 평균 주위로 오르내린다. 에너지는 평균 주위로 얼마나 흔들릴까?
2준위 입자 세 개
에너지 0인 바닥 상태와 에너지 ε인 들뜬 상태만 가질 수 있는 입자 N개(이렇게 에너지 칸(준위)이 둘뿐인 입자를 2준위 입자라 한다)가 온도 T인 열원과 맞닿아 있고, 입자끼리는 에너지를 주고받지 않는다고 하자. 들뜬 상태의 볼츠만 인자 e^(−βε)가 1/2이 되는 온도 βε = ln 2를 고르면 입자 하나가 들떠 있을 확률은 1/(1 + 2) = 1/3이다. 계산을 간단히 하려고 ε = 1, k = 1로 두면 계의 에너지는 들뜬 입자의 수 n과 같다.
입자가 세 개이면 에너지 값마다 미시상태 수 g는 1, 3, 3, 1이고 볼츠만 인자는 1, 1/2, 1/4, 1/8이므로, 에너지 값마다 (미시상태 수) × (볼츠만 인자)로 매긴 비중을 모두 더한 Z = 3.375로 나누면 에너지 값별 확률을 얻는다.
| 에너지 n | 미시상태 수 g | 확률 | n × 확률 | n² × 확률 |
|---|---|---|---|---|
| 0 | 1 | 0.296 | 0 | 0 |
| 1 | 3 | 0.444 | 0.444 | 0.444 |
| 2 | 3 | 0.222 | 0.444 | 0.889 |
| 3 | 1 | 0.037 | 0.111 | 0.333 |
| 합 | 8 | 1 | 1.000 | 1.667 |
평균 에너지는 1이고, 에너지 제곱의 평균은 1.667이다. 에너지가 평균 주위로 흔들리는 정도는 분산(제곱의 평균에서 평균의 제곱을 뺀 값) 1.667 − 1 = 0.667로 잰다. 에너지의 표준편차는 그 제곱근인 0.816이니, 입자 세 개짜리 계의 에너지는 평균 1 주위로 거의 1만큼씩 흔들린다.
ln Z를 두 번 미분하면
에너지의 분산 0.667은 분배함수 Z 어디에 적혀 있을까? Z에 무엇이 적혀 있는지 알아보는 가장 빠른 길은 ln Z를 미분해 보는 것인데, 로그 분배함수를 역온도로 한 번 미분하면 평균 에너지에 마이너스가 붙어 나온다. Z = Σᵢe^(−βEᵢ)를 β로 미분하면 각 항에서 −Eᵢ가 내려오고, 이것을 Z로 나누면 볼츠만 확률로 평균한 −⟨E⟩가 되기 때문이다. 이렇게 얻은 ∂ln Z/∂β = −⟨E⟩를 한 번 더 β로 미분해 보자. ⟨E⟩ = ΣᵢEᵢe^(−βEᵢ)/Z는 분자와 분모에 모두 β가 들어 있는 분수이므로 몫의 미분법을 쓴다. 분자를 미분하면 각 항에서 −Eᵢ가 한 번 더 내려와 −⟨E²⟩가 되고, 분모를 미분해서 나오는 항은 ⟨E⟩ × ⟨E⟩가 되어 다음을 얻는다.
입자 세 개라면 ln Z = 3 ln(1 + e^(−β))이고, 이것을 β로 두 번 미분해 βε = ln 2를 넣으면 3 × (1/3)(2/3) = 0.667이 되어 표에서 센 분산과 같다. 경우의 수를 하나하나 세지 않고도 ln Z의 2차 미분만으로 에너지의 분산을 얻은 것이다. 이렇게 평형에 있는 계에서 어떤 양이 평균 주위로 저절로 흔들리는 것을 요동 (평균 주위의 흔들림, fluctuation)이라 하고, 그 크기는 분산으로 잰다. 에너지의 요동은 ln Z의 2차 미분에 적혀 있었던 것이다. 식의 가운데 항은 역온도를 바꿀 때 평균 에너지가 움직이는 비율로, 이것도 같은 2차 미분이다. 가운데 항의 뜻은 다음 페이지에서 따로 살펴본다.
한 번 더 미분하면 어떻게 될까? 같은 계산을 되풀이하면 −∂³ln Z/∂β³은 ⟨(E − ⟨E⟩)³⟩가 되고, 이 세제곱 평균은 에너지 분포가 한쪽으로 기운 정도를 잰다. −β를 변수로 보면 ln Z는 미분할 때마다 에너지의 평균, 분산, 비대칭도를 차례로 내주는 함수다. 위 그림의 막대가 정말 그만큼 기울어 있는지는 아래 문제 1에서 직접 세어 본다.
ML에서: 로그 분배함수는 평균과 공분산을 내준다
ML 독자에게 익숙한 말로 하면, ln Z의 1차 미분은 모델의 평균을, 2차 미분은 모델의 공분산을 내준다. softmax나 지수족(exponential family, 정규분포처럼 확률이 「파라미터 × 특징」의 지수함수에 비례하는 분포들) 분포처럼 e^(−에너지) 모양을 한 모델에서는 ln Z를 미분하는 것만으로 모델이 내놓는 값의 평균과 공분산을 얻는다는 뜻이다. 조건이 온도 하나가 아니라 파라미터 여러 개일 때 이것이 어떤 모양이 되는지는 뒤에서 살펴본다.
문제 1. 세 번 미분하면
2준위 입자 세 개(βε = ln 2, ε = 1, k = 1)에서 (가) 에너지 값별 확률표로 ⟨(E − ⟨E⟩)³⟩를 직접 세라. (나) ln Z = 3 ln(1 + e^(−β))를 β로 세 번 미분해 같은 값이 나오는지 확인하라. (다) 온도를 아주 높여 βε → 0으로 보내면 세제곱 평균은 어떻게 되는가?

(가)는 표에서 바로 돼요. E − 1이 −1, 0, 1, 2이고 확률이 0.296, 0.444, 0.222, 0.037이니까, 세제곱해서 확률을 곱해 더하면 −0.296 + 0 + 0.222 + 0.296 = 0.222예요.

(나)도 할게요. 들떠 있을 확률을 p = 1/(1 + e^β)라 하면 한 번 미분해서 −3p, 두 번 미분해서 3p(1 − p)이고, p를 β로 미분하면 −p(1 − p)니까 세 번째는 −3p(1 − p)(1 − 2p) = −0.222. 어, 표와 부호가 반대예요.

비대칭도는 ∂³ln Z/∂β³ 자체와 같았나요? 그리고 β를 키우면 온도는 어느 쪽으로 가죠?

마이너스가 붙은 −∂³ln Z/∂β³이었네요. β를 키우는 건 온도를 내리는 쪽이라, 한 번 미분할 때마다 부호가 한 번씩 뒤집혀요. 평균에는 −, 분산에는 +, 세제곱에는 −. 그럼 +0.222로 표와 같아요.

(다)는 온도가 높을수록 에너지의 분산이 커지니까 기운 정도도 커질 것 같았는데, p = 1/2을 넣으면 1 − 2p = 0이라 0이 나와. 분산은 그때 제일 큰데?

p = 1/2이면 들뜬 입자 수의 확률표는 어떤 모양이죠?

1, 3, 3, 1을 8로 나눈 거니까 좌우 대칭이에요. 대칭이면 세제곱이 양쪽에서 지워져서 0이고요.

그럼 분산과 세제곱의 평균은 각각 무엇을 재고 있었던 걸까요?

분산은 퍼진 폭을, 세제곱의 평균은 한쪽으로 기운 정도를 재니까 서로 다른 걸 묻고 있었네요.

(가)의 p = 1/3에서 양수가 나온 건요?

들뜬 입자가 적은 쪽에 몰리고 많은 쪽으로 꼬리가 늘어져서 양수였던 거예요.

쉬운 퀴즈는 대부분 만점 근처에 몰리고 몇 명만 낮은 점수로 늘어지잖아요. 그건 꼬리가 낮은 쪽이니까 음수겠네요.