티스토리 뷰

모델링(modeling)

 

 

 

머신러닝과 딥러닝의 기본적인 컨셉은 대용량의 데이터를 가지고 모델을 만들고, 이 모델을 통해 새로운 데이터를 예측하는 것이다. 과거의 데이터에서 패턴을 파악하여 이를 이용해 미래를 예측하고자 한다. 이러한 데이터 내 존재하는 관계, 패턴, 규칙 등을 탐색하여 하나의 모형으로 만드는 과정을 '모델링(modeling)'이라고 한다. 모델링은 데이터를 잘 설명하는 하나의 수식(\(y=f(x)\))을 생성해내는 것이라고도 할 수 있다.

 

 

 

손실 함수, 비용 함수, 목적 함수의 차이

 

그렇다면 내가 만든 모델이 잘 예측하고 있는 지 어떻게 알 수 있을 까?

 

모델이 잘 예측하고 있는 지 평가하기 위해 실제 데이터 값과 모델이 예측한 값 간의 차이를 측정하면 된다. 이를 '에러(Error) 또는 오차'라고 한다. 이 에러 혹은 오차의 정도를 나타내는 것이 비용 함수 또는 손실 함수이다. 

 

머신러닝에서 최적화는 비용 함수의 값이 가장 작아지는 최적의 파라미터를 찾는 과정을 말한다. 모델을 학습할 때는 비용(에러/오차)을 최소화하는 방향으로 진행이 된다. 비용이 최소화되는 지점이 성능이 가장 잘 나오는 부분이며, 가능한 비용이 적은 부분을 찾는 것이 최적화의 목표이다. 

 

이때, 가장 혼라스러워하는 용어가 바로 cost function과 loss function인 듯하다.여기에 objective function도 포함될 수 있다.

 

물론, 다 동일한 의미로 사용되지만, 디테일한 차이는 확실하게 짚고 넘어가야한다.

 


 

 

일단, 손실 함수(Loss function)와 비용함수 (Cost Function)는 혼용해서 사용 가능하다.사소한 차이가 있다면,

 

        • 손실함수(Loss function) : 샘플 하나에 대한 손실을 의미하며, 개별적인 차이를 정의한다
        • 비용함수(Cost Function) : 훈련 세트에 있는 모든 샘플에 대한 손실함수의 합을 의미한다

 

 

따라서, 오류를 최소화한다고 했을 때, loss function을 최소화한다는 말이 더 적합하다.

 

 


 

손실 함수 (Loss function)

 

예측 값과 실제 값의 차이를 나타내는 data point를 가리킨다.

loss function는 실제 label 값(\(y\))에 비해 가정한 모델 \(h_\theta\) 의  \( \hat{y}\) \((= h _ \theta (x))\) (추정값)이 얼마나 잘 예측했는지 판단하는 함수이다.

 

대표적인 loss function의 종류는 다음과 같다.

  • 제곱 오차 (Squared Error, SE) : \( (y - \hat{y})^2      \)
  • 절대 오차 (Absolute Error, AE) : \( \vert y - \hat{y} \vert \)
  • log loss : \( y \cdot log( \hat{y}) + (1-y) \cdot log(1- \hat{y}) \) 

해당 값들은 주로 data point 값의 수준에서 논하는 값이다. 역전파 알고리즘을 구현할 때, loss function의 수준에서 연쇄법을 적용하면 조금 더 이해하기 쉽게 구현할 수 있다. 그리고, logloss는 cost function 형태로 더 많이 사용된다.

 

 

비용 함수 (Cost function)

모델을 학습할 때 사용하는 데이터(관측치)는 하나가 아닌 여러 개로 구성되어 있다. 이러한 관측치들에 대한 손실 함수의 평균을 비용함수(Cost function)로 정의한다. 

 

대표적인 cost function의 종류는 다음과 같다.

  • 평균 제곱 오차 (Mean Squared Error, MSE) : \(  1/N \Sigma _{i=1} ^{N} (y - \hat{y} )^2 \)
  • 평균 절대 오차 (Mean Absolute Error, MAE) : \( 1/N \Sigma _{i=1} ^{N} \vert y - \hat{y} \vert \)  
  • Binary Cross-entropy (a.k.a logloss) : \( -1/N \cdot \Sigma_{i=1} ^{N} (y \cdot log( \hat{y}) + (1-y) \cdot log(1- \hat{y})) \) 
  • Multinomial-logloss : \( -1/N \cdot \Sigma_{i=1} ^{N} \Sigma_{k=1} ^{K} (y_{i,k} \cdot log( \hat{y_i,k})) \) , K개 범주

 

+ 참고

한 번의 학습 과정(1epoch)에서는 일정한 데이터 크기(batch size)를 한 번에 처리한다. 한번에 하나의 관측치를 사용하는 것이 아니기 때문에, 비용 함수가 필요하다. 그럼 cost functionloss function의 평균을 사용하거나 sum을 해주는 값을 사용하는 이유는?

  • 알고리즘의 벡터화(vectorization) 결과물이라고 할 수 있다. 벡터화를 통해 병렬 연산을 수행할 수 있어 계산 속도가 향상되며, 하드웨어적, 이론적으로 어려움을 피할 수 있다. ( 하나의 관측치로 학습을 반복은 최악!)
  • 따라서 전체 데이터 (Full-batch) 또는 부분 데이터 (mini-batch)를 한번의 학습 (1 epoch)에 사용한다.
  • 이때, 모델의 가중치들이 어떤 결과를 나타내는 지 하나의 충분 통계량이 필요하다. 그래서 평균을 사용해서 하나의 값으로 변형하는 것이다. 

 

목적 함수 (Objective function)

최적화를 위한 방향은 최소화 또는 최대화하는 방향도 있다. 즉, cost fuction 는 최적화 알고리즘의 objective fuction이다. 따라서 cost fuction과 loss function으로 볼 수 있다.

 


마치며 

  • Objective Function >= Cost Function >= Loss function 
  • 하나의 관측치 단위로 모델이 학습할 때는 objective fuctionloss function를 사용한다.
  • mini-batch 또는 full-batch로 학습할 때는 objective fuctioncost fuction를 사용한다. (해당 배치의 결과를 하나로 압축해야하므로)

 

 

 

 

References

[1] 비용함수(Cost Function), 손실함수(Loss function), 목적함수(Objective Function) | Ai-tech

[2] cost function과 loss function 차이

[3] 비용함수(loss function/cost function)와 경사하강법(gradient descent)이란

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함