cross-entropy 손실함수 완전 정복 — 심화 학습서

01. cross-entropy의 뿌리 — 정보이론 기초

목차

앞 장에서 약속한 그림이 있다. 모델 출력은 확률분포이고, 그게 정답 분포에서 얼마나 떨어졌는지를 cross-entropy가 잰다. 이 장은 그 cross-entropy가 어디서 왔는지 정보이론의 가장 작은 벽돌부터 쌓는다. 출발점은 "한 사건의 놀람"이다. 거기서 entropy, cross-entropy, KL divergence, 최대우도(MLE)까지 한 칸도 건너뛰지 않고 잇는다. 사슬의 끝에서 00장 §0.5의 logq-\log q가 "one-hot 라벨에 특수화한 cross-entropy"라는 정체를 드러낸다.

이 장이 세우는 개념 사슬을 먼저 한 장으로 본다. 아래 그림은 확률에서 출발해 분류 손실과 최대우도로 갈라지는 흐름이다.

average over true p

use model q, average over true p

one-hot label

empirical p hat

probability p(x)

self-information
I(x) = -log p(x)
(surprise)

entropy H(p)
= E_p[-log p]
(mean surprise)

cross-entropy H(p,q)
= E_p[-log q]

KL divergence
D_KL = H(p,q) - H(p) >= 0

classification loss
-log q_correct

= mean NLL
= maximum likelihood

읽고 나면 손에 쥐게 될 결론은 여섯 가지다.

  1. CE는 한 단어로 "놀람의 평균"이다. 한 사건의 놀람은 logp(x)-\log p(x). 이걸 진짜 분포 pp로 평균 내면 entropy H(p)H(p)다. 모델 분포 qq의 놀람을 진짜 분포 pp로 평균 내면 cross-entropy H(p,q)H(p,q)다.
  2. 분류의 logq-\log q는 CE의 특수경우다. 라벨이 one-hot이면 합에서 정답 항만 살아남아 H(p,q)=logqcH(p,q)=-\log q_c가 된다.
  3. CE와 KL은 상수 하나 차이다: H(p,q)=H(p)+DKL(pq)H(p,q) = H(p) + D_{KL}(p\|q). H(p)H(p)는 진짜 분포만의 성질이라 모델과 무관한 상수다.
  4. Gibbs 부등식 DKL(pq)0D_{KL}(p\|q)\ge 0을 Jensen으로 증명한다(§1.5). 등호는 p=qp=q일 때만이다. 여기서 H(p,q)H(p)H(p,q)\ge H(p)가 나오고, CE 손실의 하한이 H(p)H(p)임이 따라온다.
  5. CE 최소화는 최대우도추정(MLE)과 같다. 평균 음의 로그우도가 경험분포에 대한 cross-entropy와 글자 그대로 같기 때문이다(§1.6).
  6. CE/KL은 거리(metric)가 아니다. DKL(pq)DKL(qp)D_{KL}(p\|q)\ne D_{KL}(q\|p)로 비대칭이다(§1.8).

1.1 한 사건의 "놀람" — self-information

정의: 왜 음의 로그인가

확률 p(x)p(x)로 일어나는 한 사건 xxself-information(자기정보, 놀람)을 다음으로 정의한다.

I(x)=logp(x)=log1p(x)\boxed{\,I(x) = -\log p(x) = \log\frac{1}{p(x)}\,}

이름은 거창하지만 뜻은 단순하다. "이 사건이 일어났다는 걸 알았을 때 얼마나 놀랐나"이고, 곧 "얼마나 새로운 정보를 얻었나"이다.

왜 하필 이 식일까. 좋은 놀람 측정자라면 마땅히 가져야 할 상식적 요구사항을 적어 보면, 위 식이 그걸 유일하게 만족한다는 게 드러난다.

  1. 드문 사건일수록 놀람이 커야 한다. pp가 작을수록 II가 커야 한다. 1/p1/p가 커지고 log(1/p)\log(1/p)도 커진다. ✔
  2. 확실한 사건(p=1p=1)은 놀람이 0. "해가 동쪽에서 떴다"는 소식엔 정보가 없다. log1=0-\log 1 = 0. ✔
  3. 불가능에 가까운 사건(p0p\to0)은 놀람이 무한대. logp-\log p \to \infty. ✔
  4. 독립 사건의 놀람은 더해져야 한다(가산성). 이것이 로그를 강제한다.

요구사항 1~3만으로는 부족하다. "작은 pp에서 크고, 1에서 0, 0에서 무한대"인 함수는 여럿이다(1/p11/p - 1 같은 것도 된다). 결정타는 4번 가산성이다.

가산성이 로그를 강제한다

두 사건 x,yx,y독립이면 동시에 일어날 확률은 곱이다: p(x,y)=p(x)p(y)p(x,y)=p(x)\,p(y). 그런데 정보(놀람)는 곱이 아니라 더해지는 게 자연스럽다. "오늘 비가 왔다(놀람 aa)"와 "주가가 올랐다(놀람 bb)"가 서로 무관하면, 둘 다 들었을 때의 총 놀람은 a+ba+b여야 한다.

"확률은 곱, 정보는 합"을 잇는 함수는 로그뿐이다. 곱을 합으로 바꾸는 유일한 연속함수가 로그다(§0.3).

I(x,y)=logp(x,y)=log(p(x)p(y))=logp(x)logp(y)=I(x)+I(y).I(x,y) = -\log p(x,y) = -\log\big(p(x)p(y)\big) = -\log p(x) - \log p(y) = I(x) + I(y).\quad\checkmark

log(ab)=loga+logb\log(ab)=\log a+\log b가 그대로 가산성으로 번역됐다. 그래서 놀람의 정의에 로그가 들어간다.

작은 예제 — 동전과 주사위

밑 2(bit)로 계산한다. "정보 1 bit = 예/아니오 질문 한 번으로 가려지는 불확실성"이라 읽으면 직관적이다.

사건 pp I=log2pI=-\log_2 p 직관
공정 동전이 앞면 12\tfrac12 log212=1-\log_2\tfrac12 = 1 bit 예/아니오 1번이면 충분
공정 주사위가 "3" 16\tfrac16 log262.585\log_2 6 \approx 2.585 bit 6갈래는 질문 2~3번어치
주사위 두 개가 "3,5"(독립) 136\tfrac1{36} log2365.170\log_2 36 \approx 5.170 bit =2×2.585= 2\times 2.585 (가산성!)
편향동전(p=0.9p_\text{앞}=0.9)이 앞면 0.90.9 log20.90.152-\log_2 0.9 \approx 0.152 bit 예상대로라 거의 안 놀람
같은 동전이 뒷면(희귀) 0.10.1 log20.13.322-\log_2 0.1 \approx 3.322 bit 드무니까 크게 놀람

마지막 두 줄이 핵심 직관이다. 예상한 일엔 거의 안 놀라고(II 작음), 뜻밖의 일엔 크게 놀란다(II 큼). 분류기가 정답을 0.9로 예측해서 맞히면 거의 안 놀라고 손실이 작다. 정답에 0.1밖에 안 줬는데 그게 정답이면 크게 놀라고 손실이 크다. 벌써 cross-entropy 손실의 그림자가 보인다.


광고 · Advertisements

1.2 entropy H(p)H(p) — 평균 놀람, 불확실성

정의: self-information의 기댓값

한 사건의 놀람이 I(x)=logp(x)I(x)=-\log p(x)였다. 그럼 분포 pp 전체의 "평균적 놀람"은 자연스럽게 기댓값(§0.4)으로 정의된다. 이것이 Shannon entropy다.

H(p)=Exp[logp(x)]=xp(x)logp(x)\boxed{\,H(p) = \mathbb{E}_{x\sim p}\big[-\log p(x)\big] = -\sum_x p(x)\log p(x)\,}

관례 하나를 둔다. p(x)=0p(x)=0인 항은 0log0:=00\cdot\log 0 := 0으로 둔다. limp0+plogp=0\lim_{p\to0^+}p\log p=0이라 모순이 없다. one-hot CE에서 0인 항들이 사라지는 근거가 이것이다.

엔트로피는 세 가지로 읽을 수 있고, 전부 같은 말이다.

  • (놀람) 이 분포에서 사건을 하나 뽑으면 평균적으로 얼마나 놀라는가.
  • (불확실성) 결과를 알기 전 얼마나 모르는가. 클수록 더 예측 불가다.
  • (부호 길이) 이 분포의 메시지를 최적으로 압축하면 사건당 평균 몇 bit가 드는가(Shannon 부호화 정리). HH는 도달 가능한 가장 짧은 평균 부호 길이다. 곧 볼 cross-entropy가 "틀린 부호 길이"인 것과 대비된다.

언제 최대이고 언제 0인가

  • 확정분포(한 결과가 확률 1) → H=0H=0. 놀랄 게 없다. H(p)=1log10log0=0H(p)=-1\cdot\log 1 - \sum 0\cdot\log 0 = 0. one-hot 라벨이 바로 이 경우이고, CE 하한이 0인 이유가 여기 있다(§1.4).
  • 균등분포(kk개 결과가 각 1/k1/k) → H=logkH=\log k로 최대. 가장 예측 불가하다. 같은 결과 수에서 균등분포보다 엔트로피가 큰 분포는 없다. 이건 §1.5에서 KL로 증명한다.

동전 엔트로피 — 직접 계산

p()=p, p()=1pp(\text{앞})=p,\ p(\text{뒤})=1-p인 동전의 엔트로피는 H(p)=plogp(1p)log(1p)H(p)=-p\log p-(1-p)\log(1-p). bit 단위로 직접 계산하면 아래와 같다.

pp(앞 확률) HH (bits) HH (nats) 한마디
0.50.5 1.0001.000 0.6930.693 최대 불확실 — 진짜 예측 불가, 1 bit 꽉 채움
0.250.25 0.8110.811 0.5620.562 약간 치우침
0.100.10 (또는 0.900.90) 0.4690.469 0.3250.325 꽤 치우침 — 어느 쪽 나올지 대충 안다
0.010.01 (또는 0.990.99) 0.0810.081 0.0560.056 거의 확정 — 놀랄 일 거의 없음
0.000.00 (또는 1.001.00) 0.0000.000 0.0000.000 확정 — 0

곡선은 p=0.5p=0.5에서 봉우리(최대 1 bit)이고, 양 끝(p0, p1p\to0,\ p\to1)에서 0으로 떨어지는 위로 볼록한 종 모양이다. 동전이 공정할수록 결과를 모르고 불확실이 크다. 한쪽으로 쏠릴수록 결과를 미리 알 수 있고 불확실이 작다. 공정 6면 주사위는 H=log262.585H=\log_2 6\approx 2.585 bit =ln61.792=\ln 6\approx 1.792 nat이다. 결과가 많고 균등할수록 엔트로피가 크다.

아래 그림은 한 사건의 놀람을 진짜 분포로 평균하면 엔트로피가 됨을 보여 준다.

E over true p : average

self-information
I(x) = -log p(x)
(surprise of one event)

entropy H(p)
= -sum p log p
(mean surprise = uncertainty
= optimal code length)


1.3 cross-entropy H(p,q)H(p,q) — 이 책의 핵심

정의: "틀린 분포 qq의 놀람을, 진짜 분포 pp로 평균"

엔트로피는 "진짜 분포 pp의 놀람 logp-\log p를, 진짜 분포 pp로 평균"이었다. 여기서 한 글자만 바꾼다. 놀람을 잴 때 진짜 pp 대신 모델이 믿는 분포 qq를 쓴다. 평균은 여전히 진짜 pp로 낸다. 사건은 현실에서 진짜 분포대로 일어나기 때문이다.

H(p,q)=Exp[logq(x)]=xp(x)logq(x)\boxed{\,H(p,q) = \mathbb{E}_{x\sim p}\big[-\log q(x)\big] = -\sum_x p(x)\log q(x)\,}

이것이 cross-entropy(교차 엔트로피)다. 교차(cross)인 이유는 두 분포가 엇갈려 들어가기 때문이다. 평균 가중치는 pp에서, 놀람은 qq에서 온다.

두 식을 나란히 두면 차이가 한눈에 보인다.

H(p)=xp(x)logp(x),H(p,q)=xp(x)logq(x).H(p) = -\sum_x p(x)\log\,\mathbf{p}(x), \qquad H(p,q) = -\sum_x p(x)\log\,\mathbf{q}(x).

안쪽 로그의 분포만 pqp\to q로 바뀌었다. 그래서 p=qp=q이면 H(p,q)=H(p)H(p,q)=H(p)로 자동 일치한다.

여기서 pp는 00장 §0.6에서 못 박은 진짜 분포다(정답 측). qq는 모델 예측 분포다. 정보이론 장이므로 pp는 진짜 분포, qq는 예측 분포로 읽는다.

부호화 직관 — "남의 코드북으로 내 메시지 보내기"

엔트로피 H(p)H(p)는 "진짜 분포 pp에 맞춰 만든 최적 부호의 평균 길이"였다. 그런데 우리가 분포를 잘못 알아서, 실제로는 pp인 데이터를 qq가 진짜인 줄 알고 만든 부호로 보낸다고 하자. 그 부호는 사건 xx에 길이 logq(x)-\log q(x)를 배정한다. 진짜로 사건이 일어나는 빈도는 p(x)p(x)다. 그러니 평균 부호 길이는

xp(x)(logq(x))=H(p,q).\sum_x p(x)\cdot\big(-\log q(x)\big) = H(p,q).

즉 cross-entropy는 "틀린 코드북 qq로, 진짜 분포 pp의 메시지를 보낼 때의 평균 길이"다. 틀린 코드북을 썼으니 최적(H(p)H(p))보다 길어질 수밖에 없다. 이 "절대 짧아질 수 없음"은 §1.5의 H(p,q)H(p)H(p,q)\ge H(p)로 정식화된다. 모델 학습이란 코드북 qq를 진짜 pp에 맞춰 고쳐서 이 낭비를 0으로 줄여가는 일이다.


1.4 분류로의 특수화 — logq-\log q의 정체

이제 00장 §0.5의 CE=logq\text{CE}=-\log q가 어디서 왔는지 정확히 보인다. 분류에서 정답 라벨은 보통 one-hot이다. 진짜 클래스가 cc라면 진짜 분포는 이렇다.

p(x)={1x=c (정답)0xc.p(x) = \begin{cases}1 & x = c \ (\text{정답})\\ 0 & x \ne c.\end{cases}

pp(확정분포)를 cross-entropy 정의에 그대로 대입한다. 합은 모든 클래스 xx에 대해 잡는다.

H(p,q)=xp(x)logq(x)=p(c)=1logq(c)xcp(x)=0logq(x).H(p,q) = -\sum_x p(x)\log q(x) = -\underbrace{p(c)}_{=1}\log q(c) - \sum_{x\ne c}\underbrace{p(x)}_{=0}\log q(x).

xcx\ne c인 항은 전부 p(x)=0p(x)=0이라 사라진다(0logq=00\cdot\log q=0, §1.2 관례). 정답 항 p(c)=1p(c)=1만 남는다.

H(p,q)=logq(c)=logq정답\boxed{\,H(p,q) = -\log q(c) = -\log q_{\text{정답}}\,}

이것이 00장 logq-\log q의 정체다. "one-hot 라벨에 특수화한 cross-entropy"인 것이다. q정답q_{\text{정답}}(이 책 기호로 qcq_c)은 모델이 정답 클래스에 준 확률이고, logqc-\log q_c는 §1.1의 self-information다. 곧 "모델이 정답을 보고 느낀 놀람"이다. 두 끝값을 다시 짚는다.

  • qc1q_c\to1 (정답을 확신): log1=0-\log 1 = 0 → 손실 0. 안 놀람.
  • qc0q_c\to0 (정답을 거의 배제): logq+-\log q\to+\infty → 손실 무한대. 크게 놀람.

00장 §0.5의 "정답에 얼마나 놀랐는가" 한 줄이 정확히 이 식이다. one-hot이 아닌 soft label이면 정답 항만 남지 않고 모든 항이 살아남는다(§1.7, label smoothing의 뿌리).

아래 그림은 one-hot 라벨을 넣으면 cross-entropy가 정답 항 하나로 줄어드는 과정이다.

only x=c term survives

cross-entropy
H(p,q) = -sum p(x) log q(x)

one-hot label p:
p(c)=1, p(x != c)=0

H(p,q) = -log q(c)
= classification loss
= surprise at the true class

작은 예제 (전체 계산은 §1.7)

진짜 정답이 클래스 1(one-hot p=(1,0,0)p=(1,0,0))이고 모델 예측이 q=(0.7,0.2,0.1)q=(0.7,0.2,0.1)이라 하자. 정답 클래스에 0.7을 줬으므로

H(p,q)=logq1=ln0.70.357 nat  (=0.515 bit).H(p,q) = -\log q_1 = -\ln 0.7 \approx 0.357\ \text{nat} \;(=0.515\ \text{bit}).

예측이 나빠져 q=(0.4,0.4,0.2)q=(0.4,0.4,0.2)가 되면 ln0.40.916-\ln 0.4\approx 0.916 nat으로 손실이 커진다. 정답 확률이 떨어질수록 더 놀라고, 손실이 커진다. ✔


1.5 KL divergence — cross-entropy와 entropy의 "차이"

정의와 핵심 분해

두 분포 p,qp,q 사이의 Kullback–Leibler divergence(상대 엔트로피)는 다음으로 정의한다.

DKL(pq)=xp(x)logp(x)q(x)=Exp ⁣[logp(x)q(x)]\boxed{\,D_{KL}(p\,\|\,q) = \sum_x p(x)\log\frac{p(x)}{q(x)} = \mathbb{E}_{x\sim p}\!\left[\log\frac{p(x)}{q(x)}\right]\,}

직관은 이렇다. 진짜 분포가 pp인데 qq로 믿었을 때, 사건당 평균적으로 더 낭비하는 놀람(부호 길이)이다. §1.3의 부호화 비유로는 "틀린 코드북 qq가 최적보다 얼마나 더 긴가"다.

이제 logpq=logplogq\log\frac{p}{q}=\log p-\log q(§0.3)를 써서 풀면 KL이 CE와 H로 깔끔하게 쪼개진다.

DKL(pq)=xp(x)[logp(x)logq(x)]=xp(x)logp(x)=H(p)    xp(x)logq(x)=H(p,q)=H(p)+H(p,q)=H(p,q)H(p).\begin{aligned} D_{KL}(p\|q) &= \sum_x p(x)\big[\log p(x) - \log q(x)\big] \\ &= \underbrace{\sum_x p(x)\log p(x)}_{=\,-H(p)} \;-\; \underbrace{\sum_x p(x)\log q(x)}_{=\,-H(p,q)} \\ &= -H(p) + H(p,q) = H(p,q) - H(p). \end{aligned}

양변을 정리하면 이 책의 중심 항등식이 나온다.

H(p,q)=H(p)+DKL(pq)\boxed{\,H(p,q) = H(p) + D_{KL}(p\,\|\,q)\,}

말로 풀면 이렇다. cross-entropy는 entropy(피할 수 없는 본질적 불확실성)에 KL(모델이 틀려서 생기는 추가 낭비)을 더한 것이다. 학습이 줄일 수 있는 건 두 번째 항 DKLD_{KL}뿐이다. H(p)H(p)는 데이터가 정하는 상수이기 때문이다.

아래 그림은 이 분해를 한 줄로 보여 준다. 가운데 항 H(p)H(p)가 상수, 오른쪽 항 DKLD_{KL}이 학습이 줄이는 부분이다.

H(p,q) = H(p) + D_KL(p||q)

cross-entropy
H(p,q)
(mean surprise of model)

=

entropy H(p)
(intrinsic uncertainty,
independent of q = const)

+

D_KL(p||q) >= 0
(waste due to wrong q,
what learning reduces)

Gibbs 부등식 DKL0D_{KL}\ge 0 — Jensen으로, 학부 눈높이로 천천히

위 분해가 의미를 가지려면 DKL0D_{KL}\ge 0이 보장돼야 한다. 거기서 H(p,q)H(p)H(p,q)\ge H(p)가 나온다. 이를 Gibbs 부등식이라 하고, Jensen 부등식으로 증명한다. 한 줄도 안 막히게 보조 도구부터 깐다.

보조 도구 1 — 오목함수란? 함수 φ\varphi오목(concave, 위로 볼록)하다는 건 그래프가 활처럼 위로 휘었다는 뜻이다. 두 점을 잡아 직선(현)을 그으면, 그 직선이 항상 그래프 아래에 깔린다. 로그가 그렇다. (logz)=1/z2<0(\log z)'' = -1/z^2 < 0이라 어디서나 위로 볼록하다. 2차 미분이 음수면 오목이다.

보조 도구 2 — Jensen 부등식. φ\varphi가 오목하면, 임의의 확률가중 평균에 대해 다음이 성립한다.

E[φ(Z)]φ(E[Z]).\mathbb{E}[\varphi(Z)] \le \varphi\big(\mathbb{E}[Z]\big).

왜 성립하는지는 직관으로 잡힌다. 오목함수는 위로 휘었다. 그래서 "여러 값을 함수에 먼저 넣고 평균낸 것"(왼쪽)보다 "값들을 먼저 평균낸 뒤 함수에 넣은 것"(오른쪽)이 항상 위다. 활의 안쪽(현)이 바깥쪽(곡선)보다 아래에 있는 것과 같다. 등호는 ZZ가 사실상 한 값으로 고정(상수)이거나, φ\varphi가 그 구간에서 직선일 때만 성립한다.

이제 증명에 들어간다. 목표는 DKL(pq)0D_{KL}(p\|q)\ge 0이다. 다루기 쉽게 부호를 뒤집어 DKL0-D_{KL}\le 0을 보인다.

증명 — 1단계: 부호 뒤집고 정리. q(x)=0q(x)=0인데 p(x)>0p(x)>0인 곳이 있으면 그 항이 plogp0=+p\log\frac{p}{0}=+\inftyDKL=+0D_{KL}=+\infty\ge0으로 자명하다. 그러니 "p(x)>0p(x)>0이면 q(x)>0q(x)>0"인 경우만 다룬다. p(x)=0p(x)=0인 항은 합에 기여하지 않으므로(0log()=00\cdot\log(\cdot)=0), p(x)>0p(x)>0인 항만 모은다.

DKL(pq)=x:p(x)>0p(x)logq(x)p(x)=Exp ⁣[logq(x)p(x)].-D_{KL}(p\|q) = \sum_{x:\,p(x)>0} p(x)\log\frac{q(x)}{p(x)} = \mathbb{E}_{x\sim p}\!\left[\log\frac{q(x)}{p(x)}\right].

부호를 뒤집으면 분수가 pq\frac{p}{q}에서 qp\frac{q}{p}로 뒤집힌다.

2단계: Jensen 적용. 이건 "어떤 양 Z=q(x)p(x)Z=\frac{q(x)}{p(x)}의 로그의 기댓값"이다. φ=log\varphi=\log는 오목이므로 보조 도구 2를 그대로 쓴다. 기댓값을 로그 안으로 밀어넣을 수 있다(부등호 한 번 발생).

Exp ⁣[logq(x)p(x)]    logExp ⁣[q(x)p(x)].\mathbb{E}_{x\sim p}\!\left[\log\frac{q(x)}{p(x)}\right] \;\le\; \log\,\mathbb{E}_{x\sim p}\!\left[\frac{q(x)}{p(x)}\right].

3단계: 안쪽 기댓값을 계산. 기댓값의 정의(§0.4)를 펴면 p(x)p(x)가 분모의 p(x)p(x)와 약분된다.

Exp ⁣[q(x)p(x)]=x:p(x)>0p(x)q(x)p(x)=x:p(x)>0q(x).\mathbb{E}_{x\sim p}\!\left[\frac{q(x)}{p(x)}\right] = \sum_{x:\,p(x)>0} p(x)\cdot\frac{q(x)}{p(x)} = \sum_{x:\,p(x)>0} q(x).

4단계: 마무리. 마지막 합은 qq의 일부 확률만 더한 것이라 1을 넘을 수 없다: x:p(x)>0q(x)xq(x)=1\sum_{x:p(x)>0} q(x) \le \sum_x q(x) = 1. 따라서

DKL(pq)    log ⁣(x:p(x)>0q(x))    log1=0.-D_{KL}(p\|q) \;\le\; \log\!\Big(\sum_{x:p(x)>0} q(x)\Big) \;\le\; \log 1 = 0.

양변에 1-1을 곱하면(부등호 뒤집힘) 결론이다.

DKL(pq)0.\boxed{\,D_{KL}(p\|q) \ge 0.\,}

5단계: 등호는 p=qp=q일 때만. 위 사슬에서 등호가 되려면 두 부등식이 모두 등호여야 한다.

  • (i) Jensen 등호 → 평균낸 양 Z=q(x)p(x)Z=\frac{q(x)}{p(x)}가 (pp 하에서) 상수 cc여야 한다. 즉 q(x)=cp(x)q(x)=c\,p(x).
  • (ii) 4단계 부등식 등호x:p(x)>0q(x)=1\sum_{x:p(x)>0}q(x)=1, 즉 p>0p>0인 곳 밖으로 qq가 새지 않는다.

(i)을 모든 xx에 대해 더하면 xq(x)=cxp(x)=c1=c\sum_x q(x)=c\sum_x p(x)=c\cdot 1 = c다. 그런데 qq도 분포라 xq(x)=1\sum_x q(x)=1이다. 따라서 c=1c=1, 곧 q(x)=p(x)q(x)=p(x), 즉 q=pq=p다. 역으로 p=qp=q이면 모든 로그항이 log1=0\log 1=0이라 DKL=0D_{KL}=0이다. 그러므로 등호는 정확히 p=qp=q일 때만이다. \blacksquare

아래 그림은 이 증명의 다섯 단계를 한 줄로 요약한다.

goal: D_KL(p||q) >= 0

step 1: -D_KL = E_p[ log(q/p) ]
(flip sign)

step 2: Jensen, log is concave
E[log Z] <= log E[Z]

step 3: E_p[q/p] = sum q(x)
(p cancels)

step 4: sum q(x) <= 1
so -D_KL <= log 1 = 0

D_KL >= 0
equality iff p = q

따름정리들 — 한 번에 정리

  • H(p,q)H(p)H(p,q)\ge H(p) (등호는 p=qp=q). 중심 항등식 H(p,q)=H(p)+DKLH(p,q)=H(p)+D_{KL}DKL0D_{KL}\ge0을 넣으면 즉시 나온다. 틀린 분포로 부호화하면 최적보다 절대 짧아질 수 없다는 §1.3의 코드북 비유가 정식화됐다. 따라서 CE 손실의 하한은 H(p)H(p)다.
    • 분류(one-hot): H(p)=0H(p)=0이므로 CE 하한은 0이다. 모델이 정답을 완벽히 확신(qc=1q_c=1)할 때만 도달한다.
  • 균등분포가 엔트로피 최대. qq를 균등분포 u(x)=1/ku(x)=1/k로 두면 0DKL(pu)=logkH(p)0\le D_{KL}(p\|u)=\log k - H(p), 즉 H(p)logkH(p)\le\log k. §1.2에서 주장만 했던 것이 여기서 증명된다.

왜 "CE 최소화 = KL 최소화"인가 — 학습의 핵심

모델 qθq_\theta를 파라미터 θ\theta로 학습한다고 하자. 진짜 분포 pp는 우리가 못 바꾼다(데이터가 정한다). 중심 항등식을 θ\theta의 함수로 보면 이렇다.

H(p,qθ)CE 손실=H(p)θ와 무관, 상수+DKL(pqθ)θ에 의존.\underbrace{H(p,\,q_\theta)}_{\text{CE 손실}} = \underbrace{H(p)}_{\theta\text{와 무관, 상수}} + \underbrace{D_{KL}(p\,\|\,q_\theta)}_{\theta\text{에 의존}}.

H(p)H(p)θ\theta로 미분하면 0인 상수다. 그러므로 다음이 성립한다.

  argminθH(p,qθ)  =  argminθDKL(pqθ)  \boxed{\;\arg\min_\theta H(p,q_\theta) \;=\; \arg\min_\theta D_{KL}(p\,\|\,q_\theta)\;}

CE를 최소화하는 것과 KL을 최소화하는 것은 같은 최적화 문제다. 손실 값은 H(p)H(p)만큼 다르지만 최적 θ\theta는 동일하다. 그리고 DKL0D_{KL}\ge0이며 =0=0qθ=pq_\theta=p일 때뿐이다. 따라서 CE 최소화는 예측분포 qθq_\theta를 진짜분포 pp에 가능한 한 붙이는 일이다. 이것이 "cross-entropy 손실을 줄인다"의 진짜 의미다.


광고 · Advertisements

1.6 최대우도(MLE)와의 동치

이제 정보이론(CE)과 통계학(우도)이 같은 것임을 보인다. 학부생이 한 줄씩 따라올 수 있게 단계로 푼다.

상황. 데이터 {x1,,xN}\{x_1,\dots,x_N\}를 모델 qθq_\theta로 설명한다. 통계학의 우도(likelihood)는 "이 모델이 관측 데이터를 만들어 낼 확률"이고, i.i.d.(독립동일분포) 가정 하에 곱이다.

L(θ)=i=1Nqθ(xi).L(\theta) = \prod_{i=1}^N q_\theta(x_i).

최대우도추정(MLE)은 이 LL을 가장 크게 하는 θ\theta를 고른다.

1단계 — 로그를 씌운다. 곱은 다루기 어렵고 수치적으로도 위험하다(아주 작은 수의 곱은 언더플로로 0이 된다). 그래서 단조증가하는 log\log를 씌운다. argmax\arg\max는 변하지 않는다(§0.3).

logL(θ)=i=1Nlogqθ(xi).\log L(\theta) = \sum_{i=1}^N \log q_\theta(x_i).

2단계 — 부호를 뒤집고 NN으로 나눈다. 최적화는 보통 최소화로 통일하므로 음수를 붙인다(maxmin\max\to\min). 데이터 크기에 안 휘둘리게 평균낸다. 이것이 평균 음의 로그우도(mean Negative Log-Likelihood, NLL)다.

LNLL(θ)=1Ni=1Nlogqθ(xi).\mathcal{L}_{\text{NLL}}(\theta) = -\frac1N\sum_{i=1}^N \log q_\theta(x_i).

3단계 — 경험분포를 끼워 넣는다. 데이터로부터 경험분포(empirical distribution) p^\hat p를 정의한다: p^(x)=x가 데이터에서 나온 횟수N\hat p(x) = \dfrac{x\text{가 데이터에서 나온 횟수}}{N}. 그러면 "샘플 합/NN"은 "p^\hat p에 대한 기댓값"과 정확히 같다(1Nif(xi)=xp^(x)f(x)\frac1N\sum_i f(x_i)=\sum_x \hat p(x) f(x)). 이걸 NLL에 적용하면 다음과 같다.

LNLL(θ)=xp^(x)logqθ(x)=H(p^,qθ).\mathcal{L}_{\text{NLL}}(\theta) = -\sum_x \hat p(x)\,\log q_\theta(x) = H(\hat p,\, q_\theta).

결론.

  1Ni=1Nlogqθ(xi)  =  H(p^,qθ)  \boxed{\;-\frac1N\sum_{i=1}^N \log q_\theta(x_i) \;=\; H(\hat p,\,q_\theta)\;}

평균 음의 로그우도는 경험분포에 대한 cross-entropy와 글자 그대로 같다. 따라서 세 문장이 동의어가 된다.

maxθL(θ)    minθH(p^,qθ)    minθDKL(p^qθ).\max_\theta L(\theta) \;\Longleftrightarrow\; \min_\theta H(\hat p, q_\theta) \;\Longleftrightarrow\; \min_\theta D_{KL}(\hat p\,\|\,q_\theta).

CE 최소화는 최대우도추정이고, 경험분포와의 KL 최소화이기도 하다. 분류에서 한 샘플의 라벨이 one-hot이면 logqθ(xi)=logqθ(정답i)\log q_\theta(x_i)=\log q_\theta(\text{정답}_i)다. 그래서 위 NLL은 우리가 매일 쓰는 1Ni[logqθ(정답i)]\frac1N\sum_i[-\log q_\theta(\text{정답}_i)] 그 자체가 된다.

아래 그림은 우도에서 출발해 cross-entropy(그리고 KL)에 닿는 변형 단계다.

log (monotone)

negate, /N

empirical p hat

H(p hat) const

likelihood
L = prod q_theta(x_i)

log-likelihood
sum log q_theta(x_i)

mean NLL
-1/N sum log q_theta(x_i)

= H(p hat, q_theta)
cross-entropy

= D_KL(p hat || q_theta) + const


1.7 worked example 모음 — 전부 직접 계산

아래 숫자는 모두 직접 계산·검증한 값이다. 관례 0log0=00\log0=0. nat(ln\ln) 기준이며 필요한 곳에 bit도 병기한다.

① 깔끔한 정답: one-hot p=(1,0,0)p=(1,0,0), 예측 q=(0.7,0.2,0.1)q=(0.7,0.2,0.1)

계산
H(p)H(p) one-hot → 확정분포 → 00 00 nat
H(p,q)H(p,q) 1ln0.7-1\cdot\ln 0.7 (정답 항만) 0.3567\approx 0.3567 nat =0.5146=0.5146 bit
DKL(pq)D_{KL}(p|q) H(p,q)H(p)=0.35670H(p,q)-H(p)=0.3567-0 0.3567\approx 0.3567 nat

one-hot이라 H(p)=0H(p)=0이므로 H(p,q)=DKLH(p,q)=D_{KL}이 정확히 같다(§1.5 따름정리). 손실 전부가 "모델이 틀려서 생긴 낭비"다.

② 예측이 나빠지면 CE가 커진다 (같은 one-hot pp)

예측 qq 정답 확률 q1q_1 H(p,q)=lnq1H(p,q)=-\ln q_1 bit
(0.7,0.2,0.1)(0.7,0.2,0.1) 0.700.70 0.3570.357 nat 0.5150.515
(0.4,0.4,0.2)(0.4,0.4,0.2) 0.400.40 0.9160.916 nat 1.3221.322
(0.1,0.45,0.45)(0.1,0.45,0.45) 0.100.10 2.3032.303 nat 3.3223.322
(1,0,0)(\approx1,\approx0,\approx0) 1\to1 0\to 0 0\to0

정답 확률이 0.70.40.10.7\to0.4\to0.1로 떨어질수록 손실이 0.3570.9162.3030.357\to0.916\to2.303으로 단조 증가한다. 정답을 의심할수록 더 놀라고 손실이 커진다(00장 §0.5 그대로). 반대로 정답을 완벽히 확신하면 손실이 0으로 간다(하한, §1.5).

③ soft label p=(0.8,0.1,0.1)p=(0.8,0.1,0.1) — label smoothing 예고

라벨이 one-hot이 아니라 "정답일 확률 0.8, 나머지에 0.1씩"인 soft label이라 하자. 이때는 cross-entropy의 모든 항이 살아남는다(§1.4와 대비). 예측은 같은 q=(0.7,0.2,0.1)q=(0.7,0.2,0.1).

H(p,q)=[0.8ln0.7+0.1ln0.2+0.1ln0.1]=0.2853+0.1609+0.23030.6765 nat.\begin{aligned} H(p,q) &= -\big[0.8\ln 0.7 + 0.1\ln 0.2 + 0.1\ln 0.1\big]\\ &= 0.2853 + 0.1609 + 0.2303 \approx 0.6765\ \text{nat}. \end{aligned}

값 (nat) 메모
H(p)H(p) 0.63900.6390 soft label이라 0\ne0 (본질적 불확실성 존재)
H(p,q)H(p,q) 0.67650.6765 모든 항 합산
DKL(pq)D_{KL}(p|q) 0.03750.0375 =0.67650.6390=0.6765-0.6390, 직접 KL 계산과 일치 ✔

핵심 차이는 하한이다. one-hot일 땐 H(p)=0H(p)=0이라 CE 하한이 0이었다. soft label에선 H(p)=0.639>0H(p)=0.639>0이라 CE를 아무리 줄여도 0.639 밑으로 못 내려간다. 완벽 예측 q=pq=p여도 H(p,q)=H(p)=0.639H(p,q)=H(p)=0.639다. 이것이 label smoothing의 작동 원리다. 라벨을 살짝 부드럽게 만들어 모델이 정답에 지나치게 확신(qc1q_c\to1)하는 걸 막는다(과신 억제). 자세한 메커니즘과 수치는 04장이 다룬다.

④ 비대칭성 데모 — DKL(pq)DKL(qp)D_{KL}(p\|q)\ne D_{KL}(q\|p)

두 분포 a=(0.5,0.5)a=(0.5,0.5), b=(0.9,0.1)b=(0.9,0.1)로 계산한다.

DKL(ab)=0.5ln0.50.9+0.5ln0.50.10.5108,DKL(ba)=0.9ln0.90.5+0.1ln0.10.50.3681.D_{KL}(a\|b) = 0.5\ln\tfrac{0.5}{0.9}+0.5\ln\tfrac{0.5}{0.1} \approx 0.5108,\qquad D_{KL}(b\|a) = 0.9\ln\tfrac{0.9}{0.5}+0.1\ln\tfrac{0.1}{0.5} \approx 0.3681.

0.51080.36810.5108 \ne 0.3681이므로 KL은 방향에 따라 값이 다르다. 그래서 "ppqq 사이 거리"라고 부르면 안 된다(§1.8). CE도 마찬가지로 H(p,q)H(q,p)H(p,q)\ne H(q,p)다.


1.8 단위·perplexity·용어표·오개념

bits vs nats (실무 관점)

  • bit(log2\log_2): 통신·압축의 자연 단위다. "예/아니오 질문 몇 번?" 직관에 맞다.
  • nat(ln\ln): 딥러닝의 기본이다. 프레임워크의 cross_entropy, log_softmax, nll_loss는 전부 자연로그 기반이다(미분이 깔끔하다). 밑이 다르면 손실 값은 상수배로 달라진다. 하지만 argmin\arg\min(최적 파라미터)은 변하지 않으므로 학습 결과는 같다.

perplexity — 한 줄 예고

언어모델 평가에서 자주 보는 perplexity는 cross-entropy의 지수다.

PPL=eH(p,q) (nat 기준),또는2H(p,q) (bit 기준).\text{PPL} = e^{H(p,q)} \ (\text{nat 기준}),\qquad \text{또는}\quad 2^{H(p,q)}\ (\text{bit 기준}).

직관은 "모델이 다음 토큰에서 몇 갈래로 헷갈리고 있나"(유효 선택지 수)다. 균등분포 kk갈래면 H=lnkH=\ln kPPL=elnk=k\text{PPL}=e^{\ln k}=k로 정확히 선택지 수가 나온다. CE가 낮을수록 PPL이 낮고(덜 헷갈림) 좋은 모델이다. 자세한 건 04장 §4.4에서 다룬다.

정보이론 ↔ ML 용어 대응표

정보이론 용어 기호/식 ML에서의 정체
self-information(놀람) logp(x)-\log p(x) 한 샘플의 손실 기여(one-hot 정답일 때 logqc-\log q_c)
entropy H(p)=plogpH(p)=-\sum p\log p 라벨 자체의 불확실성. one-hot이면 0 → CE 손실 하한 0
cross-entropy H(p,q)=plogqH(p,q)=-\sum p\log q 분류 표준 손실(categorical CE). one-hot 특수화 = logqc-\log q_c
KL divergence DKL(pq)=H(p,q)H(p)D_{KL}(p|q)=H(p,q)-H(p) 지식증류(distillation)·VAE 정칙화·"예측을 타깃에 붙이기"
negative log-likelihood 1Nlogqθ(xi)-\frac1N\sum\log q_\theta(x_i) =H(p^,qθ)=H(\hat p,q_\theta). PyTorch nll_loss/cross_entropy
maximum likelihood maxθL(θ)\max_\theta L(\theta) =minθ=\min_\theta cross-entropy(§1.6 동치)
perplexity eH(p,q)e^{H(p,q)} 언어모델 평가지표("유효 선택지 수")

흔한 오개념

  • "CE/KL은 분포 사이 거리(metric)다" — 아니다. 수학적 거리는 (i) 대칭 d(p,q)=d(q,p)d(p,q)=d(q,p), (ii) 삼각부등식, (iii) d=0p=qd=0\Leftrightarrow p=q를 모두 만족해야 한다. KL은 비대칭(§1.7④: 0.5110.3680.511\ne0.368)이고 삼각부등식도 안 지킨다. (iii)만 만족한다. 그래서 "거리"가 아니라 발산(divergence)이라 부른다. "분포를 가깝게 한다"는 비유는 직관용일 뿐이다.
  • "CE 손실이 0이면 완벽" — 조건부. one-hot 라벨에서만 하한이 0이다. soft label이면 하한이 H(p)>0H(p)>0이라 0에 못 닿는다(§1.7③).
  • "엔트로피가 크면 나쁘다" — 아니다. H(p)H(p)는 데이터의 본질적 불확실성이지 모델 잘못이 아니다. 학습이 줄이는 건 H(p)H(p)가 아니라 DKL=H(p,q)H(p)D_{KL}=H(p,q)-H(p)뿐이다.
  • "0log00\cdot\log0은 정의 안 됨" — 관례로 0. limp0+plogp=0\lim_{p\to0^+}p\log p=0이라 모순 없이 00으로 둔다. one-hot CE에서 0인 항들이 사라지는 근거다.

1.9 전체 개념 지도 (한 장 요약)

아래 그림은 이 장에서 세운 사슬 전체다. 기초에서 출발해 분류 손실·MLE로 갈라졌다가, "min CE = min KL = MLE"로 다시 모인다.

basics

E_p (average over true p)

surprise of q, averaged over p

one-hot label

empirical p hat

H(p) const in theta

probability p(x)

log (prod to sum, monotone)

expectation E_p[.]

self-information
I(x) = -log p(x)
(surprise, additive -> log)

entropy H(p)
= -sum p log p
(mean surprise = uncertainty)

cross-entropy H(p,q)
= -sum p log q
(core loss)

KL divergence
D_KL = H(p,q)-H(p) >= 0
(Gibbs via Jensen)

classification loss
-log q_correct

= mean NLL
= maximum likelihood

min CE = min KL = MLE
= push q toward true p


cross-entropy는 모델 분포 qq의 놀람을 진짜 분포 pp로 평균한 것이고, 라벨이 one-hot이면 정답 항만 살아남아 logqc-\log q_c가 된다. CE 최소화는 KL 최소화이자 MLE다. 그런데 이 이야기는 qq가 이미 확률분포라고 가정했다. 실제 모델은 확률이 아니라 raw 점수(로짓 zz)를 낸다. 그 로짓을 확률 qq로 바꾸고 거기서 categorical CE와 BCE가 떨어지는 파이프라인은 다음 장(02)에서 본다.

출처

정보이론 표준 결과는 아래 표준 문헌에 근거한다. 본 장의 수치 예제는 모두 직접 계산·검증했다.