더북(TheBook)

3.3.3 범주형 크로스 엔트로피: 다중 분류를 위한 손실 함수

이진 분류 예제에서 이진 크로스 엔트로피를 손실 함수로 어떻게 사용하는지 알아보았습니다. 정확도, 재현율과 같이 사람이 이해하기 더 쉬운 지표를 손실 함수로 사용하지 못하는 이유도 살펴보았습니다. 다중 분류도 매우 비슷합니다. 모델이 정확히 분류한 샘플의 비율인 정확도와 같이 간단한 지표가 있습니다. 이 지표는 모델이 얼마나 잘 동작하는지 이해하는 데 중요하며 코드 3-9에서 다음과 같이 사용되었습니다.

model.compile({
  optimizer: optimizer,
  loss: 'categoricalCrossentropy',
  metrics: ['accuracy'],
});

하지만 정확도는 이진 분류에서와 마찬가지로 0 그레이디언트 이슈가 있기 때문에 손실 함수로 나쁜 선택입니다. 따라서 범주형 크로스 엔트로피(categorical cross entropy)라는 다중 분류를 위한 특별한 손실 함수를 고안했습니다. 이 함수는 이진 크로스 엔트로피를 두 개 이상의 범주가 있는 경우로 일반화한 것입니다.

 

코드 3-10 범주형 크로스 엔트로피 손실 함수의 의사 코드

function categoricalCrossentropy(oneHotTruth, probs):
  for i in (0 to length of oneHotTruth)
    if oneHotTruth(i) is equal to 1
      return -log(probs[i]);
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.