3.2.4 이진 크로스 엔트로피: 이진 분류를 위한 손실 함수
지금까지 정확도, 정밀도, 재현율과 같이 이진 분류기의 성능을 여러 측면으로 정량화하는 다양한 측정 지표를 알아보았습니다(표 3-4 참조). 하지만 모델의 경사 하강법 훈련을 지원하기 위해 미분 가능하고 그레이디언트를 생성할 수 있는 중요한 지표에 대해 이야기하지 않았습니다. 이것은 아직 설명하지 않았지만 코드 3-5에서 잠깐 보았던 binaryCrossentropy입니다.
model.compile({ optimizer: 'adam', loss: 'binaryCrossentropy', metrics: ['accuracy'] });
먼저 정확도, 정밀도, 재현율, 심지어 AUC를 손실 함수로 사용할 수는 없는지 궁금할 수 있습니다. 무엇보다도 이 지표들은 이해하기 쉽습니다. 또한, 앞서 보았던 회귀 문제에서는 이해하기 쉬운 MSE를 그대로 훈련을 위한 손실 함수로 사용했습니다. 이에 대한 답은 이런 이진 분류 지표들은 모두 훈련에 필요한 그레이디언트를 생성할 수 없기 때문입니다. 정확도를 예로 들어 보죠. 정확도가 그레이디언트를 생성할 수 없는 이유를 이해하려면 모델의 예측이 양성인지 음성인지 결정하기 위해 정확도를 계산한다는 사실을 유념하세요(표 3-3의 첫 번째 행). 이런 결정을 위해 모델의 시그모이드 출력을 이진 예측으로 바꾸기 위한 임계 함수를 적용해야 합니다. 문제의 핵심은 다음과 같습니다. 임계 함수(기술적으로는 계단 함수(step function)라고 합니다)가 거의 모든 지역에서 미분 가능하지만(임계값인 0.5에서는 미분 가능하지 않습니다) 미분 값은 항상 0입니다(그림 3-7 참조)! 이 임계 함수를 사용해 역전파를 수행하면 어떻게 될까요? 어떤 지점의 상위 그레이디언트 값이 스텝 함수에서 오는 0 그레이디언트와 곱해야 하기 때문에 그레이디언트가 모두 0이 될 것입니다. 간단히 말해서 정확도(또는 정밀도, 재현율, AUC 등)를 손실 함수로 선택하면, 스텝 함수의 평평한 영역 때문에 손실 값을 감소시키기 위해 가중치 공간에서 이동 경로를 찾기 위한 훈련 과정이 불가능해집니다.