1. Cross Entropy Loss의 정의
Cross Entropy Loss는 **분류 문제(classification)**에서 가장 대표적으로 사용되는 손실 함수(loss function)이다.
모델이 예측한 확률 분포와 실제 정답 분포 사이의 차이를 측정한다.
즉, 이 loss는 다음 질문에 답한다.
“모델이 정답 클래스에 얼마나 높은 확률을 주었는가?”
정답 클래스에 높은 확률을 주면 loss는 작아지고,
정답 클래스에 낮은 확률을 주면 loss는 커진다.
2. 먼저 이해해야 할 것: 분류 문제의 출력
분류 문제에서 모델은 보통 각 클래스에 대한 점수(logit)를 출력한다.
예를 들어 3개 클래스가 있다고 하자.
- 고양이
- 개
- 새
모델 출력이 다음과 같을 수 있다.
- 고양이: 2.5
- 개: 1.2
- 새: -0.3
이 값은 아직 확률이 아니다.
이를 확률로 바꾸기 위해 보통 Softmax를 사용한다.
3. Softmax와 Cross Entropy의 관계
Softmax는 각 클래스 점수를 확률로 변환한다.
Softmax의 목적은 다음과 같다.
- 모든 출력값을 0과 1 사이로 바꿈
- 전체 합이 1이 되게 만듦
- 각 클래스의 “선택 확률”처럼 해석 가능하게 함
수식은 다음과 같다.
pi=ezi∑j=1Cezjp_i = \frac{e^{z_i}}{\sum_{j=1}^{C} e^{z_j}}pi=∑j=1Cezjezi
여기서
- ziz_izi: i번째 클래스의 logit
- pip_ipi: i번째 클래스의 예측 확률
- CCC: 클래스 수
즉, Cross Entropy Loss는 보통
- 모델이 logit 출력
- Softmax로 확률화
- 정답과 비교해 loss 계산
이라는 흐름으로 이해하면 된다.
4. Entropy와 Cross Entropy의 개념
4.1 Entropy란 무엇인가
Entropy는 정보이론에서 불확실성의 크기를 의미한다.
예를 들어 동전을 던질 때,
- 항상 앞면만 나오면 불확실성이 낮다.
- 앞면/뒷면이 반반이면 불확실성이 높다.
즉, entropy는 “예측하기 어려운 정도”를 수치화한 것이다.
4.2 Cross Entropy란 무엇인가
Cross Entropy는
실제 분포 yyy 와 예측 분포 y^\hat{y}y^ 사이의 차이를 측정하는 값이다.
쉽게 말하면,
- 실제 정답 분포가 있는데
- 모델이 다른 분포를 예측했을 때
- 그 차이 때문에 생기는 비용
이라고 볼 수 있다.
5. Cross Entropy Loss의 수식
다중 클래스 분류에서 Cross Entropy Loss는 보통 다음과 같이 쓴다.
L=−∑i=1Cyilog(y^i)L = - \sum_{i=1}^{C} y_i \log(\hat{y}_i)L=−i=1∑Cyilog(y^i)
여기서
- CCC: 클래스 개수
- yiy_iyi: 실제 정답 분포
- y^i\hat{y}_iy^i: 모델의 예측 확률
6. One-hot 정답일 때의 단순화
실제 분류 문제에서는 정답을 보통 one-hot vector로 표현한다.
예를 들어 클래스가 3개이고 정답이 “개”라면
y=[0,1,0]y = [0, 1, 0]y=[0,1,0]
이 경우 loss는 다음처럼 단순화된다.
L=−log(y^true)L = - \log(\hat{y}_{\text{true}})L=−log(y^true)
즉, 정답 클래스에 대한 예측 확률의 로그에 마이너스를 붙인 값이다.
이 식이 매우 중요하다.
Cross Entropy Loss의 본질은 결국:
“정답 클래스 확률이 높을수록 loss가 작아진다”
는 것이다.
7. 직관적으로 이해하기
정답 클래스 확률이 다음과 같다고 하자.
- 0.9 → loss = −log(0.9)-\log(0.9)−log(0.9) ≈ 0.105
- 0.5 → loss = −log(0.5)-\log(0.5)−log(0.5) ≈ 0.693
- 0.1 → loss = −log(0.1)-\log(0.1)−log(0.1) ≈ 2.303
- 0.01 → loss = −log(0.01)-\log(0.01)−log(0.01) ≈ 4.605
이것이 의미하는 바는 명확하다.
- 정답 확률이 높으면 손실이 매우 작다.
- 정답 확률이 낮으면 손실이 매우 크다.
- 특히 정답인데도 확률을 거의 0에 가깝게 주면 강한 패널티를 준다.
즉, Cross Entropy는 “틀린 확신”을 매우 강하게 벌주는 loss이다.
8. 왜 로그를 사용하는가
Cross Entropy에서 왜 단순 차이가 아니라 로그를 쓰는지 이해하는 것이 중요하다.
로그를 쓰는 이유는 다음과 같다.
첫째, 확률이 아주 작아질 때 큰 패널티를 주기 위해서이다.
정답을 0.001 같은 매우 작은 확률로 예측하면 큰 손실이 발생해야 한다.
둘째, 수학적으로 미분과 최적화가 잘 된다.
특히 Softmax와 결합했을 때 gradient 계산이 매우 깔끔해진다.
셋째, 정보이론적으로 자연스러운 해석이 가능하다.
낮은 확률로 발생한 사건은 더 큰 “정보량”을 가지며, 이를 loss로 연결할 수 있다.
9. 계산 과정 전체
Cross Entropy Loss가 실제로 어떻게 계산되는지 순서대로 보면 다음과 같다.
9.1 모델이 logit 출력
예를 들어 클래스 3개에 대해 모델이 다음을 출력했다고 하자.
z=[2.0,1.0,0.1]z = [2.0, 1.0, 0.1]z=[2.0,1.0,0.1]
9.2 Softmax 적용
y^i=ezie2.0+e1.0+e0.1\hat{y}_i = \frac{e^{z_i}}{e^{2.0} + e^{1.0} + e^{0.1}}y^i=e2.0+e1.0+e0.1ezi
계산하면 대략 다음과 같은 확률이 나온다.
y^≈[0.659,0.242,0.099]\hat{y} \approx [0.659, 0.242, 0.099]y^≈[0.659,0.242,0.099]
9.3 정답 one-hot 준비
정답이 첫 번째 클래스라면
y=[1,0,0]y = [1, 0, 0]y=[1,0,0]
9.4 Cross Entropy 계산
L=−∑iyilog(y^i)L = -\sum_i y_i \log(\hat{y}_i)L=−i∑yilog(y^i)
one-hot이므로
L=−log(0.659)L = -\log(0.659)L=−log(0.659)
결과는 약 0.417이다.
10. 이 loss가 학습에서 하는 역할
Cross Entropy Loss는 모델이 얼마나 틀렸는지를 수치화한다.
그 다음 역전파(backpropagation)를 통해 각 가중치가 이 loss를 줄이도록 업데이트된다.
전체 흐름은 다음과 같다.
- 입력을 모델에 넣음
- 모델이 logits 출력
- Softmax로 확률 계산
- Cross Entropy Loss 계산
- Loss를 기준으로 gradient 계산
- optimizer가 가중치 업데이트
즉, 학습 과정에서 Cross Entropy는 “오차 측정 기준” 역할을 한다.
11. 이진 분류와 다중 분류에서의 차이
11.1 이진 분류(Binary Classification)
이진 분류에서는 보통 Sigmoid + Binary Cross Entropy를 사용한다.
출력이 하나의 확률 ppp일 때 loss는 다음과 같다.
L=−(ylog(p)+(1−y)log(1−p))L = -\left( y\log(p) + (1-y)\log(1-p) \right)L=−(ylog(p)+(1−y)log(1−p))
여기서
- y=1y=1y=1: positive class
- y=0y=0y=0: negative class
이 식은 “정답이 1이면 ppp를 키우고, 정답이 0이면 1−p1-p1−p를 키우는 방향”으로 작동한다.
11.2 다중 클래스 분류(Multi-class Classification)
클래스가 3개 이상이고 정답이 하나인 경우에는
Softmax + Cross Entropy를 사용한다.
즉,
- 이진 분류: Sigmoid + BCE
- 다중 분류: Softmax + Cross Entropy
로 구분하는 것이 일반적이다.
12. Multi-class, Multi-label의 차이
이 부분은 매우 자주 헷갈린다.
12.1 Multi-class
여러 클래스 중 하나만 정답인 경우
예:
- 고양이
- 개
- 새
셋 중 하나만 선택
이 경우 Softmax + Cross Entropy를 사용한다.
12.2 Multi-label
여러 클래스가 동시에 정답일 수 있는 경우
예:
한 이미지에
- 사람 있음
- 자동차 있음
- 나무 있음
모두 동시에 참일 수 있음
이 경우 각 클래스별로 독립 판단해야 하므로 Sigmoid + Binary Cross Entropy를 사용한다.
13. Cross Entropy와 MSE의 차이
분류 문제에서 왜 MSE보다 Cross Entropy를 더 많이 쓰는지도 중요하다.
13.1 MSE
MSE는 예측값과 실제값의 단순 제곱 오차를 측정한다.
L=1n∑(y−y^)2L = \frac{1}{n}\sum (y - \hat{y})^2L=n1∑(y−y^)2
회귀 문제에는 적절하지만, 분류 확률 학습에는 비효율적인 경우가 많다.
13.2 Cross Entropy가 더 적합한 이유
첫째, 확률 분포 비교에 더 자연스럽다.
분류는 “정답 클래스 확률”을 맞추는 문제이므로 확률 기반 손실이 더 타당하다.
둘째, 잘못된 확신에 강한 패널티를 준다.
분류 문제에서는 이 특성이 중요하다.
셋째, gradient가 더 효과적으로 작동하는 경우가 많다.
특히 Softmax/Sigmoid와 결합 시 학습이 더 안정적이다.
즉, 분류에서는 보통 MSE보다 Cross Entropy가 더 적합하다.
14. Cross Entropy의 그래프적 성질
정답 클래스 확률 ppp에 대해 loss는
L=−log(p)L = -\log(p)L=−log(p)
형태이므로 다음 성질을 가진다.
- p→1p \to 1p→1 이면 loss는 0에 가까워짐
- p→0p \to 0p→0 이면 loss는 매우 커짐
그래서 모델이 정답 확률을 조금만 높여도 성능이 개선되고,
반대로 정답에 거의 0 확률을 주는 경우 매우 큰 벌점을 받는다.
15. Softmax와 Cross Entropy를 함께 구현하는 이유
실무에서는 Softmax를 따로 적용한 뒤 Cross Entropy를 쓰지 않고,
대부분 프레임워크가 둘을 합친 형태를 제공한다.
예를 들면
- PyTorch: nn.CrossEntropyLoss()
- TensorFlow: SparseCategoricalCrossentropy(from_logits=True)
이유는 다음과 같다.
첫째, 수치 안정성 때문이다.
Softmax 뒤에 log를 취하는 과정은 큰 값/작은 값에서 overflow, underflow 문제가 생길 수 있다.
둘째, 계산 효율 때문이다.
하나로 합치면 더 안정적이고 빠르게 구현할 수 있다.
즉, 모델 출력이 logits일 때 loss 함수 내부에서 안전하게 Softmax + log를 처리한다.
16. PyTorch에서의 의미
PyTorch의 CrossEntropyLoss는 입력으로 logits를 받는다.
즉, 모델 마지막에 Softmax를 직접 붙이지 않는 경우가 많다.
예를 들어
logits \= model(x)
loss \= criterion(logits, target)이 구조에서 criterion이 내부적으로 필요한 계산을 수행한다.
이 점을 잘못 이해해서 모델 마지막에 Softmax를 또 붙이면 학습이 비정상적으로 될 수 있다.
17. Label Smoothing과의 관계
Cross Entropy는 보통 정답을 one-hot으로 가정한다.
즉, 정답 클래스 확률은 1, 나머지는 0이다.
그런데 이렇게 하면 모델이 지나치게 확신하는 방향으로 학습될 수 있다.
이를 완화하기 위해 Label Smoothing을 사용한다.
예를 들어 클래스가 4개일 때 원래 정답이
[1,0,0,0][1, 0, 0, 0][1,0,0,0]
이었다면, Label Smoothing 후에는
[0.9,0.033,0.033,0.033][0.9, 0.033, 0.033, 0.033][0.9,0.033,0.033,0.033]
처럼 바꿀 수 있다.
효과는 다음과 같다.
- 과도한 확신 완화
- 일반화 성능 개선
- calibration 향상
즉, Cross Entropy의 변형 활용 방법 중 하나이다.
18. Class Imbalance에서의 활용
데이터가 불균형하면 Cross Entropy를 그대로 쓰는 것이 불리할 수 있다.
예를 들어
- 정상 99%
- 이상 1%
이면 모델이 전부 정상이라고 해도 정확도가 높게 나올 수 있다.
이 경우 다음과 같은 보완이 필요하다.
18.1 Class Weighting
소수 클래스에 더 큰 가중치를 부여한다.
L=−∑iwiyilog(y^i)L = - \sum_i w_i y_i \log(\hat{y}_i)L=−i∑wiyilog(y^i)
여기서 wiw_iwi는 클래스별 중요도이다.
18.2 Focal Loss
어려운 샘플에 더 집중하도록 만든 loss이다.
Cross Entropy를 기반으로 발전한 형태이다.
즉, Cross Entropy는 기본형이고, 문제 상황에 따라 가중치나 변형을 추가할 수 있다.
19. 정보이론적 해석
Cross Entropy는 단순한 공학적 손실 함수가 아니라 정보이론적 의미도 가진다.
실제 분포 PPP와 예측 분포 QQQ가 있을 때 Cross Entropy는
“실제 데이터를 QQQ로 부호화할 때 필요한 평균 정보량”처럼 해석할 수 있다.
예측 분포가 실제 분포와 가까울수록 더 효율적이고, Cross Entropy는 작아진다.
즉, 모델 학습은 결국
“실제 데이터 분포를 가장 잘 설명하는 예측 분포를 찾는 과정”이라고 볼 수 있다.
20. KL Divergence와의 관계
Cross Entropy는 KL Divergence와 밀접한 관계가 있다.
다음 관계식이 성립한다.
H(P,Q)=H(P)+DKL(P∥Q)H(P, Q) = H(P) + D_{KL}(P \parallel Q)H(P,Q)=H(P)+DKL(P∥Q)
여기서
- H(P,Q)H(P, Q)H(P,Q): Cross Entropy
- H(P)H(P)H(P): 실제 분포의 entropy
- DKL(P∥Q)D_{KL}(P \parallel Q)DKL(P∥Q): KL divergence
실제 분포 PPP는 데이터로 고정되어 있으므로, Cross Entropy를 최소화하는 것은 결국 KL divergence를 최소화하는 것과 같다.
즉, 모델이 실제 분포에 가까워지도록 학습시키는 것이다.
21. 실제 활용 분야
Cross Entropy Loss는 매우 광범위하게 사용된다.
대표적으로 다음과 같다.
- 이미지 분류
- 텍스트 분류
- 음성 명령 분류
- 감정 분석
- 개체명 인식
- 기계 번역의 토큰 예측
- 언어 모델의 다음 토큰 예측
- 의료 영상 질환 분류
- 스팸 메일 분류
사실상 “분류” 또는 “확률적 선택”이 있는 거의 모든 문제에서 사용된다고 보면 된다.
22. NLP와 LLM에서의 Cross Entropy
언어 모델에서도 Cross Entropy는 핵심이다.
예를 들어 문장이
“나는 학교에 ___”
일 때 다음 토큰 확률을 예측한다고 하자.
정답 토큰이 “간다”이면, 모델은 vocabulary 전체에 대한 확률 분포를 낸다.
이때 정답 토큰 “간다”에 대한 Cross Entropy Loss를 계산하여 학습한다.
즉, 대규모 언어 모델은 본질적으로
“매 위치에서 다음 정답 토큰에 높은 확률을 주도록 Cross Entropy를 최소화하는 방식”으로 학습된다.
23. 퍼플렉서티(Perplexity)와의 관계
NLP에서는 Cross Entropy와 함께 Perplexity를 자주 사용한다.
Perplexity는 보통 Cross Entropy의 지수 형태로 볼 수 있다.
Perplexity=eCross Entropy\text{Perplexity} = e^{\text{Cross Entropy}}Perplexity=eCross Entropy
Cross Entropy가 낮을수록 Perplexity도 낮다.
즉, 모델이 다음 토큰을 더 잘 예측한다는 의미이다.
24. 실무에서 자주 하는 실수
24.1 Softmax를 중복 적용하는 실수
프레임워크의 CrossEntropyLoss가 logits를 기대하는데
모델에서 이미 Softmax를 해버리면 문제가 생길 수 있다.
24.2 정답 형식 오류
어떤 프레임워크는 one-hot이 아니라 class index를 기대한다.
예를 들어 PyTorch의 CrossEntropyLoss는 정답을 [2, 0, 1] 같은 정수 인덱스로 받는다.
24.3 Binary와 Multi-class를 혼동
이진 분류인데 Softmax CE를 쓰거나,
다중 라벨인데 일반 CE를 쓰면 문제가 발생한다.
24.4 불균형 데이터에서 그대로 사용
클래스 불균형이 심하면 weighted CE나 focal loss를 고려해야 한다.
25. 장점과 한계
25.1 장점
- 분류 문제에 매우 적합하다.
- 확률 분포 비교에 자연스럽다.
- 잘못된 확신에 큰 패널티를 준다.
- gradient 기반 최적화와 잘 맞는다.
- Softmax/Sigmoid와 결합해 널리 검증되었다.
25.2 한계
- 클래스 불균형에 취약할 수 있다.
- 확률 calibration이 항상 잘 되는 것은 아니다.
- noisy label에 민감할 수 있다.
- 잘못 확신한 예측에 loss가 매우 커져 학습이 불안정해질 수 있다.
그래서 상황에 따라 label smoothing, class weighting, focal loss 등 변형을 사용한다.
26. 한 번에 정리하는 전체 과정
Cross Entropy Loss의 전체 흐름을 가장 간단히 정리하면 다음과 같다.
- 모델이 각 클래스 점수(logits)를 출력한다.
- Softmax 또는 Sigmoid를 통해 확률로 해석한다.
- 실제 정답 분포와 예측 확률 분포를 비교한다.
- 정답 클래스 확률이 낮을수록 큰 loss를 준다.
- 이 loss를 줄이도록 역전파를 수행한다.
- 반복 학습을 통해 정답 클래스 확률이 점점 높아지도록 만든다.
27. 핵심 직관 요약
Cross Entropy Loss를 한 문장으로 표현하면 다음과 같다.
“정답에 높은 확률을 주도록 강하게 유도하는 분류용 손실 함수”
조금 더 직관적으로 말하면,
- 맞는 답을 높은 확률로 맞히면 보상은 아니지만 손실이 거의 없다.
- 틀린 답을 자신 있게 말하면 매우 큰 벌점을 준다.
이것이 Cross Entropy의 본질이다.
28. 최종 정리
Cross Entropy Loss는 분류 문제에서 모델의 예측 확률과 실제 정답 분포 사이의 차이를 측정하는 손실 함수이다. 일반적으로 다중 클래스 분류에서는 Softmax와 함께 사용되며, 이진 분류에서는 Binary Cross Entropy 형태로 사용된다. 이 손실은 정답 클래스에 높은 확률을 주도록 학습을 유도하며, 특히 잘못된 확신에 대해 큰 패널티를 부여한다. 그래서 이미지 분류, 텍스트 분류, 언어 모델, 의료 진단 모델 등 거의 모든 분류 기반 딥러닝 시스템의 핵심 손실 함수로 자리 잡고 있다.
원하면 다음 단계로 이어서, 실제 숫자를 넣어 Cross Entropy를 손으로 계산하는 예제나, BCE와 CE의 차이를 표 없이 구조적으로 비교한 설명까지 바로 정리해주겠다.
'AL,ML 학부연구생 > 공부 기록' 카테고리의 다른 글
| LoRa (Low-Rank Adaptation)란 무엇인가? (0) | 2026.03.23 |
|---|---|
| Softmax와 Sigmoid 함수란 무엇인가? (0) | 2026.03.23 |
| BERT 와 GPT 는 무엇이고, 어떻게 활용될까? (0) | 2026.03.23 |
| RNN(Recurrent Neural Network)는 무엇이고, FNN과 어떻게 다른가? (0) | 2026.03.23 |
| FeedForward Neural Network (FNN)이란 무엇인가? (0) | 2026.03.23 |