ML을 공부하면서 계속 등장하는 cost, loss 용어...모두의 딥러닝 강의에서도 이를 반복적으로 사용하는데 정확한 차이가 궁금해서 정리로 남긴다.
우리는 모델을 학습할 때 비용(cost) 즉, 오류를 최소화하는 방향으로 진행을 한다.
비용이 최소화되는 곳이 성능이 가장 잘 나오는 부분이며, 가능한 비용이 적은 부분을 찾는 것이 최적화(Optimization)이고 일반화(Generalization)의 방법이다.
이 비용(cost) 혹은 손실(loss)이 얼마나 있는지 나타내는 것이 비용함수(cost function), 손실함수(loss function)이라고 할 수 있다
비용/손실을 표시하는 함수로는 다음 세가지 loss function, cost function, objective function이 있다
실제로 이 세 가지 함수에 대해 차이를 두고 있지는 않지만 미묘한 차이가 존재하는거 같다.
Loss Function(손실 함수)
위의 정의에서 data point라는 말이 나온다. 이를 통해서 single data set을 다룬다는 생각이 들었다.
예로 linear regression의 경우 Loss function으로 최소제곱오차를 사용한다.
input(x)에 대한 예측값(y^)과 실제 label값(y) 사이의 오차를 계산하는 함수이다.
즉, 하나의 input data에 대해서 오차를 계산하는 함수를 Loss function이라고 한다.
Cost Function(비용 함수)
sum of loss function이라는 말과 Σ 기호가 보이는 것으로 봐선 loss function의 합을 다루는 듯하다.
single data set이 아니라 entire data set을 다루는 것이다.
즉, 모든 input dataset에 대해서 오차를 계산하는 함수를 Cost function이라고 한다.
따라서 Cost function은 모든 input dataset에 대해 계산한 Loss function의 평균 값으로 구할 수 있다.
다음은 Logistic Regression에서 사용하는 Loss function이다.
그리고 다음의 수식이 위 Loss function에 상응하는 Cost function이다. 모든 data에 대한 Loss를 평균내어 Cost를 계산한다.
Objective Function(목적 함수)
학습을 통해 최적화시키려는 함수이다. 딥러닝에서는 일반적으로 학습을 통해 Cost를 최소화시키는 optimize 작업을 수행 하고 이때 Cost function을 Objective function이라 볼 수 있다.
하지만 Objective function에 꼭 Cost function만 있는 것은 아니다. 예로 MLE와 같이 학습을 통해 확률을 최대화하려는 function 역시 Objective function으로 정의되지만 이는 Cost, Loss function은 아니다.
<요약>
한 줄로 요약하자면 Objective Function >= Cost Function >= Loss function 이라고 일단은 이렇게 생각하고 있으면 될것 같다.