손실함수 고르고 커스텀 설계하고 디버깅하기
MSE·Huber부터 Focal Loss까지 손실함수 유형별 공식과 선택 기준, TensorFlow 커스텀 손실함수 설계, NaN·정체·과적합 디버깅 절차를 정리한다.
2026-08-13 · 최초 발행 2025-05-23
학습 손실이 NaN으로 튀는 순간 원인은 대개 셋 중 하나다 — 손실함수 선택이 잘못됐거나, 학습률이 너무 높거나, 기울기가 폭발했거나. 손실함수는 모델의 예측값과 실제값 간의 차이를 수치화해 학습 방향을 제시하는 지표이고, 모델 파라미터 최적화의 기준·그래디언트 계산의 기반·모델 간 성능 비교·과적합 감지 도구로 쓰인다. 주택 가격 예측 모델에서 실제 가격과 예측 가격의 차이를 계산해 모델의 정확도를 가늠하는 것이 손실함수가 하는 일이다.
회귀에는 MSE·MAE·Huber
가장 일반적인 회귀 손실함수인 MSE(Mean Squared Error)는 예측값과 실제값 차이의 제곱 평균을 계산한다.
MSE = (1/n) * Σ(y_i - ŷ_i)²
오차를 제곱하므로 큰 오차에 더 큰 페널티를 부여하고, 미분 가능해 최적화에 용이하지만 이상치에 민감하게 반응한다. 자율주행차의 위치 예측, 주식 가격 예측 모델 등에 쓰인다.
MAE(Mean Absolute Error)는 예측값과 실제값 차이의 절대값 평균을 계산한다.
MAE = (1/n) * Σ|y_i - ŷ_i|
MSE보다 이상치에 덜 민감하고 중앙값(median) 추정에 적합하지만, 미분 불가능 지점(0)이 있어 최적화가 복잡해질 수 있다. 제조업의 품질 관리, 수요 예측 모델에 쓰인다.
Huber Loss는 MSE와 MAE의 장점을 결합한다.
Huber Loss = (1/n) * Σ L_δ(y_i - ŷ_i)
L_δ(z) = 0.5 * z² (if |z| ≤ δ)
L_δ(z) = δ * (|z| - 0.5 * δ) (otherwise)
작은 오차에는 MSE처럼, 큰 오차에는 MAE처럼 동작해 이상치에 강건하면서도 미분 가능하지만 델타(δ) 파라미터를 조정해야 한다. 센서 데이터 분석, 금융 시계열 예측 등에 쓰인다.
분류에는 교차엔트로피·힌지·포컬
이진 및 다중 분류에서 가장 널리 쓰이는 Cross-Entropy Loss(Log Loss)는 확률 분포 간의 차이를 측정한다.
이진 분류:
CE = -(1/n) * Σ[y_i * log(p_i) + (1-y_i) * log(1-p_i)]
다중 분류:
CE = -(1/n) * Σ[Σ y_{ij} * log(p_{ij})]
잘못된 예측에 큰 페널티를 부여하며, 소프트맥스(Softmax)와 함께 쓰여 다중 클래스 분류에 적합하다. 이미지 분류, 감정 분석, 스팸 필터링 등에 쓰인다.
서포트 벡터 머신(SVM)에서 주로 쓰이는 Hinge Loss는 마진 최대화를 통해 결정 경계를 최적화한다.
Hinge Loss = (1/n) * Σ max(0, 1 - y_i * f(x_i))
올바르게 분류된 샘플에 대해서는 손실이 0이지만, 분류 신뢰도를 직접적으로 반영하지는 않는다. 텍스트 분류, 얼굴 인식 시스템에 쓰인다.
불균형 데이터셋에서 효과적인 Focal Loss는 잘 분류된 샘플의 영향을 줄여 어려운 샘플에 집중하게 한다.
FL = -(1/n) * Σ[(1-p_i)^γ * y_i * log(p_i) + p_i^γ * (1-y_i) * log(1-p_i)]
클래스 불균형 문제 해결에 효과적이며, 감마(γ) 파라미터로 집중도를 조정할 수 있다. 의료 영상 진단, 자율주행 물체 탐지 등에 쓰인다.
모델이 데이터로부터 예측을 생성하면 손실함수가 예측값과 실제값의 차이를 계산하고, 이 손실값을 최소화하는 방향으로 모델 파라미터를 업데이트한다.
선택 기준은 문제 유형에서 시작한다
먼저 문제 유형을 파악한다 — 회귀는 MSE·MAE·Huber Loss, 이진 분류는 Binary Cross-Entropy, 다중 분류는 Categorical Cross-Entropy가 기본이다.
다음으로 데이터 특성을 본다. 이상치가 있으면 MAE나 Huber Loss를, 클래스가 불균형하면 Focal Loss나 가중치를 적용한 Cross-Entropy를 고른다.
최적화 용이성도 중요하다. 미분 가능한 손실함수를 선호하고 계산 효율성도 함께 고려한다.
여기에 비즈니스 요구사항을 더한다. 특정 유형의 오류에 더 민감해야 하는 경우 맞춤형 손실함수를 설계한다. 신용카드 사기 탐지 시스템에서는 정상 거래를 사기로 잘못 분류하는 것보다 사기를 정상으로 잘못 분류하는 비용이 더 크므로, 비대칭 손실함수를 쓰는 것이 적합하다.
표준 손실함수로 부족할 때
표준 손실함수가 문제에 맞지 않으면 맞춤형 손실함수를 설계한다. 특정 산업이나 분야의 요구사항을 반영하고 오차의 비용이 비대칭적인 경우를 고려하는 도메인 지식 활용, 여러 손실함수의 가중 평균을 써서 각 함수의 장점을 살리는 손실함수 조합, 모델 복잡도를 제어하고 과적합을 방지하는 정규화 항 추가가 대표적인 방법이다.
def custom_loss(y_true, y_pred):
# 기본 MSE 계산
mse = tf.reduce_mean(tf.square(y_true - y_pred))
# 특정 범위에서 패널티 증가
penalty = tf.reduce_mean(tf.square(tf.maximum(0., y_pred - upper_bound)))
penalty += tf.reduce_mean(tf.square(tf.maximum(0., lower_bound - y_pred)))
# 최종 손실함수
return mse + lambda_param * penalty
손실함수와 평가지표는 다른 일을 한다
손실함수와 평가 지표(metrics)는 다른 목적으로 쓰인다.
| 손실함수 | 평가 지표 |
|---|---|
| 모델 학습용 | 성능 평가용 |
| 미분 가능성 중요 | 해석 용이성 중요 |
| 최적화 알고리즘에 적합 | 이해관계자 커뮤니케이션에 적합 |
예를 들어 손실함수로 Cross-Entropy Loss를 쓰더라도, 평가지표는 정확도(Accuracy), F1 점수, AUC로 따로 본다. 모델은 손실함수를 최소화하도록 학습되지만 실제 성능은 다른 지표로 평가되며, 이 차이를 이해하고 적절히 관리하는 것이 중요하다.
정규화 항을 더해 과적합을 누르는 법
정규화(Regularization)는 손실함수에 추가 제약을 부여해 과적합을 방지하는 기법이다.
L1 정규화(Lasso)는 모델 파라미터 절대값 합계에 페널티를 부여한다.
L_total = L_original + λ * Σ|w|
불필요한 특성을 제거해 희소 모델을 만드는 효과가 있어 특성 선택과 변수 중요도 평가에 도움이 된다.
L2 정규화(Ridge)는 모델 파라미터 제곱 합계에 페널티를 부여한다.
L_total = L_original + λ * Σw²
가중치 크기를 전반적으로 줄여 극단적 가중치를 방지하고 다중공선성 문제를 완화한다. 대규모 이미지 인식 모델에서 L2 정규화로 일반화 성능을 높이는 데 쓰인다.
손실을 최소화하는 방법들
손실함수를 최소화하는 최적화 알고리즘에는 세 갈래가 있다. 경사 하강법(Gradient Descent)은 손실함수의 기울기를 따라 파라미터를 업데이트하며 SGD·Mini-batch GD·Momentum으로 변형된다. 적응적 방법(Adaptive Methods)에서는 Adam이 모멘텀과 파라미터별 학습률을 결합하고, RMSProp은 최근 기울기에 가중치를 부여하며, Adagrad는 파라미터별 학습률을 자동 조정한다. 이차 최적화(Second-order Optimization)는 헤시안 행렬을 활용하는 Newton's Method, 제한된 메모리로 대규모 문제에 적합한 L-BFGS를 쓴다.
선택 기준은 데이터셋 크기, 모델 복잡도, 계산 리소스 가용성, 수렴 속도 요구사항이다.
이미지 분류부터 강화학습까지
이미지 분류(CNN)에서는 Categorical Cross-Entropy를 손실함수로, Dropout·L2 정규화를 함께 쓰고, Adam으로 최적화하며, 정확도와 F1 점수로 평가한다.
자연어 처리(NLP)에서는 Cross-Entropy + Label Smoothing을 손실함수로, Layer Normalization을 정규화로, Adam with Warmup으로 최적화하며, BLEU·ROUGE로 평가한다.
강화학습(RL)에서는 Policy Gradient Loss와 Value Function Loss를 손실함수로, Entropy Regularization을 정규화로, PPO(Proximal Policy Optimization)로 최적화하며, 누적 보상과 성공률로 평가한다.
손실이 이상하게 움직일 때
손실 값이 NaN이 되는 경우는 학습률이 너무 높거나 기울기가 폭발한 것이 원인이며, 학습률 감소·그래디언트 클리핑·배치 정규화로 해결한다.
손실이 감소하지 않는 경우는 부적절한 손실함수나 모델 용량 부족이 원인이며, 손실함수 변경·모델 복잡도 증가로 대응한다.
훈련 손실과 검증 손실 간 큰 격차는 과적합이 원인이며, 정규화 강화·데이터 증강·조기 중단으로 대응한다.
다음 손실함수 연구가 향하는 곳
메타 학습을 통해 최적 손실함수를 자동으로 발견하고 특정 데이터셋에 맞춤화된 손실함수를 생성하는 자동 손실함수 검색, 예측의 확실성 정도를 고려하고 베이지안 접근법으로 불확실성을 모델링하는 불확실성 인식 손실함수, 모델의 편향성을 줄이는 제약을 추가하고 다양한 집단 간 성능 균형을 유지하는 공정성 고려 손실함수, 여러 관련 작업을 동시에 최적화하고 작업 간 가중치를 자동 조정하는 다중 작업 학습용 손실함수가 최근 연구 방향으로 꼽힌다.