Cross-Entropy

개념

Cross-Entropy는 딥러닝 분류(Classification) 모델에서 사용하는 대표적인 손실 함수(Loss Function)이다.

일반적인 손실 함수가 ‘값의 단순 차이’를 구한다면, Cross-Entropy는 ‘확률 분포의 차이(정보량)’를 구한다. 주로 모델의 출력이 확률(0~1)로 나오는 문제에서 사용된다.


수식

\[\text{CE} = -\sum_{i} y_i \ln(\hat{y}_i)\]
  • $y_i$: 실제 정답 레이블 (예: 원-핫 인코딩 시 정답 클래스는 1, 나머지는 0)
  • $\hat{y}_i$ : 모델이 예측한 정답 확률 (0 ~ 1)
  • $\ln$ : 자연로그 (밑이 $e$인 로그)

정답이 아닌 클래스는 $y_i = 0$이므로 곱해지면서 전부 사라진다. 결국 정답 클래스에 대해 모델이 예측한 확률값($\hat{y}$)에 자연로그($-\ln$)를 씌운 값이 최종 Loss가 된다.

위 그래프에서 보이는 바와 같이 Cross-Entropy는 노란색으로 칠해진 부분($x$ = 0.0 ~ 1.0)을 사용하게 된다.

$x$축 (입력) = $\hat{y}$(모델의 예측 확률)

  • 이 축의 범위는 0.0에서 1.0 사이다.
  • “이 사진이 정답일 확률이 몇 %인가?”에 대한 모델의 답변이 이 $x$축 위의 한 점으로 찍힌다. $y$축 (출력) = $-\ln(\hat{y})$ (최종 오차, Loss)
  • $x$축의 값($\hat{y}$)을 자연로그 함수에 집어넣었을 경우의 값이 마이너스로 나오기 때문에 이를 상쇄시키기 위해 마이너스를 붙여 내보낸다.
  • 내보낸 값은 모델에게 부여할 ‘양수의 벌점’ 크기를 나타낸다.

고양이 사진을 본 AI의 학습 과정 예시

딥러닝 모델에게 고양이 사진을 보여주고, 이 사진이 [고양이, 개, 새] 중 무엇인지 분류하도록 학습시키는 과정이다.

1. 정답 세팅 (One-Hot Encoding)

실제 정답은 고양이이므로 컴퓨터가 이해할 수 있도록 다음과 같이 표현한다.

\[y = [1,\;0,\;0]\]

의미는 다음과 같다.

  • 고양이 : 1 (정답)
  • 개 : 0
  • 새 : 0

2. Cross Entropy Loss

손실 함수는 다음과 같다.

\[CE = -\sum_i y_i \ln(\hat{y}_i)\]

여기서

  • $y$ : 실제 정답(Label)
  • $\hat{y}$ : 모델이 예측한 확률

One-Hot Encoding에서는 정답 클래스만 1이고 나머지는 모두 0이므로 식이 매우 단순해진다.

예를 들어 정답이 고양이라면

\[y=[1,0,0]\]

이므로

\[CE = -\left( 1\times\ln(\hat{y}_{cat}) + 0\times\ln(\hat{y}_{dog}) + 0\times\ln(\hat{y}_{bird}) \right)\]

가 된다.

0이 곱해진 항은 모두 사라지므로 최종적으로

\[CE=-\ln(\hat{y}_{cat})\]

만 계산하면 된다.

즉, 정답 클래스의 확률만 손실 계산에 영향을 준다.


3. 학습 단계별 Loss 변화

학습 초기 (1 Epoch)

모델이 아직 아무것도 학습하지 못한 상태이다.

모델 예측

\[\hat{y} = [0.1,\;0.7,\;0.2]\]
  • 고양이 : 10%
  • 개 : 70%
  • 새 : 20%

모델은 개일 확률이 가장 높다고 잘못 판단하였다.

Loss 계산

\[CE = -\left( 1\times\ln(0.1) + 0\times\ln(0.7) + 0\times\ln(0.2) \right)\] \[CE=-\ln(0.1)\] \[CE\approx2.30\]

정답인 고양이의 확률을 0.1밖에 주지 못하였다.

정답 확률이 매우 낮기 때문에 Cross Entropy Loss는 2.30이라는 큰 값을 가지게 된다.


학습 중반 (50 Epoch)

손실을 줄이기 위해 가중치가 여러 번 업데이트된 상태이다.

모델 예측

\[\hat{y} = [0.6,\;0.3,\;0.1]\]
  • 고양이 : 60%
  • 개 : 30%
  • 새 : 10%

이제 모델은 고양이일 가능성을 가장 높게 예측하기 시작하였다.

Loss 계산

\[CE = -\ln(0.6)\] \[CE\approx0.51\]

정답 확률이 0.6까지 증가하였다.

정답에 대한 확신이 커졌기 때문에 손실 값도 2.30 → 0.51로 크게 감소하였다.


학습 후반 (100 Epoch)

모델이 거의 완벽하게 학습된 상태이다.

모델 예측

\[\hat{y} = [0.99,\;0.01,\;0.00]\]
  • 고양이 : 99%
  • 개 : 1%
  • 새 : 0%

Loss 계산

\[CE = -\ln(0.99)\] \[CE\approx0.01\]

정답 클래스의 확률이 0.99까지 증가하였다.

정답 확률이 1에 가까워질수록 Loss는 0에 수렴한다.

즉, 모델이 거의 완벽하게 정답을 맞히고 있다는 의미이다.


전체 학습 과정

학습 단계 모델 예측 Loss
학습 초기 [0.1, 0.7, 0.2] 2.30
학습 중반 [0.6, 0.3, 0.1] 0.51
학습 후반 [0.99, 0.01, 0.00] 0.01

핵심 정리

  • Cross Entropy Loss는 정답 클래스의 확률만 이용하여 계산하는 손실 함수이다.
  • 정답 확률이 낮을수록 Loss는 크게 증가한다.
  • 정답 확률이 높아질수록 Loss는 0에 가까워진다.
  • 딥러닝은 손실 함수(Loss)를 최소화하는 방향으로 가중치를 지속적으로 업데이트하며 학습하는 방식이다.

Leave a comment