ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 크로스 엔트로피(Cross Entropy)
    AI 2026. 5. 2. 23:27

    "두 확률 분포 간의 차이를 측정하는 지표 (A measure of the difference between two probability distributions)"

    인공지능 모델을 훈련시킬 때 '로스(Loss)를 줄인다'는 말을 자주 씁니다. 이때 분류(Classification) 문제에서 가장 많이 쓰이는 손실 함수가 바로 크로스 엔트로피(Cross Entropy)입니다.

    이 개념을 완벽히 이해하려면 먼저 '정보량(Information)'과 '엔트로피(Entropy)'라는 두 가지 산을 넘어야 합니다. 복잡한 수식의 공포를 뒤로하고, 이 세 가지 개념이 어떤 의미를 가지는지, 실제 계산은 어떻게 이루어지는지, 그리고 실무에서는 어떻게 적용되는지 아주 쉽게 알아보겠습니다.

    1. 정보량 (Information): "얼마나 깜짝 놀랄만한 일인가?"

    $$h(x) = -\log(P(x))$$

    정보이론에서 '정보량'은 어떤 사건을 인코딩하고 전송하는 데 필요한 비트(bits) 수를 의미하며, 사건이 일어날 확률($P(x)$)에 반비례합니다. 쉽게 말해 "얼마나 놀라운가(Surprising)?"를 수치화한 것입니다.

    • 확률이 높은 사건 (Higher probability): 내일 아침에 해가 동쪽에서 뜰 확률은 거의 100%입니다. 너무 당연한 일이므로 굳이 전달할 정보가 적습니다. 즉, 정보량이 적습니다 (Less information / Less surprising).
    • 확률이 낮은 사건 (Lower probability): 한여름 서울에 눈이 내릴 확률은 극히 희박합니다. 만약 진짜 내렸다면 전 세계의 뉴스가 될 것입니다. 즉, 정보량이 많습니다 (More info / More surprising).

    수식에 마이너스($-$)와 로그($\log$)가 붙은 이유는, 1 이하의 소수인 확률값을 다루기 편한 양수로 변환하기 위한 수학적 도구일 뿐입니다.

    💡 [실무 심화] 비트(Bit)인가, 내트(Nat)인가?

    정보이론의 창시자 섀넌은 로그의 밑을 2로 쓸 때($\log_2$)의 단위를 '비트(Bit)'라고 정의했습니다. 하지만 실제 딥러닝 분야에서는 **자연로그($\ln$ 또는 $\log_e$)**를 주로 사용하며, 이때의 단위는 '내트(Nat)'입니다. 딥러닝은 오차를 줄이기 위해 끝없이 미분을 해야 하는데, 자연로그는 미분했을 때 형태가 아주 깔끔하게 떨어져서 컴퓨터의 계산 비용을 크게 줄여주기 때문입니다.

    2. 엔트로피 (Entropy): "전체적으로 얼마나 예측하기 힘든가?"

    이미지의 두 번째 수식: $H(X) = -\sum P(x_i)\log(P(x_i))$

    정보량이 '개별 사건'의 놀라움 정도라면, 엔트로피는 모든 사건이 가진 정보량의 '평균(기댓값)'입니다. 즉, 어떤 확률 분포가 전체적으로 얼마나 불확실한지(Unpredictable)를 나타냅니다.

    이미지에 나온 두 가지 예시를 비교해 보겠습니다.

    • 쏠린 분포 (Skewed distribution): 동전을 던졌는데 앞면이 나올 확률이 99%, 뒷면이 1%라고 해봅시다. 거의 무조건 앞면이 나오겠죠? 결과가 너무 뻔하기 때문에 '불확실성'이 낮습니다. $\rightarrow$ 엔트로피가 낮다 (0.1705, Unsurprising)
    • 균등한 분포 (Uniform distribution): 일반적인 동전처럼 앞면 50%, 뒷면 50%일 때입니다. 결과를 전혀 예측할 수 없죠? $\rightarrow$ 엔트로피가 높다 (0.4766, Surprising)

    결론적으로 엔트로피는 "이 시스템이 얼마나 혼란스러운가(예측하기 어려운가)?"를 묻는 지표입니다.

    3. 크로스 엔트로피 (Cross Entropy): "내 예측이 정답과 얼마나 다른가?"

    이미지의 세 번째 수식: $H(P,Q) = -\sum P(x_i)\log(Q(x_i))$

    자, 이제 진짜 주인공입니다. 크로스 엔트로피는 두 개의 확률 분포($P$$Q$)를 비교할 때 사용합니다.

    • $P$ (Target distribution): 실제 정답 (우리가 도달해야 할 진짜 확률 분포)
    • $Q$ (Approximation): AI 모델이 예측한 확률 분포 (정답에 가까워지려고 찍은 값)

    크로스 엔트로피는 "진짜 정답($P$)의 세상에서, 내 모델의 예측($Q$)을 기준으로 정보를 처리하면 얼마나 더 비효율적인가(Extra bits)?"를 계산합니다.

    쉽게 말해, 내 모델($Q$)이 정답($P$)을 얼마나 엉터리로 흉내 내고 있는지를 보여주는 '오차 스코어'입니다.

    • 모델이 정답을 완벽하게 맞혔다 ($P=Q$)? $\rightarrow$ 크로스 엔트로피 값은 최소가 됩니다.
    • 모델이 정답과 완전히 엇나갔다? $\rightarrow$ 크로스 엔트로피 값은 엄청나게 커집니다.

    💡 요약: 왜 딥러닝에서 사용할까?

    우리가 모델(신경망 등)을 학습시킨다는 것은 결국 "모델의 예측 분포($Q$)를 실제 정답 분포($P$)에 최대한 똑같이 맞추는 과정"입니다. 크로스 엔트로피 값이 바로 그 '다름의 정도'를 숫자로 명확히 알려주기 때문에, 이 값을 최소화하는 방향으로 모델의 파라미터를 업데이트(최적화)해 나가는 것입니다.

     

    💡 [실무 심화] 진짜 줄이고 싶은 건 'KL 발산(KL Divergence)'

    사실 두 확률 분포의 순수한 차이를 나타내는 개념은 'KL 발산'입니다. 수식을 쪼개보면 다음과 같습니다.

    • $H(P, Q) = H(P) + D_{KL}(P||Q)$ (크로스 엔트로피 = 정답의 엔트로피 + KL 발산)

    여기서 정답 분포의 엔트로피 $H(P)$는 어차피 고정된 상수입니다. 따라서 복잡하게 KL 발산을 따로 구할 필요 없이, 크로스 엔트로피 $H(P, Q)$만 최소화해도 자연스럽게 두 분포의 차이(KL 발산)가 최소화됩니다. 이것이 딥러닝에서 크로스 엔트로피를 손실 함수로 바로 쓰는 결정적인 이유입니다.

     

     

    4. 딥러닝 실전 적용: 생각보다 너무 단순한 계산법

    수식 $-\sum P(x_i)\log(Q(x_i))$은 시각적으로 꽤 복잡해 보입니다. 하지만 실제 딥러닝 분류 문제(예: 강아지, 고양이, 새 사진 맞추기)에서는 극단적으로 단순해집니다. 정답 데이터($P$)가 보통 원-핫 인코딩(One-Hot Encoding)으로 주어지기 때문입니다.

    만약 사진의 정답이 '고양이'라면, 정답 분포 $P$는 [0, 1, 0]이 됩니다.

    • 오답인 클래스(강아지, 새)들은 어차피 $P(x_i) = 0$이 되어 곱하면 시그마($\sum$) 수식에서 모두 날아갑니다.
    • 결국 수많은 항이 사라지고, $-\log(Q_{\text{정답}})$ 딱 하나만 남게 됩니다.

    즉, "모델이 '고양이'일 확률을 몇 %로 예측했느냐"만 가지고 오차를 계산하는 마법같이 단순한 구조입니다. 모델이 정답 확률을 1(100%)에 가깝게 예측할수록 이 값은 0에 수렴하게 됩니다.

Designed by Tistory.