더북(TheBook)

앞에 있는 의사 코드에서 oneHotTruth는 입력 샘플의 실제 클래스의 원-핫 인코딩입니다. probs는 모델이 출력한 소프트맥스 확률입니다. 이 의사 코드에서 핵심 포인트는 범주형 크로스 엔트로피의 경우 실제 클래스의 인덱스에 해당하는 probs의 한 원소만 중요하다는 것입니다. probs의 다른 원소는 나름대로 값을 가지고 있겠지만 실제 클래스의 원소를 바꾸지 않는 한 범주형 크로스 엔트로피에 영향을 미치지 못합니다. probs의 원소가 1에 가까울수록 크로스 엔트로피의 값은 낮아집니다. 이진 크로스 엔트로피와 마찬가지로 범주형 크로스 엔트로피는 tf.metrics 아래에 함수로 제공되므로, 간단하지만 시험 삼아 범주형 크로스 엔트로피를 계산해 볼 수 있습니다. 예를 들어, 다음 코드에서 가상의 원-핫 인코딩된 정답 레이블과 가상의 probs 벡터를 만들어 범주형 크로스 엔트로피를 계산할 수 있습니다.

const oneHotTruth = tf.tensor1d([0, 1, 0]);
const probs = tf.tensor1d([0.2, 0.5, 0.3]);
tf.metrics.categoricalCrossentropy(oneHotTruth, probs).print();

결괏값은 약 0.693입니다. 모델이 실제 클래스에 할당한 확률이 0.5일 때 categorical Crossentropy의 값이 0.693이라는 뜻입니다. 코드 3-10에 있는 의사 코드로 확인해 볼 수 있습니다. 0.5에서 값을 높이거나 낮추어 categoricalCrossentropy의 값이 어떻게 변하는지 확인해 보세요(표 3-5 참조). 표 3-6은 원-핫 인코딩된 진짜 레이블과 probs 벡터 사이의 MSE 값도 포함하고 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.