오차 함수 (손실 함수)

먼저 머신러닝의 학습이란, 결정 함수에서 최적의 파라미터를 찾는 과정이다.

이때 이 파라미터가 얼마나 최적한지, 얼마나 잘 학습이 되었는지는 어떻게 판단할까?

이를 위해 사용하는 것이 오차 함수다.

 

오차 함수에도 여러 방식의 함수가 존재한다.

  • 평균 제곱 오차
  • 크로스엔트로피 오차
  • 분류 오차

문제의 성격에 따라 적절한 오차 함수를 선택하면 된다.

 

데이터 셋에 따른  오차 함수

오차함수는 정답과 머신러닝 모델의 예측 값과의 차이를 토대로 오차를 계산한다.

계산할 때, 세 가지의 데이터 종류를 사용하여 다음과 같이 구분할 수 있다.

  • 학습 오차 (Training Error)
    학습 오차는 학습 데이터셋을 사용하여 오차를 계산한다.
    학습 과정에서 학습이 얼마나 잘 수행되고 있는지 평가하기 위해 사용된다.
    $E_{train} = \frac{1}{|X_{train}|}\sum_{x_i \in X_{train}} \left[y_i - f(x_i; \theta)\right]^2$

    각 항의 의미는 이렇다.
    1. $E_{train}$2. $\frac{1}{|X_{train}|}$
    $|X_{train}|$은 훈련 데이터셋의 개수이며, 이 값으로 나누는 이유는
    총 오차가 아니라
    평균 오차 로 만들기 위해 나누어준다.

    3. $ \left[y_i - f(x_i; \theta)\right]^2$
    $y_i$은 정답(Label)을 뜻하고, $ f(x_i; \theta)$는 머신러닝 모델의 예측 값(Prediction)을 뜻한다.
    즉, 이 뺄셈은 저 두 가지의 오차를 구하는 계산이다.

    뒤에 제곱을 하는 이유는 음수/양수 상관없이 오차 크기만을 볼 수 있고,
    큰 오차에는 더 큰 패널티를 주는 효과를 준다.

  • 테스트 오차 (테스트 데이터셋)
    테스트 오차는 학습에 사용되지 않은 데이터셋을 이용해 오차를 계산한다.
    훈련 오차와 바뀐 것은 데이터셋집합 뿐이다.
    $E_{test} = \frac{1}{|X_{ test }|}\sum_{x_i \in X_{ test }} \left[y_i - f(x_i; \theta)\right]^2$
    테스트 데이터 집합도 결국 전체 데이터 집합의 일부분에 불과하므로 이 또한 정확한 성능 평가의 값이라고는 할 수 없다.

  • 일반화 오차
    앞으로 주어질 새로운 데이터셋을 사용하여 가장 정확한 성능을 평가할 수 있게 한다.
    하지만 사실상 미래의 데이터셋을 정확히 알 수 없기에, 계산이 불가능한 방법이다.
    따라서 일반화 성능의 근사치인 테스트 오차를 사용하게 된다.

 

머신러닝에서의 주제

머신러닝이 다루는 주제는 분류, 회귀, 군집화를 포함하는 데이터 분석과 특징 추출에 관련된 데이터 표현으로 구분 가능하다.

분류

입력 데이터가 어떤 클래스에 속하는지 자동으로 판단하는 문제다.

대표적으로 문자인식, 생체인식, 음성인식 같은 문제가 있다.

 

이런 분류의 큰 특징은 학습 데이터에 정답을 미리 포함하여 학습을 한다는 점이다.

그래서 학습 데이터는 (데이터, 정답) 처럼 $(x_i,y_i)_{i=1, ..., N}$꼴의 데이터 형태를 가지며,

출력 값은 M개의 클래스중 하나를 값으로 가진다.

 

학습을 통해 조정된 파라미터의 결과로 결정 함수가 완성된다.

해당 함수의 결과에서 클래스들이 구분되는 경계선이 생기게 마련인데,

이러한 경계를 결정 경계(Decision boundary)라고 부른다.

결정 경계의 예시

 

따라서 분류 문제는 최적의 결정경계를 찾아 분류율을 최대화하는 것에 목표를 두고 있다.

 

회귀

분류와 마찬가지로 학습을 통해 입력변수와 출력변수 사이의 매핑 관계를 분석하고 예측하는 것이지만,

분류와 달리 회귀는 예측 값이 클래스 같은 이산적인 단위가 아니고, 연속된 실수로 값이 출력된다.

대표적으로 주가 예측, 환율 예측 같은 문제가 있다.

 

군집화

군집화는 분류와 비슷한 결이지만 분류처럼 명확한 클래스가 정해져있지 않다.

클래스 정보 없이 단순히 하나의 덩어리로 이루어진 데이터를 받아서, 임의의 여러 그룹(클러스터)으로 나누는 문제를 뜻한다.

입력 데이터의 유사성에 따라 같은 군집을 이루도록 하기 때문에 군집화라는 이름으로 불린다.

대표적으로 데이터 그룹화, 영상분할 같은 문제가 있다.

군집화 학습의 목표는 그룹 내의 데이터들은 분산을 최소화 시키고, 그룹끼리는 분산을 최대화시키는것에 있다.

 

학습 시스템 관련 개념

학습의 유형

  • 지도 학습
    학습 데이터를 (데이터, 정답)과 같은 한 세트로 목표 예측 값을 함께 제공하는 것, 분류와 회귀 문제에 적합하다.

  • 비지도 학습
    반대로 학습 데이터에 목표 예측 값을 제공하지 않는 것, 군집화 문제에 적합하다.
  • 강화 학습
    정답은 알려주지 않고 결과 값이 나오면, [좋다/나쁘다] [성공/실패] 와 같은 교사신호(피드백)을 보상 형태로 주는 방식이다.

  • 준지도 학습
    지도학습과 비지도학습을 적절하게 결합한 형태의 학습

  • 약지도 학습
    부정확한 클래스도 부여해서 사용하는 학습

 

과다적합

학습데이터에 대해서만 지나치게 적합한 형태로 학습하여 전체 데이터 집합이 가지는 특성을 제대로 학습하지 못한 것이다.

좀 쉽게 말하면 학습 데이터에 딱 맞는 형태로 결정경계가 형성되어, 오히려 전체 데이터 집합에서 보았을 때 오분류율이 높아지는 문제다.

위 사진을 보면, 결정경계를 복잡하게 학습한다고 해서 꼭 테스트데이터를 잘 분류하는 것은 아니라는 걸 알 수 있다.

 

과다적합이 발생하는 이유는 학습 데이터가 가질 수 있는 노이즈와 학습 데이터 개수의 부족에 있다.

노이즈는 무슨 관계인가 하면, 노이즈는 이상치라고도 하며 기존 데이터 분포에 비해 몇몇 튀는 데이터를 뜻한다.

그래서 학습데이터에 노이즈가 있다면 노이즈까지 맞춰 학습하여 오분류율이 높아지는 것이다.

 

과다적합은 학습 시스템의 복잡도를 적절히 조정하여 피한다.

학습 시스템의 복잡도는 결정 경계가 얼마나 복잡한지 의미한다.

  • 조기종료 방법
    과다학습이 일어나기 전에 학습을 멈추는 방법
  • 정규항을 가진 오차함수 사용 방법
    학습의 목표가 되는 오차함수에 복잡한 결정경계에 대한 페널티항을 추가하여 학습하는 방법
    그러니까 복잡도가 높은 오차함수일 수록 낮은 오차여도 많은 페널티를 부여하는식으로 오차를 계산하는 것이다.
  • 모델 선택 방법
    여러 종류의 복잡도를 가진 후보 모델들을 학습한 후 최적의 모델을 선택하는 방법

'AI > Machine Learning' 카테고리의 다른 글

베이즈 정리_1  (0) 2026.01.12
[00] 머신러닝 개요_1  (0) 2025.12.30

+ Recent posts