Loss Function

예갈조·2024년 12월 12일

Tumor Track Project

목록 보기
19/25

개념


  • 머신러닝 및 딥러닝 모델의 성능을 평가하는 데 사용되는 함수
  • 모델의 예측값(^y)과 실제값(y) 간의 차이를 수치적으로 나타냄 (우리가 직관적으로 알 수 있다)
  • 모델의 학습 목표: 손실 함수를 최소화하는 가중치와 편향(파라미터)를 찾는 것
    • 손실 함수가 작을수록 모델의 예측이 실제값에 가까워진다는 의미
  • 손실값(loss)은 모델의 성능을 한눈에 보여주는 척도이고 이를 기반으로 최적화 알고리즘이 모델의 파라미터를 업데이트 하기 때문에 손실 함수는 중요하다.



종류 (분류/회귀/생성)


  • 문제 유형에 따라 알맞은 손실함수를 선택하여 사용해야 한다.
    • 손실 함수의 형태에 따라 최적화 과정에서 수렴 속도와 안정성이 달라질 수 있다. 적절한 손실 함수를 선택하면 학습 과정을 가속화하고 안정적인 수렴을 유도할 수 있다.
  • 잘못된 손실함수를 선택하면 학습 성능이 저하될 수도 있다.

분류 모델 손실 함수


  • 분류 문제는 데이터가 특정 클래스에 속하는지를 예측하는 것이 목표이다.
  • 클래스 간 확률 분포를 비교하거나 분류 경계를 정의하는 손실함수를 사용해야한다.
  • 분류 문제는 이진 분류와 다중 분류로 구분하는데 이 때 사용되는 손실함수의 종류도 다르다.
    • 이진 분류: BCE, Hinge Loss
    • 다중 분류: CCE, Sparse Categorical Cross-Entropy

1. Binary Cross-Entropy (BCE)

  • 이진 분류에서 가장 많이 사용되는 손실함수이다. BCE는 예측값(두 클래스 중 하나에 속할 확률)과 실제 레이블 간의 차이를 확률적으로 계산하여 손실을 수치화한다.
    L=1ni=1n(yilog(y^i)+(1yi)log(1y^i))L = -\frac{1}{n} \sum_{i=1}^{n} \left( y_i \cdot \log(\hat{y}_i) + (1 - y_i) \cdot \log(1 - \hat{y}_i) \right)
    • 수식을 보면 알 수 있듯이 BCE와 MLE는 확률적 모델 학습에서 밀접한 상관 관계를 가진다. BCE는 이진 분류 문제에서 MLE를 사용하여 모델의 파라미터를 최적화하는 과정을 손실함수로 표현한 것이다.
    • MLE를 통해 가능도를 최대화하는 것은 BCE 손실함수를 최소화하는 것과 동일하다. 따라서 BCE 손실은 로그 함수 가능도의 음수로 정의할 수 있다.
      • MLE

        θ=argmaxθi=1n(yilog(y^i)+(1yi)log(1y^i))\theta^* = \arg\max_{\theta} \sum_{i=1}^{n} \left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right)
      • BCE

        L=1ni=1n(yilog(y^i)+(1yi)log(1y^i))L = -\frac{1}{n} \sum_{i=1}^{n} \left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right)
      • 관계

        L=L(θ)L=−L(θ)
  • 장점
    • 예측값이 실제 레이블과 일치하는 확률에 기반하여 학습할 수 있다.
    • 이진 분류 문제에서 손실을 최소화하는 데 최적화되어 있다.
    • 이진 분류 문제는 확률값 하나로 예측값 충분히 나타낼 수 있어서 소프트맥스를 사용하지 않아도 된다. → 계산량이 적어짐
  • 단점
    • 클래스 불균형이 심할 경우 잘 작동하기 않는다.
      • Weighted BCE(클래스 가중치)를 적용하거나 샘플링 방법을 사용하여 해결한다.
        • 언더샘플링/오버샘플링: 단순히 샘플 개수 수정하는 것
  • 적용 사례
    • 이진 분류 문제: (1) 스팸 메일 분류, (2) 질병 진단
    • GAN에서 진짜/가짜 이미지를 분류하는 데 사용 가능
      • GAN 간단 설명: 생성자 ↔ 판별자가 서로 경쟁하며 학습하는 구조를 가진 적재적 생성 신경망
      • 판별자의 BCE 활용
        • 판별자는 진짜(1)/가짜(0) 데이터를 구분하는 것이 목표
      • 생성자의 BCE 활용
        • 생성자는 판별자를 속여서 가짜를 진짜처럼 보이게 만드는 것이 목표

2. Hinge Loss

  • 주로 SVM(Support Vector Machine)에서 사용되는 손실함수로 SVM의 결정 경계를 최대화하기 위해 설계되었다. 이 손실함수는 데이터가 올바르게 분류되었을 때 마진(margin)을 유지하도록 유도하고 잘못 분류된 데이터에 대해서는 패널티를 부과한다.
    • 마진(margin): 결정 경계와 가장 가까운 데이터 포인트 사이의 거리

      L=1ni=1nmax(0,1yiy^i)L = \frac{1}{n} \sum_{i=1}^{n} \max(0, 1 - y_i \cdot \hat{y}_i)
    • 1-yi*y^i: 마진을 평가하는 값. 올바르게 분류되었을 경우에 1 이상의 값(손실값 = 0)을 가진다.

      • 손실이 0이 된다는 것은 무시하겠다는 의미
      • 분류가 잘 되지 않아 마진 내의 관측값이면 손실이 크도록 유도하기 위함
  • 장점
    • 마진 극대화(확보): 데이터 점이 결정 경계(decision boundary)에서 멀리 떨어지도록 학습시킨다.
    • 커널 트릭(kernel trick)과 결합하여 비선형 분류 문제로 확장도 가능하다.
      • 커널 트릭 간단 설명: 데이터를 고차원 공간으로 매핑 → 비선형 분류 문제를 선형적으로 해결할 수 있도록 하는 방법. 직접 데이터를 변환하지 않고 데이터 간의 내적(dot product)을 통해 매핑 가능.
  • 단점
    • 모델 예측값을 확률값으로 반환하지 않아 확률 기반 예측은 불가능하다.
    • 비선형적인 계산인 max를 포함하고 있어서 손실함수가 부드럽지 않다. 이는 최적화 알고리즘에서 학습이 불안정해질 수 있는 요소가 될 수 있다.
    • 이진 분류에서만 사용되고 다중 클래스 분류는 하지 못한다. (다중 클래스 Hinge Loss가 따로 있다)
  • 적용 사례
    • SVM
    • hard margin 조건이 중요한 문제
      • hard margin: 마진 안으로 들어오거나 잘못 분류되는 데이터가 허용되지 않음
    • 이미지 분류: 얼굴 검출(얼굴인지 아닌지), 스팸 메일 필터링(스팸인지 아닌지)

3. Categorical Cross-Entropy (CCE)

  • 다중 클래스 분류 문제에서 가장 많이 사용되는 손실함수이다. 예측값이 정답과 얼마나 가까운지 평가한다.
    L=1ni=1nj=1Cyi,jlog(y^i,j)L = -\frac{1}{n} \sum_{i=1}^{n} \sum_{j=1}^{C} y_{i,j} \log(\hat{y}_{i,j})
    yi,j: i번째 데이터가 j번째 클래스에 속하는지 나타내는 값 (원-핫 인코딩) y^i,j: 모델이 i번째 데이터에 대해 j번째 클래스로 예측한 확률값 n: 데이터 개수 C: 클래스 개수
    • 작동 원리
      • 원-핫 인코딩 기반 손실 계산
      • 소프트맥스 함수와 결합 → 모델의 출력을 확률 분포로 변환하여 y^i,j값 얻기 가능
  • 장점
    • 예측값이 클래스 확률 분포로 출력되기 때문에 확률 기반 학습이 가능하다.
  • 단점
    • 클래스 불균형에 민감하다.
    • y^i,j이 0에 가까운 경우 무한대가 발생할 수도 있다.
  • 적용 사례
    • 다중 클래스 분류 문제: (1) 이미지 분류 - 예시) MNIST 손글씨 데이터셋, (2) 음성 인식, (3) 다중 태스크 학습, (4) 추천 시스템
  • CCE와 BCE 차이
    • CCE는 소프트맥스를 통해 확률 분포 계산하고 BCE는 독립적으로 각 클래스의 확률을 계산한다.

4. Sparse Categorical Cross-Entropy (Sparse CCE)

  • 다중 클래스 분류 문제에서 사용되는 손실함수로 실제 클래스 레이블이 원-핫 인코딩이 아닌 정수 인덱스 형태로 주어진 경우에 사용한다. 원-핫 인코딩을 사용하지 않기 때문에 메모리를 절약할 수 있으며 대규모 클래스 분류 문제에서 효율적으로 작동한다. 또한 CCE는 손실 계산시에 모든 클래스의 확률을 고려하지만 Sparse CCE는 정답 클래스의 확률만 사용한다.
    L=1ni=1nlog(y^i,ci)L = -\frac{1}{n} \sum_{i=1}^{n} \log(\hat{y}_{i,c_i})
    n: 데이터 개수 ci: i번째 데이터 실제 클래스 y^i,ci: 모델이 예측한 1번째 데이터 클래스 …에 대한 확률값 C: 클래스 개수
  • 장점
    • 실제 레이블을 원-핫 인코딩하지 않아도 되므로, 메모리 사용량이 감소한다.
  • 단점
    • 정수 레이블은 원-핫 인코딩에 비해 직관적으로 어떤 클래스인지 파악하기 어려울 수 있다.
    • 클래스 비율이 불균형한 데이터셋에서 성능이 저하된다.
  • 적용 사례
    • 다중 클래스 분류 문제: (1) 이미지 분류, (2) 텍스트 분류, (3) 음성 인식
    • 대규모 클래스 문제
    • 경량 시스템: 메모리와 계산 자원이 제한된 환경(모바일 기기, IoT 디바이스)에서 모델 학습


회귀 모델 손실 함수³


회귀 문제는 연속적인 실수값을 예측하는 문제


1. Mean Squared Error (MSE, 평균 제곱 오차)

  • 예측값과 실제값의 차이를 제곱한 값의 평균
    MSE=1ni=1n(yiy^i)2MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
    n은 데이터 총 개수이고 실제값에서 예측값의 차를 제곱해준다.
  • 장점
    • 큰 오차에 민감하여 모델이 큰 오차를 줄이는 것에 집중하도록 도와준다. 제곱 계산으로 인해서 오차가 양수이든 음수이든 누적값이 증가하여 큰 오차에 민감하다고 할 수 있다.
  • 단점
    • 이상치(outlier)에 민감해서 만약 작은 데이터셋에 이상치가 포함되어 있다면 손실값이 왜곡될 수도 있다.
    • 실제 정답보다 낮게 예측했는지, 높게 예측했는지 파악하기 힘들다.
    • 제곱하는 성질로 인해 1미만의 에러는 작아지고 그 이상의 에러는 커진다.
  • 적용 사례 - 연속형 목표값을 가지는 문제
    • 주택 가격 예측
    • 온도 예측

2. Mean Absolute Error (MAE, 평균 절대 오차)

  • 예측값과 실제값 차이의 절댓값을 평균한 값
    MAE=1nyiy^iMAE = \frac{1}{n} \sum |y_i - \hat{y}_i|
  • 장점
    • MSE와 달리, 이상치에 덜 민감하다. 오차를 제곱하지 않고 단순히 절댓값으로 계산하기 때문에 이상치가 결과에 큰 영향을 미치지 않는다. (큰 오차에 민감하지 않다는 의미)
  • 단점
    • 기울기(gradient)가 일정해서 최적화 알고리즘에서 수렴 속도가 느려질 수 있다.
      • 절댓값을 포함한 그래프는 항상 기울기가 -1 또는 1로 일정하다.
      • 큰 오차가 있는 경우에 손실값을 빠르게 줄이기 위해서 더 큰 기울기를 가져야 하지만 MAE는 항상 1 또는 -1이므로 느리게 학습된다.
    • 작은 오차와 큰 오차를 동일하게 처리하기 때문에 큰 오차를 줄이는 일에 덜 집중할 수도 있다.
  • 적용 사례
    • 이상치가 많은 데이터
    • 실제값과 예측값의 절대적인 차이가 중요한 경우 → 모델 성능을 이해하기 위해 오차의 평균적인 크기를 알아야 하는 상황

3. Root Mean Squared Error (RMSE, 평균 제곱근 오차)

  • MSE에 루트를 취하여 데이터의 원래 단위로 복원 시킨다. 이렇게 하면 모델의 평균적인 오차 크기를 직관적으로 이해할 수 있다.
    RMSE=i=1n(yiy^i)2nRMSE = \sqrt{\frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{n}}
  • 장점
  • 단점
    • 이상치로 인해 생기는 왜곡을 조~금 줄여주는 것 말고는 MSE 단점과 똑같다.
    • 제곱으로 인해 1 미만의 에러는 작아지고 그 이상의 에러는 커진다.
    • 실제 정답보다 낮게 예측했는지, 높게 했는지 파악하기 힘들다.

4. MAPE (Mean Absolute Percentage Error, 평균 절대 비율 오차)

  • MAE를 비율, 퍼센트로 표현하여 스케일 의존적인 문제점을 개선한다. 모델의 성능을 데이터의 크기와 관계없이 비교할 수 있다.
    MAPE=100ni=1nyiy^iyiMAPE = \frac{100}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right|
  • 장점
    • 다른 모델과 에러율 비교가 쉽다.
    • 데이터의 크기나 단위와 무관하게 적용이 가능하다.
  • 단점
    • 실제 정답보다 낮게 예측했는지 높게 예측했는 지를 파악하기 힘들다.
    • 실제 정답이 1보다 작으면 무한대 값으로 수렴할 수 있다.

5. Huber Loss

  • MSE와 MAE의 장접을 결합한 손실함수로 이상치에 강한 성능을 보인다.
    L={12(yy^)2if yy^δδyy^12δ2if yy^>δL = \begin{cases} \frac{1}{2} (y - \hat{y})^2 & \text{if } |y - \hat{y}| \leq \delta \\ \delta |y - \hat{y}| - \frac{1}{2} \delta^2 & \text{if } |y - \hat{y}| > \delta \end{cases}
    • 여기서 delta는 임계값(threshold)을 나타낸다.
    • 작은 오차는 MSE, 큰 오차는 MAE 사용
  • 장점
    • 작은 오차는 MSE처럼 제곱을 적용하고 큰 오차는 MAE처럼 선형으로 처리하여 이상치에 덜 민감하게 반응한다.
  • 단점
    • delta 값을 설정하기 위해서 추가적인 조정이 필요하다.
  • 적용 사례
    • 회귀 문제에서 이상치가 포함된 데이터셋


생성 모델 손실 함수


  • 아직 생성형 모델도 잘 몰라서 뺐어요 .. ^.^




후속 공부 ..

  • logit, sigmoid, softmax
  • 원-핫 인코딩
  • GAN
  • SVM
  • kernel trick
  • 생성형 모델

reference

  1. 손실함수 (Loss Function) | 모두의 연구소
  2. [머신러닝] 손실함수의 종류
  3. 회귀 모델 성능 평가 지표(MAE, MSE, RMSE, MAPE 등)
  4. 딥러닝 개발자라면 꼭 알아야 할 손실 함수의 개념과 종류 | 모두의 연구소
  5. 1. GAN 소개 - PseudoLab Tutorial Book
  6. (데이터 과학) 손실함수 / hinhe loss

0개의 댓글