티스토리 뷰
[DL 딥러닝] 비용함수(Cost function), 손실함수(Loss function), 목적함수(Objective function)
Life4AI 2024. 7. 3. 17:58모델링(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 function로 loss 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 fuction로 loss function를 사용한다.
- mini-batch 또는 full-batch로 학습할 때는 objective fuction로 cost fuction를 사용한다. (해당 배치의 결과를 하나로 압축해야하므로)
References
[1] 비용함수(Cost Function), 손실함수(Loss function), 목적함수(Objective Function) | Ai-tech
[2] cost function과 loss function 차이
[3] 비용함수(loss function/cost function)와 경사하강법(gradient descent)이란
'AI' 카테고리의 다른 글
[ML 머신러닝] 의사결정트리(Decision Tree) 알고리즘 개념 및 코드 (1) | 2024.09.23 |
---|---|
[ML 머신러닝] K-NN(K-Nearest Neighbor) 알고리즘 개념 및 코드 (0) | 2024.07.02 |
- Total
- Today
- Yesterday
- 백준
- policy function
- Andrew Ng
- action value function
- computation graph
- state value function
- baekjoon
- 경사하강법
- 파이썬
- **kwargs
- 앤드류응
- omp: error #15
- numpy 배열 속성
- 강화학습
- *args
- adrew ng 머신러닝 강의
- numpy 배열 생성
- 로지스틱 회귀
- 딥러닝
- sorted
- 손실함수
- Sort
- **
- 숏코딩
- NumPy
- python
- 강의노트 정리
- *
- 비용함수
- 11870
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |