# 손실 함수 (Loss Function)

손실 함수(Loss Function)는 머신러닝 및 통계 모델링에서 모델의 예측 성능을 정량적으로 평가하기 위해 사용되는 핵심 요소 중 하나이다. 손실 함수는 모델의 예측값과 실제값 사이의 차이를 수치적으로 나타내며, 이 값을 최소화하는 것이 학습의 목표가 된다. 손실 함수는 모델의 학습 과정에서 중요한 역할을 하며, 모델의 최적화 과정에서 사용된다.

#### 손실 함수의 개념적 정의

손실 함수는 주어진 입력 데이터에 대해 모델이 예측한 출력과 실제 타겟 값(ground truth) 간의 차이를 나타내는 함수로 정의된다. 이 차이를 측정하는 방법은 여러 가지가 있으며, 사용되는 손실 함수의 유형은 모델의 특성, 데이터의 특성, 그리고 문제의 유형에 따라 다르게 선택된다.

손실 함수는 다음과 같은 일반적인 형태를 가진다.

$ L(y, \hat{y}) $

여기서 $ y $는 실제 타겟 값이고, $ \hat{y} $는 모델이 예측한 값이다. $ L(y, \hat{y}) $는 이 두 값 사이의 차이를 나타내며, 그 차이를 최소화하는 것이 모델 학습의 목표가 된다.

#### 손실 함수의 종류

손실 함수는 크게 두 가지 범주로 나눌 수 있다: 회귀(Regression) 문제를 다루는 손실 함수와 분류(Classification) 문제를 다루는 손실 함수. 각 범주에서 자주 사용되는 손실 함수를 소개하겠다.

**회귀(Regression)에서의 손실 함수**

회귀 문제에서는 모델이 연속적인 실수값을 예측한다. 따라서 손실 함수는 예측값과 실제값 간의 차이를 측정하는데 초점을 맞춘다. 대표적인 손실 함수로는 다음과 같은 것들이 있다.

* **평균 제곱 오차 (Mean Squared Error, MSE)**: 가장 일반적으로 사용되는 회귀 손실 함수로, 예측값과 실제값 간의 차이를 제곱하여 평균을 취한 것이다. 수식으로는 다음과 같이 표현된다.

$$
MSE = \frac{1}{n} \sum\_{i=1}^{n} (y\_i - \hat{y}\_i)^2
$$

MSE는 제곱 항이 포함되어 있기 때문에, 큰 오차에 더 큰 패널티를 부여하는 특성을 가지고 있다.

* **평균 절대 오차 (Mean Absolute Error, MAE)**: 예측값과 실제값 간의 차이의 절대값을 평균한 것이다. 수식은 다음과 같다.

  $$
  MAE = \frac{1}{n} \sum\_{i=1}^{n} |y\_i - \hat{y}\_i|
  $$

  MAE는 모든 오차에 동일한 중요도를 부여하는 반면, MSE에 비해 이상치(outlier)에 덜 민감하다.
* **Huber 손실 함수 (Huber Loss)**: MSE와 MAE의 장점을 결합한 손실 함수로, 작거나 중간 정도의 오차에 대해서는 MSE와 유사하게 동작하지만, 큰 오차에 대해서는 MAE와 유사하게 동작하도록 한다. Huber 손실 함수는 다음과 같이 정의된다.

  $$
  L\_{\delta}(a) = \begin{cases} \frac{1}{2} a^2 & \text{if } |a| \leq \delta \ \delta (|a| - \frac{1}{2}\delta) & \text{if } |a| > \delta \end{cases}
  $$

  여기서 $ a = y\_i - \hat{y}\_i $이며, $ \delta $는 튜닝 가능한 파라미터로, 오차가 $ \delta $ 이하일 때는 MSE처럼, 초과할 때는 MAE처럼 동작하게 한다.

**분류(Classification)에서의 손실 함수**

분류 문제에서는 모델이 범주형(categorical) 값을 예측하게 되며, 이 경우 손실 함수는 모델의 예측 분포와 실제 라벨 분포 간의 차이를 측정하는데 사용된다. 대표적인 손실 함수로는 다음과 같은 것들이 있다.

* **이항 교차 엔트로피 손실 (Binary Cross-Entropy Loss)**: 이진 분류에서 자주 사용되는 손실 함수로, 예측된 확률 분포와 실제 분포 간의 교차 엔트로피를 측정한다. 수식은 다음과 같다.

  $$
  L(y, \hat{y}) = -\frac{1}{n} \sum\_{i=1}^{n} \left\[y\_i \log(\hat{y}\_i) + (1 - y\_i) \log(1 - \hat{y}\_i)\right]
  $$

  여기서 $ y\_i $는 실제 클래스(0 또는 1), $ \hat{y}\_i $는 예측된 확률(0과 1 사이의 값)이다.
* **범주형 교차 엔트로피 손실 (Categorical Cross-Entropy Loss)**: 다중 클래스 분류 문제에서 사용되는 손실 함수로, 각 클래스에 대한 예측 확률과 실제 라벨 간의 교차 엔트로피를 계산한다. 수식은 다음과 같다.

  $$
  L(y, \hat{y}) = -\sum\_{i=1}^{C} y\_i \log(\hat{y}\_i)
  $$

  여기서 $ C $는 클래스의 수, $ y\_i $는 실제 클래스, $ \hat{y}\_i $는 각 클래스에 대한 예측 확률이다.
* **KL 발산 (Kullback-Leibler Divergence, KLD)**: 예측 분포와 실제 분포 간의 차이를 측정하는 또 다른 방식으로, 주로 확률 분포를 비교할 때 사용된다. 수식은 다음과 같다.

  $$
  D\_{KL}(P||Q) = \sum\_{i} P(i) \log \frac{P(i)}{Q(i)}
  $$

  여기서 $ P $는 실제 분포, $ Q $는 예측된 분포이다. KL 발산은 비대칭적이며, 예측 분포가 실제 분포와 얼마나 다른지를 측정한다.

#### 손실 함수의 수학적 특성

손실 함수는 최적화 과정에서 중요한 역할을 하며, 특정한 수학적 특성을 가진다. 주요 특성으로는 다음이 있다.

* **볼록성 (Convexity)**: 많은 손실 함수는 볼록(convex) 함수로, 이는 전역 최적해를 보장하는 중요한 특성이다. MSE와 MAE는 대표적인 볼록 손실 함수들이다.
* **미분 가능성 (Differentiability)**: 최적화 알고리즘, 특히 경사 하강법(Gradient Descent)에서는 손실 함수의 미분 가능성이 중요하다. 대부분의 손실 함수는 매끄러운 최적화를 위해 미분 가능하게 설계된다.
* **연속성 (Continuity)**: 손실 함수의 연속성은 학습의 안정성을 보장하는 중요한 특성이다. 연속성이 보장되지 않으면 학습 과정에서 급격한 변동이 발생할 수 있다.

#### 손실 함수와 모델 학습의 관계

손실 함수는 모델 학습 과정에서 중요한 역할을 하며, 최적화의 대상이 된다. 최적화 과정은 손실 함수를 최소화하기 위한 파라미터 $ \theta $를 찾는 과정으로, 다음과 같은 최적화 문제로 정의된다.

$$
\theta^\* = \arg\min\_{\theta} L(y, f(x;\theta))
$$

여기서 $ f(x;\theta) $는 모델의 예측 함수, $ L(y, \hat{y}) $는 손실 함수, $ \theta $는 모델 파라미터이다. 최적화 과정에서는 주로 경사 하강법을 사용하여 손실 함수의 그래디언트(Gradient)를 계산하고, 이를 기반으로 모델 파라미터를 업데이트한다.

손실 함수의 선택은 모델 성능에 큰 영향을 미치며, 잘못된 손실 함수를 선택할 경우 학습이 제대로 이루어지지 않거나, 수렴하지 않을 수 있다.
