Loss Function
손실 함수는 모델의 예측과 정답 사이의 차이를 점수화하며, 학습 과정에서는 이를 최소화합니다. 일반적인 손실 함수와 각 손실 함수의 사용 시점을 살펴봅니다.
손실 함수는 모델의 예측이 학습 데이터의 정답 레이블에서 얼마나 벗어났는지 측정하고, 그 오차를 하나의 숫자로 요약합니다. 이 숫자는 낮을수록 좋습니다. 신경망을 학습한다는 것은 이 숫자가 가능한 한 작아지도록 모델 가중치를 조정한다는 의미입니다. '비용 함수'와 '목적 함수'도 흔히 동의어로 쓰이지만, 일부 문헌에서는 단일 예제의 오차를 '손실', 배치나 데이터셋의 평균을 '비용'으로 구분합니다.
손실이 학습을 이끄는 방식#
학습은 데이터의 각 배치마다 같은 주기를 반복합니다. 모델이 예측을 수행하고, 손실 함수가 레이블과 비교해 예측을 평가하며, 역전파가 모든 가중치에 대한 손실의 그래디언트를 계산합니다. 그런 다음 옵티마이저는 확률적 경사 하강법(SGD)이나 Adam 옵티마이저 등을 사용해 각 가중치를 그래디언트 반대 방향으로 조금 이동시킵니다. 이동 크기는 학습률로 정합니다. 이 과정은 그래디언트에 의존하므로 손실 함수는 거의 모든 지점에서 미분 가능해야 합니다. 각 에포크 이후 학습 및 검증 손실을 그래프로 표시하는 것은 학습 실행을 모니터링하는 표준 방법입니다. 학습 손실은 계속 감소하는데 검증 손실이 증가한다면 이는 과적합의 전형적인 징후입니다.
일반적인 손실 함수#
적절한 손실은 모델이 예측하는 대상에 따라 달라지며, PyTorch 같은 프레임워크에는 대부분의 표준 손실 함수가 포함되어 있습니다:
- 평균 제곱 오차(MSE): 예측값과 실제 값의 제곱 차이를 평균한 값으로, 회귀에 사용됩니다. 제곱을 적용하면 큰 오차의 영향이 커져 이상치가 결과에 큰 영향을 미칩니다.
- 평균 절대 오차(L1) 및 Huber 손실: 오차가 클 때 선형으로 증가하는 회귀 손실로, 이상치의 영향을 덜 받습니다. Huber 손실은 작은 오차에는 이차 함수로, 임곗값을 넘는 오차에는 선형 함수로 작동합니다.
- 교차 엔트로피: 상호 배타적인 클래스에 대한 소프트맥스 확률을 계산하는 이미지 분류의 표준 손실입니다.
- 이진 교차 엔트로피(BCE): 시그모이드를 통해 각 클래스를 독립적인 예/아니요 예측으로 평가하므로 다중 레이블 문제와 탐지기의 클래스 점수에 적합합니다.
- 포컬 손실: 쉬운 예제의 가중치를 낮춰 클래스 불균형이 심한 상황에서 드물고 어려운 예제가 학습을 주도하도록 하는 교차 엔트로피 변형입니다.
- IoU 기반 손실: 합집합 대비 교집합(IoU)을 기반으로 구축된 박스 회귀 손실입니다. DIoU 및 CIoU와 같은 변형은 중심점 거리와 CIoU의 경우 종횡비에 대한 패널티를 추가합니다.
- Dice 손실: 전경이 전체 픽셀 중 매우 적은 부분만 차지할 때도 유의미한 신호를 유지하는 이미지 분할용 겹침 손실입니다.
- 대조 손실: 대조 학습에 사용되는 손실로, 임베딩 공간에서 일치하는 쌍은 서로 가깝게 만들고 일치하지 않는 쌍은 서로 멀어지게 합니다.
교차 엔트로피는 정답 클래스에 할당된 확률의 음의 로그를 사용하므로, 확신에 찬 오답에는 훨씬 큰 비용이 발생하고 확신에 찬 정답에는 거의 비용이 발생하지 않습니다. PyTorch의 CrossEntropyLoss은 같은 확신도를 가진 두 예측에서 이러한 차이를 보여줍니다:
import torch
from torch import nn
# CrossEntropyLoss applies softmax to raw scores (logits) internally
loss_fn = nn.CrossEntropyLoss()
# Logits for 3 classes; the true class is index 0
target = torch.tensor([0])
confident_right = torch.tensor([[4.0, 0.5, -1.0]])
confident_wrong = torch.tensor([[-1.0, 4.0, 0.5]])
print(f"Confident and right: {loss_fn(confident_right, target).item():.4f}")
print(f"Confident and wrong: {loss_fn(confident_wrong, target).item():.4f}")확신에 찬 정답 예측의 비용은 0.0363인 반면, 같은 확신도로 오답 클래스를 선택하면 비용은 5.0363으로 약 139배 더 큽니다.
객체 탐지의 복합 손실#
객체 탐지 모델은 각 객체의 위치와 종류를 예측하므로, 학습 손실은 여러 항의 가중합으로 구성됩니다. YOLO26은 CIoU 박스 손실, BCE 분류 손실, 정규화된 박스 거리의 L1 손실을 결합합니다. 이 L1 손실은 이전 YOLO 모델에서 사용한 Distribution Focal Loss를 대체하며, 손실 항에는 box, cls, dfl 학습 인수(기본값 7.5, 0.5, 1.5)가 가중치를 지정합니다. 또한 Progressive Loss는 학습이 진행될수록 일대다 헤드에서 NMS가 필요 없는 추론에 사용되는 일대일 헤드로 가중치를 이동합니다.
손실 함수와 관련 용어 비교#
- 평가 지표: 정확도와 평균 정밀도(mAP) 같은 지표는 사람들이 중요하게 생각하는 기준으로 성능을 나타냅니다. 하지만 대부분은 불연속적으로 변해 그래디언트를 제공할 수 없습니다. 학습에서는 이러한 지표의 대리 지표로 미분 가능한 손실을 최소화합니다.
- 정규화: 복잡성을 억제하기 위해 손실에 추가하는 패널티 항입니다. L2 정규화는 제곱 가중치 합에 비례하는 값을 추가해 옵티마이저가 일반화 성능이 더 좋은 작은 가중치를 선택하도록 합니다.
- 보상 함수: 강화 학습의 목적 함수입니다. 에이전트는 손실을 최소화하는 대신 누적 보상을 최대화하므로, 보상은 음의 손실 역할을 합니다.










