이것저것 공부 기록하기

[MachineLearning] Loss Function vs Cost Function vs Objective Function 본문

MachineLearning

[MachineLearning] Loss Function vs Cost Function vs Objective Function

얍욥얍 2021. 3. 30. 21:22

 

 

실제로 이 세가지 함수에 대해 큰 차이를 두지 않지만, 미묘한 차이가 존재합니다.

 

1. Loss Function

Loss Function은 single data set을 다룹니다.

 

2. Cost Function

Loss Function의 합, 평균 에러를 다룹니다. 즉, single data set이 아니라 entire data set을 다룹니다. 그냥 순간순간의 loss를 판단할 땐 loss function을 사용하고 학습이 완료된 후에는 cost function을 확인하면 될 것 같습니다.

 

3. Objective function

모델(함수)에 대하여 우리가 가장 일반적으로 사용하는 용어로서 최댓값, 최솟값을 구하는 함수를 말합니다. 애초에 cost function과 loss function 모두 비용이 최소화 되는 것을 찾는다고 생각하면 됩니다.

 

결국 loss function은 cost function의 일부이고, cost function는 objective function의 일부라고 보면 되겠습니다.


Epoch, Batch Size, Iteration

알고리즘이 iterative 하다는 것 : gradient descent와 같이 결과를 내기 위해서 여러번 최적화 과정을 거쳐야 되는 알고리즘을 뜻합니다.

다룰 데이터가 너무 많고 한 번의 계산으로 최적화된 값을 찾는 것은 힘듭니다. 따라서, 머신 러닝에서 최적화(optimization)를 할 때는 일반적으로 여러 번 학습 과정을 거칩니다. 또한, 한 번의 학습 과정 역시 사용하는  데이터를 나누는 방식으로 세분화 시킵니다.

 

이 때, epoch, batch size, iteration라는 개념이 필요합니다.

 

1. Epoch

한 번의 epoch는 인공 신경망에서 전체 데이터 셋에 대해 forward pass / backward pass 과정을 거친 것을 말합니다. 즉, 전체 데이터 셋에 대해 한 번 학습을 완료한 상태입니다.

참고로, 신경망에서 사용되는 역전파 알고리즘은 파라미터를 사용하여 입력부터 출력까지의 각 계층의 weight를 계산하는 과정을 거치는 순방향 패스(forward pass), forward pass를 반대로 거슬러 올라가며 다시 한 번 계산 과정을 거쳐 기존의 weight를 수정하는 역방향 패스(backward pass)로 나뉩니다. 이 전체 데이터 셋에 대해 해당 과정(forward pass + backward pass)이 완료되면 한 번의 epoch가 진행됐다고 볼 수 있습니다.

역전파 알고리즘이 무엇인지 모른다고 해도 epoch를 전체 데이터 셋에 대해 한 번의 학습 과정이 완료됐다고 이해해도 될 것 같습니다.

즉 epochs = 40이면 전체 데이터를 40번 사용해서 학습을 거친 것입니다.

참고로 epoch 값이 적절한게 중요합니다. 너무 작으면 underfitting, 너무 크면 overfitting이 발생할 확률이 높습니다.

 

2. Batch Size, Iteration

Batch Size는 한 번의 Batch마다 주는 데이터 샘플의 size를 뜻합니다. 여기서 Batch(보통은 mini-batch라고 표현합니다.)는 나눠진 데이터 셋을 뜻하며 iteration는 epoch를 나누어서 실행하는 횟수라고 생각하면 됩니다.

메모리의 한계와 속도 저하 때문에 대부분의 경우에는 한 번의 epoch에서 모든 데이터를 한꺼번에 집어넣을 수 없습니다. 그래서 데이터를 나누어서 주게 되는데 이 때 몇 번 나눠서 주는가를 iteration, 각 iteration마다 주는 데이터 사이즈를 batch size라고 합니다.

정리를 해봅시다. 전체 2000 개의 데이터가 있고, epochs = 20, batch_size = 500이라고 가정합시다.

그렇다면 1 epoch는 각 데이터의 size가 500인 batch가 들어가 네 번의 iteration으로 나누어집니다. 그리고 전체 데이터 셋에 대해서 20번의 학습이 이루어졌으며, iteration 기준으로 본다면 총 80번의 학습이 이루어진 것입니다.


 

Reference

ggodong.tistory.com/

https://www.slideshare.net/w0ong/ss-82372826

반응형
Comments