자유에너지: 겨루기의 결과를 정확히 적은 양
큰 계에서는 −kT ln Z가 승자의 E − TS와 거의 같았다. 그런데 입자가 세 개일 때는 가장 큰 항이 ln Z의 3분의 1밖에 설명하지 못했으니, 이 근사는 작은 계에서는 쓸 수 없다. 그렇다면 −kT ln Z 자체를 계의 크기와 상관없이 에너지와 엔트로피의 겨루기로 정확히 적을 수는 없을까?
역사: 헬름홀츠와 깁스
1800년대 화학에서는 반응이 내놓는 열을 반응이 얼마나 잘 일어나는지 재는 잣대로 삼는 일이 흔했다. 열을 많이 내는 반응일수록 원소끼리 끌어당기는 힘이 세다고 본 것이고, 헬름홀츠 자신도 앞선 논문들에서 이 견해를 따랐다고 적었다. 그런데 저절로 일어나면서 오히려 둘레를 차갑게 만드는 반응이 있다는 것은 오래전부터 알려져 있었고, 열만 보는 설명으로는 이런 반응을 풀 수 없었다. 헬름홀츠가 이 문제에 붙들린 것은 전지 때문이었다. 전지는 온도가 거의 변하지 않은 채 화학 반응으로 전기적인 일(work, 힘을 들여 물체를 밀어 옮기는 데 쓰인 에너지)을 해내는데, 그 전압이 안에서 일어나는 화학 변화와 어떻게 이어지는지를 따지다가, 반응이 내놓는 에너지 가운데 일로 바꿀 수 있는 몫과 그렇지 않은 몫을 구별해야 한다고 생각하게 되었다. 1882년 베를린 학술원에 낸 논문에서 그는 앞의 것을 자유에너지(freie Energie), 뒤의 것을 묶인 에너지(gebundene Energie)라 불렀고, 온도가 일정할 때 저절로 일어나는 변화는 자유에너지가 줄어드는 쪽으로만 간다는 결론을 얻었다. 오늘날의 식으로 쓰면 묶인 에너지가 TS이고 자유에너지가 E − TS다. 에너지 가운데 온도 × 엔트로피만큼은 열의 형태로 둘레와 얽혀 있어서 마음대로 꺼내 쓸 수 없다는 뜻이니, 「자유」는 「꺼내 쓸 수 있는」이라는 뜻의 이름이었던 셈이다.

20년 뒤 깁스는 1902년의 통계역학 교과서에서 확률을 Z로 나누는 대신 e^((ψ − ε)/Θ)로 적고(ε는 에너지, Θ(대문자 세타)는 오늘날의 kT) 합이 1이 되도록 상수 ψ를 정해, 정규화 상수를 지수 안에서 에너지와 나란히 서는 에너지로 다루었다.
평균 에너지와 엔트로피로 적기
승자 하나의 에너지와 엔트로피 대신 볼츠만 분포의 평균 에너지와 엔트로피를 쓰면 등호가 정확히 성립한다. 그래서 온도 T인 열원과 맞닿은 계에 대해 −kT ln Z를 자유에너지 (에너지와 엔트로피의 겨루기 결과, Helmholtz free energy)라 하고 F로 쓴다.
등호는 한 줄로 확인된다. 볼츠만 분포에서 ln pᵢ = −βEᵢ − ln Z이므로, 이것을 pᵢ로 평균해 −k를 곱하면 S = kβ⟨E⟩ + k ln Z이고, 양변에 T를 곱해 정리하면 ⟨E⟩ − TS = −kT ln Z다. βε = ln 2인 2준위 입자 하나라면 ⟨E⟩ = 0.2310kT, S = 0.6365k이므로 ⟨E⟩ − TS = −0.4055kT가 되어 −kT ln 1.5와 맞는다.
같은 식을 거꾸로 풀면 볼츠만 분포를 Z 없이 적을 수 있다. ln Z = −βF를 대입하면 다음과 같다.
앞에서 본 깁스의 e^((ψ − ε)/Θ)가 바로 이 식이고, 깁스의 ψ가 자유에너지 F다.
르장드르 변환으로 보면
자유에너지는 열원의 온도 T를 변수로 삼는 양이다. 그런데 경우의 수를 세는 계산은 에너지를 변수로 삼았다. 에너지의 함수로 적힌 계를 온도의 함수로 옮기는 일은 어떻게 이루어지고, 왜 그런 옮김이 필요할까? 실험실의 계는 대개 방이라는 열원에 맞닿아 있어서 우리가 손에 쥐는 손잡이는 에너지가 아니라 온도다. 그러니 계를 온도의 함수로 적은 양이 필요하고, 그것을 만드는 방법이 르장드르 변환이다.
에너지를 엔트로피의 함수 E(S)로 보자. 보통의 계는 에너지를 넣을수록 엔트로피가 늘되 느는 속도가 점점 줄어들므로, 거꾸로 E(S)는 볼록한 증가 함수이고 그 기울기 dE/dS가 온도 T다. 르장드르 변환의 두 단계를 그대로 밟으면, 기울기 T를 새 변수로 삼고 「새 변수 × 원래 변수 − 원래 함수」인 TS − E를 새 함수로 삼는다. 물리학은 이 새 함수에 마이너스를 붙인 것을 쓰는데, 그것이 자유에너지다.
미분 대신 최솟값으로 적으면 F(T) = min_S(E(S) − TS)이고, 이것이 가장 큰 항에서 찾은 min_E(E − TS(E))와 같은 식이다. 셋째 식은 「변환한 함수를 새 변수로 미분하면 옛 변수가 나온다」는 르장드르 변환의 성질에 부호가 붙은 것이다. 역학에서 라그랑지안을 속도 대신 운동량의 함수로 다시 적어 에너지를 얻는 것도 이 변환이니, 같은 도구가 운동을 적을 때와 열을 적을 때 모두 쓰이는 셈이다.

ML에서: 교차 엔트로피와 logsumexp
Z 없이 적은 볼츠만 분포의 둘째 식 −ln pᵢ = β(Eᵢ − F)는 ML 독자에게 특히 쓸모가 있다. 상태 하나의 놀라움 −ln pᵢ(드문 일일수록 크게 놀란다는 데서 붙은 이름이지만, 이 책에서 놀라움은 느낌이 아니라 이 숫자를 가리킨다)는 그 상태의 에너지가 자유에너지보다 kT의 몇 배만큼 높은지와 같다. softmax 분류기라면 온도 1에서 에너지가 −로짓이고 자유에너지가 −logsumexp(z)이므로, 교차 엔트로피 손실 −ln p_c = −z_c + logsumexp(z)는 「정답 클래스의 에너지가 자유에너지보다 얼마나 높은가」를 잰 값이다.
문제 5. 누르면 차가워지는 냉찜질팩
순간 냉찜질팩은 봉지를 눌러 안의 질산암모늄을 물에 녹이면 차가워진다. 25 °C(298 K)에서 질산암모늄 1몰이 물에 녹을 때 둘레에서 열 25.69 kJ을 빨아들인다. 고체와 액체만 오가서 부피가 거의 바뀌지 않으므로, 빨아들인 열만큼 에너지가 늘었다고 보자. (가) 에너지가 느는데도 저절로 녹으려면, 녹을 때 엔트로피가 1몰에 적어도 얼마나 늘어야 하는가? (나) 녹는 알갱이 하나(이온 한 쌍)의 몫으로 나누면 에너지 증가는 kT의 몇 배이고, 경우의 수는 적어도 몇 배로 늘어야 하는가?

열을 빨아들이면 에너지가 늘어나니까 자유에너지도 늘어나요. 온도가 일정할 때 저절로 가는 쪽은 자유에너지가 줄어드는 쪽이라고 했으니까 이건 저절로 녹을 수가 없는데… 실제로는 녹잖아요.

F = E − TS에서 알갱이가 녹을 때 바뀌는 것이 E뿐인가요?

고체 안에서는 이온이 제자리에 묶여 있었는데 녹으면 물속에 흩어지니까 엔트로피도 늘어요. −TS 항이 에너지 증가보다 더 크게 내려가면 F는 내려가고요.

그럼 얼마나 늘어야 하죠?

ΔE − TΔS < 0이어야 하니까 ΔS > ΔE/T = 25,690 J ÷ 298 K = 86.2 J/K예요. 1몰에 그만큼은 늘어야 해요.

(나)는 이온 한 쌍의 몫을 kT와 견줘 봐요.

1몰은 아보가드로수만큼의 알갱이니까, 1몰의 값을 기체 상수 R = 8.314 J/(mol·K)에 온도를 곱한 RT = 2.479 kJ로 나누면 알갱이 하나의 값을 kT로 잰 것이 돼요. 25.69 ÷ 2.479 = 10.4, 그러니까 이온 한 쌍이 녹을 때마다 kT의 10.4배를 둘레에서 빌려 와요. 이걸 갚으려면 ΔS/k가 10.4보다 커야 하고, 경우의 수는 e^10.4 = 3만 2천 배 넘게 늘어야 해요.

에너지로는 손해를 보는데, 이온이 자리를 고르는 방법이 수만 배로 늘어서 겨루기에서 이기는 거네요. 열만 보는 설명으로는 풀 수 없었다던 「저절로 일어나면서 둘레를 차갑게 만드는 반응」이 이거였어요.

열만 보는 잣대로는 이 반응이 거꾸로 가야 해요. 온도가 환율이라 에너지 10.4kT와 엔트로피 10.4k가 같은 값으로 쳐지고, 엔트로피 쪽이 그보다 조금이라도 더 벌어 오면 녹는 쪽으로 가요. 여기서는 얼마나 늘어야 하는지 아래 경계만 구했어요.
문제 6. 아주 차가울 때와 아주 뜨거울 때의 자유에너지
에너지가 0과 ε인 2준위 입자 하나의 자유에너지 F = −kT ln(1 + e^(−ε/kT))를 (가) kT = 0.1ε일 때와 (나) kT = 100ε일 때 구하라. 각각 F = ⟨E⟩ − TS의 두 항이 얼마인지 밝혀라.

(가)는 e^(−10) = 4.5 × 10⁻⁵이라 ln(1 + 4.5 × 10⁻⁵) ≈ 4.5 × 10⁻⁵이고, F = −0.1ε × 4.5 × 10⁻⁵ = −4.5 × 10⁻⁶ε. 거의 0이에요. (나)는 e^(−0.01) ≈ 1이니까 F = −100ε × ln 2 = −69.31ε요.

(나)를 두 항으로 나눠 보면 이상해. F가 −kT ln 2이면, TS는 두 상태짜리 엔트로피의 최댓값 kT ln 2를 넘지 못하니까 ⟨E⟩가 0이어야 하잖아. 그런데 이렇게 뜨거우면 입자가 반쯤은 들떠서 ⟨E⟩는 ε/2에 가까워야지.

e^(−0.01)을 1로 둔 게 어디까지 괜찮은지 봐요. ε/kT에 비례하는 항을 하나 더 살리면요?

x = ε/kT로 두면 1 + e^(−x) ≈ 2 − x이고 ln(2 − x) ≈ ln 2 − x/2니까, F ≈ −kT ln 2 + ε/2 = −69.315ε + 0.5ε = −68.815ε예요. 제가 버린 0.5ε가 ⟨E⟩였네요.

정확히 계산하면 ⟨E⟩ = ε/(e^0.01 + 1) = 0.4975ε, TS = 69.313ε이라 F = −68.816ε야. (가)는 ⟨E⟩ = 4.5 × 10⁻⁵ε, TS = 5.0 × 10⁻⁵ε로 둘 다 거의 0이고, 바닥 상태의 에너지 0이 F를 정해.

차가울 때는 에너지가, 뜨거울 때는 엔트로피가 F를 거의 정하지만, 뜨거울 때도 에너지 항이 사라지지는 않아요. 온도가 얼마든 두 항이 함께 들어 있는 것이 F = ⟨E⟩ − TS예요.

극한값만 맞추고 1차 항을 버렸더니 극한으로 가는 길의 모양이 틀린 거네요. 테일러 전개에서 늘 조심하라던 거요.
문제 7. 정답 로짓을 10 올리면 손실은 10 줄어드나
세 클래스 분류기가 로짓 z = (3, 1, 0)을 내놓았고 정답은 둘째 클래스다. 온도 1에서 에너지를 −z로 둔다. (가) 교차 엔트로피 손실을 정답 클래스의 에너지와 자유에너지로 구하라. (나) 정답 클래스의 로짓만 10 올려 (3, 11, 0)이 되면 손실은 얼마나 줄어드는가?

(가)는 F = −logsumexp(z) = −ln(e³ + e + 1) = −3.170이고 정답 클래스의 에너지는 −1이니까, 손실은 −1 − (−3.170) = 2.170이에요. (나)는 정답의 에너지가 10 내려가니까 손실도 10 줄어서 −7.83… 손실이 음수가 됐어요.

교차 엔트로피는 음수가 될 수 없잖아. −ln p에서 p는 1을 넘지 못하니까.

정답 로짓을 올리는 동안 F는 그대로 있나요?

아, F도 로짓으로 계산하니까 같이 움직여요. (3, 11, 0)이면 F = −ln(e³ + e¹¹ + 1) = −11.0004이고 정답의 에너지는 −11이라 손실은 0.00035예요. 10이 아니라 2.17만큼만 줄었네요.

logsumexp는 가장 큰 로짓보다 늘 크니까, F는 가장 낮은 에너지보다 늘 조금 더 낮아. 그래서 정답의 에너지에서 F를 뺀 손실은 0보다 크고, 정답 로짓이 다른 로짓보다 훨씬 크면 F가 정답의 에너지 바로 아래에 붙어서 손실이 0으로 다가가.

이미 반에서 1등인데 시험 점수를 10점 더 올려도 등수는 1등에서 더 오르지 않는 거랑 같네요. 손실은 1등과의 거리를 재는 거니까요.