손실 함수와 비용 함수의 차이 및 활용
딥러닝 모델을 학습할 때 가장 중요한 요소 중 하나가 손실 함수(Loss Function)와 비용 함수(Cost Function)입니다. 이 두 개념은 종종 혼용되어 사용되지만, 엄밀히 보면 차이가 있습니다. 이번 포스팅에서는 손실 함수와 비용 함수의 차이점, 각각의 역할, 그리고 다양한 손실 함수의 활용 방법을 자세히 알아보겠습니다.
1. 손실 함수(Loss Function)란?
손실 함수(Loss Function)는 단일 데이터 샘플(혹은 한 배치)에 대한 오차를 계산하는 함수입니다. 즉, 하나의 예측값과 실제 정답 사이의 차이를 측정하는 데 사용됩니다. 손실 함수의 결과는 개별 데이터 샘플마다 다를 수 있으며, 딥러닝 모델은 손실 값을 최소화하도록 학습됩니다.
대표적인 손실 함수
평균제곱오차(Mean Squared Error, MSE)
- 주로 회귀 문제에서 사용됩니다.
- 예측값과 실제값의 차이를 제곱한 후 평균을 구합니다.
$$ MSE = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2 $$
import torch import torch.nn as nn loss_fn = nn.MSELoss() y_pred = torch.tensor([3.0, 2.5, 4.1]) y_true = torch.tensor([3.0, 2.0, 4.0]) loss = loss_fn(y_pred, y_true) print(loss.item())평균절대오차(Mean Absolute Error, MAE)
- 예측값과 실제값의 차이를 절대값으로 변환 후 평균을 구하는 방식입니다.
$$ MAE = \frac{1}{N} \sum_{i=1}^{N} |y_i - \hat{y}_i| $$
loss_fn = nn.L1Loss() loss = loss_fn(y_pred, y_true) print(loss.item())교차 엔트로피 손실(Cross Entropy Loss)
- 주로 분류 문제에서 사용됩니다.
- 예측 확률 분포와 실제 레이블 간의 차이를 측정합니다.
$$ H(p, q) = - \sum p(x) \log q(x) $$
loss_fn = nn.CrossEntropyLoss() y_pred = torch.tensor([[2.0, 1.0, 0.1]]) # 모델의 로짓(logits) y_true = torch.tensor([0]) # 정답 레이블 (클래스 인덱스) loss = loss_fn(y_pred, y_true) print(loss.item())
2. 비용 함수(Cost Function)란?
비용 함수(Cost Function)는 전체 데이터셋에 대한 손실 함수의 평균 값입니다. 즉, 모델이 학습할 때 고려하는 최적화 대상이 됩니다. 개별 데이터 샘플의 손실을 모두 합산한 후 평균을 내어 모델이 얼마나 잘 학습되었는지를 평가합니다.
손실 함수와 비용 함수의 관계
손실 함수는 개별 데이터 샘플의 오차를 계산하는 데 사용됩니다.
비용 함수는 전체 데이터셋에서 평균적으로 발생하는 손실을 측정하는 함수입니다.
일반적으로 손실 함수의 평균이 비용 함수가 됩니다.
$$ J(\theta) = \frac{1}{N} \sum_{i=1}^{N} L(y_i, \hat{y}_i) $$
여기서,
- $J(\theta)$는 비용 함수
- $L(y_i, \hat{y}_i)$는 손실 함수
- $N$은 전체 샘플 수
3. 손실 함수 및 비용 함수의 활용
손실 함수와 비용 함수는 신경망 학습 과정에서 다음과 같이 활용됩니다.
최적화 과정에서 비용 함수 최소화
- 모델은 손실 함수를 기반으로 비용 함수를 계산하고, 이를 최소화하도록 가중치를 조정합니다.
- 이를 위해 경사 하강법(Gradient Descent)과 같은 최적화 기법이 사용됩니다.
import torch.optim as optim model = nn.Linear(2, 1) # 예제 모델 optimizer = optim.SGD(model.parameters(), lr=0.01) # SGD 최적화 for epoch in range(100): optimizer.zero_grad() y_pred = model(torch.tensor([[1.0, 2.0]])) loss = loss_fn(y_pred, torch.tensor([[1.0]])) loss.backward() optimizer.step()손실 함수 선택에 따른 모델 성능 영향
- 회귀 문제에서는 MSE 또는 MAE를 주로 사용합니다.
- 분류 문제에서는 Cross Entropy Loss를 사용합니다.
- 불균형 데이터의 경우 Focal Loss 등의 변형된 손실 함수가 필요할 수도 있습니다.
과적합 방지를 위한 손실 함수 활용
- L1, L2 정규화 등을 손실 함수에 포함하여 모델이 특정 가중치에 의존하지 않도록 유도할 수 있습니다.
loss = loss_fn(y_pred, y_true) + 0.01 * torch.norm(model.weight, p=2) # L2 정규화 적용
4. 결론
손실 함수(Loss Function)와 비용 함수(Cost Function)는 딥러닝 모델 학습에서 핵심적인 역할을 합니다. 손실 함수는 개별 데이터 샘플에 대한 오차를 측정하는 반면, 비용 함수는 전체 데이터셋의 평균 손실을 계산하여 최적화 대상이 됩니다. 적절한 손실 함수를 선택하는 것이 모델 성능을 결정짓는 중요한 요소이며, 이를 통해 최적의 모델을 학습시킬 수 있습니다.
'Python > Deep Learning' 카테고리의 다른 글
| 경사 하강법(Gradient Descent)과 최적화 알고리즘 비교 (0) | 2025.11.26 |
|---|---|
| 활성화 함수란? (ReLU, Sigmoid, Tanh 등) (0) | 2025.11.24 |
| 뉴런과 퍼셉트론: 기초부터 이해하기 (0) | 2025.11.23 |
| 인공신경망(ANN)의 개념과 역사 (0) | 2025.11.22 |