본문 바로가기
python/MLDL

Cross Entropy, Categorical Cross Entropy, Sparse Categorical Cross Entropy

by 포잉띠 2024. 6. 5.

캐글 spooky 문제에 도전하다가 레이블을 원 핫 인코딩 하지 않고 진행했을 때 CategoricalCrossEntropy를 사용했더니 오류가 발생해서 GPT에게 물어보았다.

계산 방법...수식...은 잘 모르겠지만 언제 어디에 사용해야 하는지는 확실히 알았다.

Cross Entropy 개요

크로스 엔트로피(Cross Entropy)는 분류 문제에서 예측값과 실제값의 차이를 측정하는 손실 함수예요. 이진 분류와 다중 클래스 분류 문제에서 사용돼요. 크로스 엔트로피의 주요 종류는 다음과 같아요:

  1. Binary Cross Entropy (이진 크로스 엔트로피)
    1. 이진 분류 문제에 사용돼요.
    2. 예를 들어, 고양이인지 아닌지를 예측하는 문제에서 사용해요.
    3. tf.keras.losses.BinaryCrossentropy를 사용해요.
    4. 레이블이 0 또는 1로 주어져요.
    5. 공식: 

  1. Categorical Cross Entropy (카테고리컬 크로스 엔트로피)
    1. 다중 클래스 분류 문제에 사용돼요.
    2. 예를 들어, 고양이, 개, 새 중 하나를 예측하는 문제에서 사용해요.
    3. tf.keras.losses.CategoricalCrossentropy를 사용해요.
    4. 레이블이 원핫 인코딩(One-Hot Encoding) 형태로 주어져요.
    5. 공식:

  1. Sparse Categorical Cross Entropy (스파스 카테고리컬 크로스 엔트로피)
    1. 다중 클래스 분류 문제에 사용돼요.
    2. tf.keras.losses.SparseCategoricalCrossentropy를 사용해요.
    3. 레이블이 정수형으로 주어져요.
    4. 예를 들어, 레이블이 0, 1, 2로 주어질 때 사용해요.
    5. 공식: 

 

사용 사례

 

Binary Cross Entropy: 이진 분류 (예: 스팸 이메일 분류)

  • Categorical Cross Entropy: 다중 클래스 분류 (예: 글자 인식)
  • Sparse Categorical Cross Entropy: 다중 클래스 분류, 레이블이 정수형일 때 (예: 자연어 처리에서 토큰 분류)

 

왜 Sparse Categorical Cross Entropy를 사용할까요?

Categorical Cross Entropy와 Sparse Categorical Cross Entropy는 같은 목표를 가지지만, 레이블 형식이 다르기 때문에 사용해요:

  • Categorical Cross Entropy: 레이블이 원핫 인코딩된 경우 사용해요.
    • 예: 클래스가 3개인 경우, 레이블 [1, 0, 0], [0, 1, 0], [0, 0, 1]
  • Sparse Categorical Cross Entropy: 레이블이 정수형인 경우 사용해요.
    • 예: 클래스가 3개인 경우, 레이블 0, 1, 2

 

 

역시 내 최고의 스승님이다.

이런 귀여운 모습까지...