분류 모델이 로짓 z₁, …, z_K를 내놓으면 softmax가 이를 확률로 바꾼다. 공장에서 생산량과 가격이 한 함수의 변수와 기울기였고, 진자에서 속도와 운동량이 그랬다. 그렇다면 로짓과 확률도 어떤 함수의 변수와 기울기일까?
softmax는 로그 분배함수의 그래디언트다
softmax에서 합이 1이 되게 나누는 데(정규화) 쓰는 합의 로그, 곧 logsumexp를 이 장에서는 로그 분배함수 (정규화 합의 로그, log-partition function)라 부르고 ψ(프사이)로 쓴다. ψ는 로짓의 볼록 함수이고, 그 그래디언트(gradient: 로짓마다 편미분한 값을 모은 벡터)를 계산하면 놀랍게도 softmax 확률이 그대로 나온다.
클래스가 둘이고 둘째 로짓을 0으로 둔 로그 분배함수 ψ = ln(e^z₁ + 1)(위)와 그 기울기(아래). z₁ = 0에서 기울기는 0.5, z₁ = 2에서는 0.881이고, 이 기울기가 그 로짓에서의 softmax 확률 p₁이다. ψ는 아래로 볼록해서 기울기가 0과 1 사이에서 늘기만 한다.
공장 문제에 빗대면 로짓은 생산량 자리에, 확률은 가격 자리에 있는데, 그러면 ψ를 확률의 함수로 다시 쓴 켤레 ψ*는 무엇일까? 계산법대로 「새 변수 곱하기 원래 변수, 빼기 원래 함수」를 만들고 zᵢ = ln pᵢ + ln Z를 넣으면, Σ pᵢ가 1이므로 ln Z가 지워지고 다음만 남는다. 확률의 합이 1이라는 조건이 여기서 쓰였다는 것을 기억해 두자.
ψ∗(p)=i∑pilnpi=−H(p)
ψ∗pH(p)로그분배함수의켤레확률벡터 (합이 1이고음이아닐때만유한)엔트로피 (nat)
로그 분배함수의 켤레는 음의 엔트로피이고, 반대 방향, 곧 두 번 변환하면 제자리라는 사실을 쓰면 다음 식을 얻는다.
lnZ=pmax(i∑pizi+H(p))
lnZpziH로그분배함수확률벡터 (최대화하는변수, 답은 softmax)로짓엔트로피
ln Z를 최대화 문제로 쓴 위 등식은 softmax가 무엇을 하는지를 한 줄로 말해 준다. 로짓의 가중 평균(높은 점수 쪽으로 몰리는 힘)과 엔트로피(고르게 퍼지는 힘)의 합을 가장 크게 하는 분포가 softmax이고, 그 최댓값이 ln Z다. 로짓이 (2, 0)이면 ln Z = 2.1269인데, softmax (0.8808, 0.1192)를 넣으면 1.7616 + 0.3653 = 2.1269로 ln Z와 같다. 다른 분포를 넣으면 어떻게 되는지는 아래 문제 6에서 직접 넣어 본다.
클래스가 두 개인 로그 분배함수 ψ(z) = ln(e^(z₁) + e^(z₂))에 대해 (가) η = (0.7, 0.3)에서 ψ*(η)를 구하고, (나) η = (0.7, 0.7)이면 어떻게 되는지 말하고, (다) 로짓이 (2, 0)일 때 ln Z와 Σ pᵢzᵢ + H(p)를 여러 p에서 비교하라. 여기서 η는 켤레 ψ*에 넣는 벡터인데, 확률이 될지 아직 모르는 아무 벡터라서 p와 다른 글자를 쓴다.
켤레에 넣을 두 벡터 η = (0.7, 0.3), (0.7, 0.7)과 (다)의 로짓 (2, 0)
김민준
(가)는 쉬워요. ψ의 그래디언트가 softmax니까 softmax(z) = (0.7, 0.3)이 되는 z를 찾으면 돼요. z = (ln 0.7, ln 0.3)이면 합이 1이라 ln Z = 0이고, ψ*(η) = 0.7 ln 0.7 + 0.3 ln 0.3 − 0 = −0.6109. 음의 엔트로피예요.
이서연
그런데 그 z가 유일하진 않아. logsumexp는 엄격하게 볼록(어느 방향으로 잘라 봐도 곧은 데가 없는 볼록)이니까 그래디언트와 z가 일대일일 거라고 생각했는데… z에 (1, 1)을 더해도 softmax가 안 바뀌잖아.
김민준
그거 과제에서 overflow 막으려고 로짓에서 max를 빼던 트릭이잖아. 상수를 빼도 답이 안 바뀌어서 그렇게 했던 거고.
선생님
둘 다 중요한 걸 짚었어요. ψ(z + c(1, 1)) = ψ(z) + c니까, ψ는 (1, 1) 방향으로는 곡선이 아니라 직선이에요. 엄격하게 볼록이 아니에요. 서연 학생, 그럼 ψ*(η)는 z를 어느 걸 고르느냐에 따라 달라질까요?