손실 함수(Loss Function)
손실 함수(Loss Function)는 모델의 예측 값과 실제 값 간의 차이를 측정하는 함수로, 모델이 얼마나 잘 학습하고 있는지를 평가하는 데 사용한다. 손실 함수는 모델이 예측한 값이 실제 값과 가까울수록 낮아지고, 차이가 클수록 커진다.
손실 함수는 분야에 따라 비용 함수(Cost Function), 에너지 함수(Energy Function) 등으로 다양하게 부르기도 한다.
손실 함수는 아래 두 가지의 주요 목적을 가지고 있다.
- 모델 학습 방향 제시: 손실 함수 값을 최소화하는 방향으로 모델의 가중치와 편향을 조정한다. 이 과정을 통해 모델이 점점 더 정확한 예측을 할 수 있도록 학습하게 된다.
- 성능 평가 지표: 모델 성능을 수치로 표현하여, 학습이 잘 진행되고 있는지 또는 오버피팅(Overfitting)/언더피팅(Underfitting)이 발생하는지를 확인할 수 있다.
손실 함수는 아래와 같이 여러 종류가 존재한다.
- Mean Squared Error (MSE)
- Binary Cross-Entropy
- Categorical Cross-Entropy
- Sparse categorical crossentropy
- Huber Loss
- Hinge Loss
- Kullback-Leibler Divergence
- Focal Loss
모델의 결과가 정답/오답 혹은 유사/대칭 등에 대반 판별이라면 그렇게 어려운 문제로 보이지는 않는다. 하지만 아래 세 가지 이유로 인해 여러 가지 형태의 손실함수가 존재한다.
- 데이터의 특성을 반영: 데이터의 분포, 이상치 존재 여부, 클래스 불균형 등 데이터의 특성에 따라 적절한 손실 함수를 사용
- 수렴 속도와 안정성 향상: 적절한 손실 함수를 선택하면 학습 과정을 가속화하고 안정적인 수렴을 유도
- 새로운 인사이트 발견: 기존의 손실 함수로는 충분히 다루기 어려운 문제의 경우, 새로운 손실 함수를 고안함으로써 문제에 대한 새로운 인사이트를 얻어 해결책 발견
모델 유형 별 손실 함수
많은 손실함수의 종류만큼 많은 모델이 존재한다. 문제 또는 모델의 특성과 데이터의 형태에 따라 적절한 손실 함수를 선택하는 것이 중요하다. 각 모델의 성능 평가에 자주 사용되는 손실 함수들을 정리해 보면 아래와 같다.
1. 회귀(Regression)
- Mean Squared Error (MSE): 예측값과 실제값 차이의 제곱 평균. 가장 일반적으로 사용되는 회귀 손실 함수이다.
- Mean Absolute Error (MAE): 예측값과 실제값 차이의 절댓값 평균. 이상치에 덜 민감하다는 특징이 있다.
- Huber Loss: MSE와 MAE의 장점을 결합한 손실 함수로 이상치에 강건하다.
2. 이진 분류(Binary Classification)
- Binary Cross-Entropy: 로지스틱 회귀에서 주로 사용. 실제 클래스와 예측 확률 분포 간의 차이를 계산한다.
- Hinge Loss: 서포트 벡터 머신(SVM)에서 사용. 마진을 최대화하도록 유도한다.
3. 다중 클래스 분류(Multi-class Classification)
- Categorical Cross-Entropy: 실제 클래스와 예측 확률 분포 간의 차이를 계산한다.
- Sparse Categorical Cross-Entropy: 정수로 인코딩된 실제 클래스를 사용할 때 이용된다.
4. 시퀀스(Sequence) 관련
- Connectionist Temporal Classification (CTC) Loss: 시퀀스 레이블링, 음성 인식 등에 사용된다.
5. 생성 모델(Generative Models)
- Reconstruction Loss: 오토인코더의 입력 복원 오차를 측정. L1 Loss, L2 Loss 등이 사용된다.
- Adversarial Loss: GAN에서 생성자와 판별자의 경쟁을 통해 학습한다.
6. 자연어(NLP)
- Perplexity: 언어 모델이 데이터를 얼마나 잘 예측하는지를 나타내는 척도로, 낮을수록 좋다.
분야별 손실 함수
이번엔 특정한 분야의 Task를 수행할 때 적합한 손실 함수를 정리해 보았다.
1. 객체 탐지(Object Detection)
- Focal Loss: 클래스 불균형이 심한 상황에서 효과적. 잘 분류된 샘플의 손실 기여도를 줄이고, 잘못 분류된 샘플에 더 집중한다.
- Smooth L1 Loss: 바운딩 박스 회귀(Bounding Box Regression)에 사용되며, 이상치에 덜 민감하다.
2. 이미지 분할(Image Segmentation)
- Dice Loss: 의료 이미지 세그멘테이션에 자주 사용되며, 두 세그멘테이션 마스크 간의 중첩 정도를 측정한다.
- Tversky Loss: Dice Loss의 일반화된 버전으로, False Positives와 False Negatives에 대한 가중치를 조정할 수 있다.
- Focal Tversky Loss: Tversky Loss에 Focal Loss의 개념을 적용하여 어려운 픽셀에 더 집중한다.
3. 3D 비전
- Chamfer Distance Loss: 3D 객체 재구성 등의 태스크에서 두 점군(Point Cloud) 간의 대응 관계를 측정한다.
- Earth Mover’s Distance (EMD) Loss: 두 점군 간의 최적 운송 문제를 기반으로 한 손실 함수이다.
4. 메트릭 학습(Metric Learning)
- Contrastive Loss: 유사한 샘플 간 거리는 가깝게, 다른 샘플 간 거리는 멀도록 학습한다.
- Angular Loss: 샘플 간의 각도 기반 유사도를 학습하여 더 효과적인 임베딩을 생성한다.
5. 강화 학습(Reinforcement Learning)
- Policy Gradient Loss: 에이전트의 행동 정책을 최적화하기 위한 손실 함수이다.
- Q-Learning Loss: 최적의 행동 가치 함수를 학습하기 위한 손실 함수이다.
6. 페어와이즈 랭킹(Pairwise Ranking)
- Margin Ranking Loss: 랭킹 문제에서 두 입력 간의 상대적인 순위를 학습한다.
- Triplet Loss: 얼굴 인식, 이미지 검색 등에 사용되며, Anchor, Positive, Negative 샘플 간의 거리를 최적화한다.
경우에 따라 여러 손실 함수를 조합하여 사용하기도 한다. 아래에 대표적인 손실 함수들의 잠단점을 정리해 보았다.
손실 함수의 종류
Mean Squared Error (MSE)
$$ \text{MSE} = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2 $$
장점
- 연속적인 회귀 문제에 적합하며, 널리 사용된다.
- 오차의 크기를 강조해 큰 오차에 더 민감하게 반응한다.
- 수학적으로 미분이 가능해 경사하강법 최적화에 용이하다.
단점
- 아웃라이어에 매우 민감해, 이상치가 많을 경우 성능이 저하될 수 있다.
- 에러가 0으로 수렴하지 않는 경우, 과도하게 큰 오차를 생성할 수 있다.
- 평균제곱을 사용하므로 에러 분포가 비정상적인 경우 왜곡이 생길 수 있다.
Binary Cross-Entropy
$$ \text{Binary Cross-Entropy} = -\frac{1}{N} \sum_{i=1}^{N} \left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right) $$
장점
- 이진 분류 문제에 적합하며, 확률적 출력 모델에 잘 작용한다.
- 확률 출력을 직접적으로 다루기 때문에 로지스틱 회귀와 신경망에서 널리 사용된다.
- 예측 불확실성을 효과적으로 반영한다.
단점
- 불균형 데이터에 민감하여, 데이터셋이 불균형하면 성능이 저하될 수 있다.
- 학습 중 큰 확률 값을 가지는 경우, 매우 높은 손실을 산출할 수 있다.
- 확률적 출력을 가지지 않는 모델에서는 적합하지 않다.
Categorical Cross-Entropy
$$ \text{Categorical Cross-Entropy} = -\sum_{i=1}^{N} \sum_{c=1}^{C} y_{i, c} \log(\hat{y}_{i, c}) $$
장점
- 다중 클래스 분류 문제에서 널리 사용되며, 클래스 간 확률 분포를 예측한다.
- 클래스 간 차이를 반영해 다양한 분류 문제에 적합하다.
- 소프트맥스 함수와 함께 사용해 다중 클래스 간의 상대적 확률을 계산한다.
단점
- 클래스 수가 많아지면 계산량이 증가할 수 있다.
- 다중 레이블 분류 문제에서는 적합하지 않다.
- 클래스 간 확률을 필요로 하지 않는 문제에는 비효율적이다.
Sparse categorical crossentropy
$$ \text{Sparse Categorical Cross-Entropy} = -\sum_{i=1}^{N} \log(\hat{y}_{i, y_i}) $$
장점
- 클래스가 다수인 분류 문제에서 메모리와 계산 효율성이 높다.
- 클래스 레이블을 인덱스로 표현해, 다수의 클래스에서도 간편하게 사용된다.
- 레이블이 적고 효율적인 계산을 지원하여 훈련 속도가 빠르다.
단점
- 레이블 인덱스 형태를 요구해, 미리 변환해야 한다.
- 다중 클래스 간의 유사성을 반영하지 않으며, 비슷한 클래스 구분이 어렵다.
- 작은 클래스 불균형에 민감할 수 있다.
Huber Loss
$$ \text{Huber Loss} = \begin{cases}
\frac{1}{2} (y_i - \hat{y}_i)^2 & \text{if } |y_i - \hat{y}_i| \leq \delta \\
\delta \cdot |y_i - \hat{y}_i| - \frac{1}{2} \delta^2 & \text{otherwise}
\end{cases} $$
장점
- MSE와 MAE의 장점을 결합하여, 아웃라이어에 덜 민감하다.
- 연속된 데이터의 회귀 문제에서 MSE보다 견고한 성능을 보인다.
- 작은 에러에 대해선 MSE처럼 동작하고, 큰 에러에선 MAE처럼 동작한다.
단점
- 손실을 줄이기 위한 \(\delta\) 값의 최적화가 필요하다.
- 미분과 최적화가 다른 손실함수보다 복잡할 수 있다.
- 특정 상황에서는 MSE보다 성능이 낮을 수 있다.
Hinge Loss
$$ \text{Hinge Loss} = \frac{1}{N} \sum_{i=1}^{N} \max(0, 1 - y_i \cdot \hat{y}_i) $$
장점
- 선형 분류기와 서포트 벡터 머신(SVM)에 적합하다.
- 정확하게 예측된 경우 손실이 0으로 수렴해, 확실한 예측을 보장한다.
- 소프트 마진을 통해 노이즈에 견고하다.
단점
- 다중 클래스 문제에 확장하기 어렵다.
- 확률적 해석이 불가능하다.
- 일부 상황에서는 경사하강법의 수렴이 느릴 수 있다.
Kullback-Leibler Divergence(KL Divergence)
$$ \text{KL Divergence} = \sum_{i=1}^{N} y_i \log\left(\frac{y_i}{\hat{y}_i}\right) $$
장점
- 예측 분포와 실제 분포의 차이를 측정할 수 있어 확률적 모델에서 사용된다.
- 정보 이론에서 널리 사용되며, 확률 간 불일치를 이해하는 데 도움을 준다.
- 모델이 특정 분포에 맞춰지도록 학습할 때 유용하다.
단점
- 비대칭적이므로 \(P\)와 \(Q\)의 차이를 반영하기 어렵다.
- 실제 분포가 0에 가까운 경우 발산할 수 있다.
- 계산이 복잡하며, 확률 분포의 정규화를 필요로 한다
Focal Loss
$$ \text{Focal Loss} = -\alpha (1 - \hat{y}_i)^{\gamma} y_i \log(\hat{y}_i) $$
장점
- 불균형한 데이터셋에서 성능이 뛰어나며, 희귀 클래스에 집중할 수 있다.
- 높은 확률의 예측보다는 어려운 예측에 더 높은 손실을 부여해 모델 학습이 개선된다.
- 감마 파라미터를 통해 오류에 따른 가중치를 조정할 수 있다.
단점
- 감마 및 알파 값 조정이 필요해 최적화가 어려울 수 있다.
- 학습 속도가 느려질 수 있다.
- 매우 균형 잡힌 데이터셋에서는 오히려 성능이 저하될 수 있다.
이렇게 여러 가지 손실 함수와 적용 분야에 대해 알아보았다. 하지만 손실 함수를 이용하여 예측값과 실제 데이터의 차이를 알고있기만 해서는 모델이 똑똑해질 수 없다. 인간도 실수를 통해서 배워나가야하는데 우리가 개발하는 모델도 그렇다. 더 나은 모델이 되기 위해 이 손실 함수 값을 최소화하기 위해서 사용되는 것이 Optimizer이다. 이 Optimizer도 여러가지 종류와 발전과정이 존재하므로 공부해 둘 필요가 있다.
관련 포스트
2024.10.25 - [Data Science/ML & DL] - 언어모델 평가 지표(Perplexity, PPL)
2024.10.28 - [Data Science/ML & DL] - 옵티마이저(Optimizer)와 학습률(Learning Rate)
참고 자료
https://perceptron.blog/loss-functions-regression/
https://heytech.tistory.com/361
https://modulabs.co.kr/blog/loss-function-machinelearning/
https://modulabs.co.kr/blog/machine_learning_loss_function/