10장 — 요동과 응답

이 장의 물음

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

로짓 (2, 1, 0)에서 (1, −1, 0) 방향으로 옮기며 잰 크로스 엔트로피 손실. 정답이 0일 때와 2일 때 손실의 값과 기울기는 다르지만 두 곡선의 차이는 곧은 선이라, 두 번 미분한 곡률(아래)은 한 곡선으로 겹친다. t = 0에서 곡률은 0.733이다.
로짓 (2, 1, 0)에서 (1, −1, 0) 방향으로 옮기며 잰 크로스 엔트로피 손실. 정답이 0일 때와 2일 때 손실의 값과 기울기는 다르지만 두 곡선의 차이는 곧은 선이라, 두 번 미분한 곡률(아래)은 한 곡선으로 겹친다. t = 0에서 곡률은 0.733이다.

그래프는 곡률이 정답과 상관없다는 것을 보여 줄 뿐, 왜 그런지는 말해 주지 않으므로, 이 장은 다음 물음에 차례로 답한다.

요동: 평균 주위의 흔들림

볼츠만 분포를 따르는 계의 평균 에너지는 로그 분배함수 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만큼씩 흔들린다.

입자 세 개짜리 2준위 계(βε = ln 2)의 에너지 값별 확률. 평균 1(점선) 둘레로 표준편차 0.816만큼 퍼져 있다
입자 세 개짜리 2준위 계(βε = ln 2)의 에너지 값별 확률. 평균 1(점선) 둘레로 표준편차 0.816만큼 퍼져 있다

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∂β=⟨E⟩,∂2ln⁡Z∂β2=−∂⟨E⟩∂β=⟨E2⟩−⟨E⟩2=Var(E)-\frac{\partial \ln \textcolor{#667733}{Z}}{\partial \textcolor{#8c564b}{\beta}} = \langle \textcolor{#ff7f0e}{E} \rangle, \qquad \frac{\partial^2 \ln \textcolor{#667733}{Z}}{\partial \textcolor{#8c564b}{\beta}^2} = -\frac{\partial \langle \textcolor{#ff7f0e}{E} \rangle}{\partial \textcolor{#8c564b}{\beta}} = \langle \textcolor{#ff7f0e}{E}^2 \rangle - \langle \textcolor{#ff7f0e}{E} \rangle^2 = \mathrm{Var}(\textcolor{#ff7f0e}{E})
Z분배함수 ∑ie−βEiβ열원의 역온도 1/kT⟨E⟩볼츠만 분포의 평균 에너지⟨E2⟩에너지 제곱의 평균Var(E)에너지의 분산 (평균 주위로 흔들리는 정도)\begin{array}{ll} \textcolor{#667733}{Z} & \text{분배함수 } \textstyle\sum_i e^{-\textcolor{#8c564b}{\beta} \textcolor{#ff7f0e}{E_i}} \\ \textcolor{#8c564b}{\beta} & \text{열원의 역온도 } 1/\textcolor{#7f7f7f}{k}\textcolor{#8c564b}{T} \\ \langle \textcolor{#ff7f0e}{E} \rangle & \text{볼츠만 분포의 평균 에너지} \\ \langle \textcolor{#ff7f0e}{E}^2 \rangle & \text{에너지 제곱의 평균} \\ \mathrm{Var}(\textcolor{#ff7f0e}{E}) & \text{에너지의 분산 (평균 주위로 흔들리는 정도)} \end{array}

입자 세 개라면 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으로 보내면 세제곱 평균은 어떻게 되는가?

김민준 M01
김민준

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

김민준 M04
김민준

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

선생님 T01
선생님

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

김민준 M07
김민준

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

이서연 S06
이서연

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

선생님 T01
선생님

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

이서연 S02
이서연

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

선생님 T02
선생님

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

이서연 S09
이서연

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

선생님 T01
선생님

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

이서연 S07
이서연

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

김민준 M01
김민준

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