Epoch 과 Batch Size , Iterations 는 머냐?

2020. 4. 5. 16:15Data Science

 dEpoch과 Batch Size, Iterations 의 개별 의미와 차이점을 알아보쟈.

 

일단 어디서 들어봤을 것이다. 일단 이런 용어들은 Machine Learning 용어들인데

 

일단 Machine Learning에서 가장 기본이 되는 Gradient Descent 알고리즘을 간략히 요약 해보자.

 

 

Gradient Descent

Machine learning에서 쓰이는 반복 학습방법이다. 

Gradient 기울기 / Descent 는 내림차순? 정도의 의미로 이해한다면 우리는 단순히 기울기 하강법과 같은 촌스러운 한국판 번역 이름을 만들어 낼수 있음과 동시에 직관적인 이해를 할수있을 것이다. 

그리고 왜 반복학습이냐.. 머리나쁜 학생도 오랜 수련으로 스승을 뛰어넘을수 있듯이 반복적으로 정답에 근접하는 과정라는 의미로 받아들이면 되겠다. (혹은 Error 를 줄이는 과정)

이 알고리즘의 파라미터로 learning rate라는게 있다. 위의 좌측 그림과 같이 초기에는 step이 큼직큼직하게 이동되는데 이게 learning rate이 큰것이라고 이해하면 되겠다. 그리고 당연히 최저 위치로 올수록 step이 줄어드는데 그것은 learning rate이 점점 작아지는 것을 의미한다. 

 그리고 Cost Function 혹은 Loss Function이라는 단어로 혼동이 있는 경우가 있을 터인데...

 똑같은 의미라 생각하면 되겠다. 어찌 되었던 cost든 loss든 감소되는게 모두를 위해 좋은 일이다. 당연히 우리의 목적은

이것을 감소시키는 것이라 하겠다.

 


서론은 여기서 접어두고,

본론으로 들어가자.

우리는 Batch Size, Epoch, Iteration의 단어 차이와 의미만 궁금했을 뿐이다.

학습에는 크고 많은 Data들이 쓰이게 된다. 공부를 많이해야 성적이 좋지 않겠는가?

하지만 우리의 뇌용량이 한계가 있듯이 컴퓨터도 한번에 처리하지 못한다. 물리적인 한계라하겠다.

그래서 이러한 문제점을 해소하고자 Data를 작은 싸이즈로 잘게 쪼개고 하나하나씩 컴퓨터한테 전달해줄 필요가 있다.

그러면서 당연히 학습을 step별로 진행한다는 개념을 가지고 가자.

 

Epochs

1 Epoch은 모든 Dataset이 Neural network 전체에 대한 학습을 1번 수행한 것을 말한다. 

1 Epoch은 당연히 컴퓨터에서 한번에 처리하기가 버거울테고 우리는 피자조각을 나누듯 이것을 batch로 나눠서 컴퓨터한테 떠 먹여줘야 겠다. 

1 Epoch으로 학습이 왜 충분하지 못한가?

우리가 가지고 있는 Dataset은 제한적일수 밖에 없다. 

그리고 Gradient Decendent 는 반복 학습법으로 1 Epoch으로는 변형출제되는 앞으로의 시험을 학습 할수는 없다.

1번만에 책을 달달 암기하는 사람은 없지 않은가?

당연히 응용력도 떨어질 것이다.

Epoch을 1번만 하면 Underfitting이 주로 발생한다. 

Epoch을 여러번 할수록 최적화 에서 Overfitting으로 순차적으로 변화한다. 반복학습되서 달달 암기를 완료해도

너무 책 하나만 읽으면 응용력이 부족해지는 현상정도로 직관적으로 이해해두는 것도 나쁘지 않다.

그래서 제일 적당한 Epoch은 먼데?

불행하게도 상황마다 다르다. 반복학습법이란 표현을 했는데 제일 적당한거는 해보고 찾으면 된다.

경험적으로 초기값을 찾고 움직여도 보고 실행해봐야 답이 나오지 않겠는가?

Batch Size

Single Batch내 학습용 Data Size

Note: Batch size는 Batch의 갯수가 아니다 명심하자.

Batch 가 먼데?

앞서서 말했다 한번에 컴퓨터한테 때려박을수 엇어서 나누는 것이라고.. 그 단위를 Batch라고 생각하면 된다.

Iterations

1 Epoch을 달성하기 위한 Batch 수를 의미한다. 

Note: 당연히 1 Epoch에 대한 Iteration의 수와 Batch 갯수는 같다. 

2,000개의 학습 Data가 있다고 가정하자.

우리는 이 2,000개의 Data를 500개의 Batch Size로 나눌수 있다. 그러면 1 Epoch을 수행하기 위한 Iteration은 4가 된다.