손실 함수는 모델이 풀 문제를 숫자로 정의해
손실 함수는 예측이 얼마나 틀렸는지를 옵티마이저가 줄일 수 있는 스칼라 값으로 바꿔. 잘못 고르면 모델은 오류를 내지 않고도 다른 목표를 성실하게 최적화할 수 있어. 따라서 손실 함수 선택은 실제 문제와 레이블 형식을 선언하는 일이야.
| 손실 함수 | 과제 | 레이블 형식 |
|---|---|---|
CategoricalCrossentropy | 다중 클래스 분류 | 원-핫: [0,0,1,0] |
SparseCategoricalCrossentropy | 다중 클래스 분류 | 정수: 2 |
BinaryCrossentropy | 이진·다중 레이블 분류 | 0 또는 1 |
MeanSquaredError | 회귀 | 연속값 |
Huber | 이상치에 강한 회귀 | 연속값 |
SparseCategoricalCrossentropy는 2 같은 정수 레이블을 받고 CategoricalCrossentropy는 [0,0,1,0] 같은 원-핫 벡터를 받아. 회귀 데이터에 이상치가 있다면 MSE 대신 Huber를 고려해. 작은 오차에서는 MSE처럼, 큰 오차에서는 MAE처럼 동작해 일부 이상치가 기울기를 지배하지 못하게 해.
from_logits=True로 수치 안정성을 얻어
마지막 레이어가 softmax나 sigmoid 없이 원시 점수를 낸다면 from_logits=True를 사용해. 활성화 함수와 손실을 따로 계산하는 것과 수학적으로 같지만 Keras가 하나의 안정적인 연산으로 합쳐 중간 확률의 underflow를 막아줘.