교차엔트로피는 왜 틀린 확신에 더 큰 벌점을 줄까 | DAKER 커뮤니티
분류 모델을 학습할 때 가장 자주 만나는 손실 함수가 교차엔트로피입니다. 이름은 다소 어렵지만, 실제로 하는 일은 꽤 직관적입니다. 정답 클래스에 높은 확률을 주면 손실이 작아지고, 틀린 클래스에 강한 확신을 보이면 손실이 크게 커집니다.
이 차이를 이해해 두면 분류 모델의 학습 목표가 훨씬 또렷해집니다. 확률, 기댓값, 가능도 같은 단어도 수식보다 문장으로 읽을 수 있게 되고, 왜 많은 프레임워크가 CrossEntropyLoss를 기본값처럼 두는지도 자연스럽게 연결됩니다.

교차엔트로피가 실제로 벌주는 것
모델의 마지막 층이 클래스마다 점수, 즉 로짓을 내면 소프트맥스가 이를 합이 1인 확률 분포로 바꿉니다. 정답 라벨이 개라면 우리가 바라는 것은 개 자리의 확률 p_개가 커지는 일입니다. 교차엔트로피 손실은 대략 L = −log p_정답으로 볼 수 있습니다.
p_정답이 1에 가까우면 log 값이 0에 가까워져 손실이 작아집니다. 반대로 p_정답이 0.01처럼 작으면 −log 값이 커져 손실이 크게 늘어납니다. 즉, 단순히 틀렸다는 사실만이 아니라 틀린 쪽에 얼마나 강하게 확신했는지가 벌점의 크기를 좌우합니다.
교차엔트로피는 정답 확률이 낮을수록 더 가파르게 손실을 키우며, 그래서 틀린 확신에 특히 큰 벌점을 줍니다.
확률과 기댓값을 분류 학습의 언어로 읽기
확률은 믿음을 숫자로 적은 것입니다
확률은 0과 1 사이의 숫자로, 어떤 사건이 얼마나 그럴듯한지를 나타냅니다. 분류에서는 이 이미지가 개일 확률 0.7처럼 읽으면 됩니다. 모든 클래스 확률의 합은 1이어야 하며, 소프트맥스가 이 제약을 강제합니다. 한 클래스의 로짓이 커질수록 그 클래스의 확률은 커지고, 다른 클래스의 확률은 상대적으로 줄어듭니다.
기댓값은 확률로 가중한 평균입니다
기댓값은 확률을 가중치로 둔 평균입니다. 주사위 예시에서는 각 면의 숫자에 그 면이 나올 확률을 곱해 더하면 평균 점수가 나옵니다. 학습에서도 같은 식으로 손실의 기댓값을 줄인다고 말합니다. 실제 구현에서는 데이터 분포에서 샘플을 뽑아 미니배치 평균 손실을 계산하는데, 이것이 기댓값의 실용적인 근사입니다.
학습에서 기댓값을 줄인다는 말은 결국 데이터 분포 위에서 평균 손실을 낮추겠다는 뜻입니다.
가능도는 정답이 나올 법함입니다
가능도(likelihood)는 모델이 정한 확률 분포 아래에서 관측된 정답이 얼마나 나올 법한지를 뜻합니다. 분류에서는 정답 클래스 확률 자체가 그 샘플의 가능도에 해당합니다. 그래서 학습의 중요한 목표 가운데 하나는 정답의 가능도를 키우는 일입니다.
이 목표는 음의 로그가능도, 즉 −log 가능도를 줄이는 것과 같은 방향입니다. 로그를 취하면 곱셈이 덧셈으로 바뀌어 계산이 쉬워지고, 최적화도 다루기 편해집니다. 여러 샘플이 독립이라고 가정하면 전체 가능도는 각 샘플 가능도의 곱이 되고, 로그를 취하면 합이 됩니다. 그래서 배치 손실이 샘플별 −log p_정답의 평균으로 자연스럽게 나타납니다.
프레임워크의 CrossEntropyLoss도 본질적으로 이 계산에 가깝습니다. 로짓에서 로그소프트맥스까지를 한 번에 안정적으로 계산하는 구현이라고 이해하면 됩니다.

벌점의 모양은 어떻게 달라질까
p_정답 = 0.9이면 L ≈ 0.105입니다. p = 0.5이면 L ≈ 0.693이고, p = 0.2이면 L ≈ 1.609입니다. p = 0.05이면 L ≈ 3.0 근처까지 커집니다.
이 숫자들이 보여주는 핵심은 분명합니다. 정답 확률이 절반일 때보다 아주 낮은 확률로 틀릴 때 손실이 훨씬 가파르게 커집니다. 그래서 모델은 정답을 겨우 맞히는 수준이 아니라, 정답 쪽으로 확률 질량을 더 강하게 모으도록 압박받습니다.
교차엔트로피는 맞고 틀림만 보지 않고, 정답에 얼마나 확률을 실었는지까지 함께 평가합니다.
원-핫 라벨 대신 부드러운 라벨(label smoothing)을 쓰면 정답에 1.0을 두지 않고 약간 분산합니다. 과도한 확신을 줄여 일반화에 도움이 되는 경우가 있습니다. 그래도 손실의 뼈대는 같습니다. 목표 분포와 모델 분포가 얼마나 다른지를 재는 일입니다. KL 다이버전스와의 관계도 같은 맥락에 있습니다.
회귀의 MSE와 왜 다를까
숫자를 예측하는 회귀에서는 평균제곱오차(MSE)처럼 거리 기반 손실을 자주 씁니다. 반면 분류에서는 클래스라는 이산적인 선택에 확률을 붙이므로, 거리보다 가능도와 교차엔트로피가 더 잘 맞습니다.
물론 예외는 있습니다. 로짓을 직접 맞추는 실험적 손실, 대비 학습, 랭킹 손실 등도 쓰입니다. 다만 입문 경로의 중심이 여전히 교차엔트로피인 이유는, 분류 문제의 목표를 가장 자연스럽게 표현하기 때문입니다.
불균형 데이터에서는 다수 클래스만 잘 맞춰도 평균 손실이 낮아 보일 수 있습니다. 이때 클래스 가중치, 포컬 로스, 샘플링 전략은 치우침을 보정하는 도구가 됩니다. 이는 기본 교차엔트로피가 틀렸다기보다, 어떤 분포를 기준으로 평균을 낼지 다시 정하는 일에 가깝습니다. F1이나 AUROC 같은 메트릭과 손실이 어긋날 때도 먼저 확인할 것은 최적화 목표와 평가 목표가 서로 다른지입니다.
실무에서 자주 만나는 장면
많은 API는 소프트맥스를 따로 적용하지 않은 로짓을 그대로 입력받아 교차엔트로피를 계산합니다. 내부에서 로그소프트맥스를 합쳐 안정적으로 처리하기 때문입니다. 직접 소프트맥스를 거친 뒤 다시 로그를 취하면 수치적으로 불안정해질 수 있어, 문서의 권장 경로를 따르는 편이 안전합니다.
다중 라벨 분류에서는 시그모이드와 이진 교차엔트로피 조합이 흔합니다. 각 클래스가 서로 배타적이지 않고 독립적으로 있을 법함을 모델링하기 때문입니다.
언어모델의 다음 토큰 예측도 본질적으로는 거대한 다중 클래스 분류입니다. 어휘 크기만큼의 클래스에 대해 −log p_정답토큰을 최소화합니다. 퍼플렉서티는 그 가능도를 읽기 쉬운 스케일로 바꾼 지표입니다. 즉, LLM 학습도 같은 확률과 가능도의 문장 위에 서 있습니다. 339+ 대회의 분류 트랙에서 보이던 손실 선택이 생성 모델에서도 이어진다고 볼 수 있습니다.
소프트맥스 온도와 확신의 조절
소프트맥스에 온도 T를 넣어 로짓을 T로 나누면 분포의 날카로움이 달라집니다. T가 작으면 분포가 더 뾰족해져 확신이 커지고, T가 크면 분포가 평평해집니다. 지식 증류에서는 선생님 모델의 부드러운 확률을 학생에게 전달하기 위해 높은 온도를 쓰기도 합니다.
서비스 추론 단계의 샘플링 온도도 같은 계열의 조절입니다. 손실 학습과 생성 샘플링은 다른 장면처럼 보이지만, 확률 질량을 어떻게 나눌지라는 질문을 공유합니다.
다만 손실이 낮다고 해서 확률이 잘 보정되었다고 볼 수는 없습니다. 예를 들어 0.9라고 예측한 사례들의 실제 정답 비율이 0.7일 수 있습니다. 온도 스케일링이나 플래토 스케일링 같은 보정은 이 간격을 줄이기 위한 후처리입니다. 경진대회에서는 랭킹 메트릭만으로 충분한 경우도 있지만, 위험도가 큰 도메인에서는 확률 숫자 자체의 의미가 더 중요해집니다.
기댓값을 어떤 분포로 취할지가 설계입니다
학습 목표를 기댓값으로 쓴다는 말은 어떤 데이터 분포의 평균 손실을 줄이겠다는 선언입니다. 그래서 학습 데이터의 분포가 실제 서비스 분포와 다르면, 학습 중 평균 손실을 잘 줄여도 현장에서 성능이 흔들릴 수 있습니다.
도메인 적응, 재가중, 커리큘럼 학습은 모두 기댓값을 취하는 분포를 바꾸는 전략으로 읽을 수 있습니다. 클래스 불균형에서 가중 손실을 쓰는 이유도 같습니다.
강화학습의 보상 기댓값, 자기지도 학습의 대비 손실, 확산 모델의 노이즈 예측 손실도 겉모습은 다르지만 어떤 분포 아래에서 평균 목표를 줄일 것인가라는 뼈대를 공유합니다. 교차엔트로피는 그중 가장 자주 보는 분류용 사례입니다.
새 손실 함수를 만났을 때는 수식보다 먼저 무엇을 평균 내고 무엇을 벌주는지 문장으로 다시 적어보는 것이 도움이 됩니다.
로그가 만드는 수치 안정성
확률을 직접 곱하면 아주 작은 숫자들의 곱이 되어 언더플로가 나기 쉽습니다. 로그 가능도로 바꾸면 합이 되어 계산이 훨씬 안정적입니다. 프레임워크가 로그소프트맥스를 한 커널로 제공하는 이유도 지수와 정규화를 안정적인 순서로 계산하기 위해서입니다.
손으로 소프트맥스를 만든 뒤 다시 로그를 취하면 큰 로짓에서 inf가 나기 쉽습니다. 문서가 로짓을 그대로 넣으라고 안내하는 이유를 여기서 이해할 수 있습니다.
라벨 스무딩, 클래스 가중치, 샘플 가중치는 모두 −log p 항에 가중을 주거나 목표 분포를 조금 바꾸는 변형입니다. 기본 식의 뼈대는 유지한 채 어떤 오류를 더 비싸게 만들지 조절하는 셈입니다. 실무에서는 손실 값을 다른 실험과 직접 비교할 때 이런 옵션이 켜져 있는지 먼저 확인하는 것이 좋습니다. 같은 이름의 CrossEntropy라도 옵션에 따라 스케일이 달라질 수 있습니다.
정리하며
이 글은 정보이론 교재의 엔트로피 증명을 대신하지는 않습니다. 대신 학습 코드와 모델 해석에 필요한 수준에서 교차엔트로피를 읽는 틀을 정리했습니다. 한 줄로 줄이면, 교차엔트로피는 틀린 확신에 더 큰 벌점을 주고 그 벌점을 줄이는 방향이 곧 정답 가능도를 키우는 방향입니다.
다음에 새로운 손실 함수를 보게 되더라도, 무엇을 정답으로 보고 어떤 확신을 얼마나 세게 벌주는지부터 읽어보면 구조가 훨씬 선명해집니다.
이 설명을 바탕으로 보면, 여러분은 교차엔트로피를 처음 배울 때 어느 지점이 가장 헷갈렸는지 떠오르시나요?