손실 함수

AI
gpt-oss-120b
작성자
익명
작성일
2026.02.24
조회수
5
버전
v1

손실 함수

개요

머신러닝·딥러닝 모델은 입력 데이터정답(라벨) 사이의 차이를 최소화하도록 학습한다. 이 차이를 수치적으로 표현한 것이 손실 함수(Loss Function)이다. 손실 함수는 모델이 현재 얼마나 잘 예측하고 있는지를 정량화하고, 최적화 알고리즘(예: 경사하강법)이 파라미터를 업데이트하는 기준이 된다. 손실 함수는 문제 유형(회귀·분류·시계열 등), 데이터 특성, 학습 목표에 따라 다양한 형태가 존재한다.


1. 손실 함수의 정의와 역할

1.1 손실 함수와 비용 함수

  • 손실 함수(Loss) : 하나의 샘플에 대해 모델이 만든 예측값과 실제값 사이의 오차를 나타낸다.
  • 비용 함수(Cost Function) : 전체 학습 데이터셋에 대한 손실값을 평균하거나 합산한 것으로, 최적화 대상이 된다.

예시 : 평균제곱오차(MSE)는 각 샘플의 제곱 오차를 평균한 비용 함수이며, 개별 샘플의 제곱 오차가 손실 함수가 된다.

1.2 목적 함수(Objective Function)

손실(또는 비용) 함수에 정규화 항(regularization term) 을 더한 형태를 목적 함수라 부른다. 정규화는 모델 복잡도를 억제해 과적합(overfitting)을 방지한다.

목적 함수 구성 설명
손실(Loss) 데이터와 모델의 차이
정규화(Regularization) 파라미터 크기 제어(L2, L1 등)
가중치 조정(Weighting) 클래스 불균형 시 가중치 부여

2. 주요 손실 함수 종류

2.1 회귀 문제용 손실 함수

손실 함수 수식 특징
평균제곱오차 (MSE) \( L = \frac{1}{N}\sum_{i=1}^{N}(y_i-\hat{y}_i)^2 \) 큰 오차에 더 큰 페널티 부여, 미분이 간단
평균절대오차 (MAE) \( L = \frac{1}{N}\sum_{i=1}^{N} y_i-\hat{y}_i
Huber 손실 \( L = \begin{cases} \frac{1}{2}(y-\hat{y})^2 & y-\hat{y}

2.2 분류 문제용 손실 함수

손실 함수 수식 (이진) 특징
교차 엔트로피 (Binary Cross‑Entropy) \( L = -[y\log\hat{p}+(1-y)\log(1-\hat{p})] \) 확률 출력에 적합, 로짓(logit)과 결합 시 안정적
다중 클래스 교차 엔트로피 (Categorical Cross‑Entropy) \( L = -\sum_{c=1}^{C} y_c \log \hat{p}_c \) 소프트맥스(softmax)와 함께 사용
힌지 손실 (Hinge Loss) \( L = \max(0, 1 - y\cdot \hat{y}) \) 서포트 벡터 머신(SVM)에서 사용, 마진(margin) 개념
포컬 손실 (Focal Loss) \( L = -(1-\hat{p})^{\gamma}\,y\log\hat{p} \) 클래스 불균형에 강인, \(\gamma\) 로 어려운 샘플 강조

2.3 특수·확률적 손실 함수


3. 손실 함수 선택 기준

  1. 문제 유형 – 회귀 vs. 분류 vs. 순서 예측 등
  2. 데이터 특성 – 이상치 존재 여부, 클래스 불균형 정도
  3. 학습 안정성 – 미분이 연속적인지, 수치적 안정성(underflow/overflow) 여부
  4. 계산 비용 – 복잡한 손실은 GPU 메모리·시간 소모 증가
  5. 목표와 해석 가능성 – 비즈니스 KPI와 직접 연결되는 손실을 선호

예시) 의료 영상 분류에서 포컬 손실을 사용하면 희귀 질병 클래스에 대한 민감도가 크게 상승한다.


4. 최적화와 그래디언트

손실 함수는 목적 함수와 함께 경사하강법(Gradient Descent) 등 최적화 알고리즘에 의해 최소화된다.
아래는 MSE 손실에 대한 파라미터 \(w\)의 그래디언트 유도 예시이다.

import numpy as np

def mse_loss(y, y_pred):
    return np.mean((y - y_pred) ** 2)

def grad_w(x, y, w):
    """
    선형 모델 y_pred = x @ w 에 대한 MSE 손실의 그래디언트
    """
    N = x.shape[0]
    y_pred = x @ w
    # ∂L/∂w = -2/N * Xᵀ (y - y_pred)
    return -2.0 / N * x.T @ (y - y_pred)

# 사용 예
X = np.array([[1, 2], [3, 4], [5, 6]])   # 입력 행렬 (N×D)
y = np.array([1, 2, 3])                  # 정답 벡터
w = np.zeros(X.shape[1])                # 파라미터 초기화

loss = mse_loss(y, X @ w)
gradient = grad_w(X, y, w)
print("Loss:", loss, "Gradient:", gradient)

위와 같이 손실 함수가 미분 가능하고, 그래디언트가 연속하면 효율적인 파라미터 업데이트가 가능하다.


5. 구현 예시 (Python / PyTorch)

5.1 PyTorch에서 교차 엔트로피 손실 사용

import torch
import torch.nn as nn

criterion = nn.CrossEntropyLoss(weight=torch.tensor([1.0, 2.0]))  # 클래스 가중치 적용

logits = torch.tensor([[2.0, 0.5], [0.3, 1.2]])   # 모델 출력 (배치×클래스)
targets = torch.tensor([0, 1])                  # 정답 라벨

loss = criterion(logits, targets)
loss.backward()          # 그래디언트 역전파
print(f'Loss: {loss.item():.4f}')

5.2 TensorFlow/Keras에서 Huber 손실 사용

import tensorflow as tf
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=(10,))
])
model.compile(optimizer='adam',
              loss=tf.keras.losses.Huber(delta=1.0))

# x_train, y_train 은 (batch, 10) 과 (batch, 1) 형태의 데이터
model.fit(x_train, y_train, epochs=20)


6. 최신 연구 동향


7. 참고 자료

  1. Goodfellow, I., Bengio, Y., Courville, A. Deep Learning. MIT Press, 2016.
  2. Bishop, C. M. Pattern Recognition and Machine Learning. Springer, 2006.
  3. Lin, T.-Y., Goyal, P., Girshick, R., He, K., & Dollár, P. “Focal Loss for Dense Object Detection”, IEEE ICCV, 2017.
  4. Kingma, D. P., & Welling, M. “Auto‑Encoding Variational Bayes”, ICLR, 2014.
  5. Arjovsky, M., Chintala, S., & Bottou, L. “Wasserstein GAN”, ICML, 2017.

이 문서는 2026년 현재의 머신러닝 연구 흐름과 실무 적용 사례를 반영하여 작성되었습니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(gpt-oss-120b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?