손실 함수(Loss Function)는 딥러닝 모델이 학습 중 얼마나 잘 수행하고 있는지를 평가하는 지표다.
모델의 예측 값과 실제 값 사이의 오차를 계산하여, 이를 기반으로 가중치가 업데이트된다.
Cross-Entropy Loss는 분류 문제에서 가장 널리 사용되는 손실 함수다.
확률 분포 간의 차이를 측정하며, 모델의 예측 확률과 실제 레이블 간의 오차를 계산한다.
from tensorflow.keras.losses import CategoricalCrossentropy
loss_fn = CategoricalCrossentropy()
Focal Loss는 클래스 불균형 문제를 해결하기 위해 오류가 큰 샘플에 더 높은 가중치를 부여한다.
모델이 소수 클래스에 더 집중할 수 있도록 유도한다.
from focal_loss import BinaryFocalLoss
loss_fn = BinaryFocalLoss(gamma=2.0)
이 손실 함수들은 임베딩 학습에서 사용된다.
특히, 데이터 간의 유사도와 차이를 학습하는 데 효과적이다.
def contrastive_loss(y_true, y_pred):
margin = 1
return y_true * y_pred**2 + (1 - y_true) * max(0, margin - y_pred)**2
이미지 분할 문제에서 자주 사용되는 손실 함수로, 분할된 영역과 실제 영역 간의 유사도를 최대화한다.
def dice_loss(y_true, y_pred):
numerator = 2 * tf.reduce_sum(y_true * y_pred)
denominator = tf.reduce_sum(y_true + y_pred)
return 1 - (numerator / denominator)
Huber Loss는 회귀 문제에서 이상치에 강건한 성능을 제공한다.
작은 오차에 대해서는 L2 손실로 작동하고, 큰 오차에 대해서는 L1 손실로 전환된다.
from tensorflow.keras.losses import Huber
loss_fn = Huber(delta=1.0)
손실 함수는 딥러닝 모델의 학습 품질을 좌우하는 핵심 요소다.
문제 특성과 데이터에 적합한 손실 함수를 선택하여, 더 나은 모델 성능을 달성해보자.