본문 바로가기

Machine Learning

Epoch, Batch, Iteration 용어 정리

0. Mini Batch Gradient Descent

Batch Gradient Descent와 Stochastic Gradient Descent의 합의 알고리즘인 Mini-Batch Gradient Descent는 속도 및 일반화 측면에서  다른 최적화 기법에 비해 상대적으로 좋은 성적을 내므로 Neural Network와 같은 모델에서 자주 채택됩니다. Mini Batch Gradient Descent의 기본적인 아이디어는 전체 데이터 셋을 여러개의 Mini Batch로 쪼개어 각각의 묶음에 대해 Weight Update 값을 계산하여 Local Minima에 갇히는 상황을 회피하고 SGD와 같이 빠른 속도로 최적점에 다가가는 것을 목표로하는 알고리즘을 사용하는 것입니다.

iteration에 따른 세 알고리즘의 cost average의 감소폭

이후 해당 기법을 이용한 optimizer를 정의하고 훈련을 할 때 Epoch, Batch Size 그리고 Iteration 값을 조정해주게 됩니다. 이 포스트에서는 헷갈리기 쉬운 해당 용어의 의미를 알아보고 이가 실제로 어떻게 사용되는지를 알아봅니다.


1. Epoch

Epoch의 사전적 정의는 '한 시대'로 기록되어있습니다. 기계학습에서 한 Epoch란 훈련 데이터셋에 포함되어 있는 모든 데이터값들이 각각 한번씩 예측 모델에 들어온 뒤 weight 값을 갱신하는 주기를 의미합니다. 예를 들어 사람의 손글씨를 판별하는 예측 모델을 훈련하기 위해 100장의 이미지와 그에 해당하는 라벨(Label)을 가지고 있다고 가정했을때 첫번째부터 100번째까지 모든 이미지-데이터 쌍을 한번씩 모델에 넣어 훈련을 시켰다면 1 Epoch 만큼의 훈련을 진행했다고 설명할 수 있습니다.

기계학습 모델을 훈련시키기 위하여 여러번의 Epoch를 사용하는 이유는 이후 새로운 데이터에 대한 일반화 능력을 향상시키고 각 Epoch에서 Local Minima에 갇히는 상황을 보완하는데 도움을 주기 때문입니다. 몇 번의 Epoch를 사용하는것이 가장 효율적인지는 데이터 셋에 따라 다르기 대문에 직관적으로 결정하기 어렵습니다. 따라서 여러번의 실험을 거쳐 Tuning 해주어야 하는 Hyper Parameter의 일종이라고 설명할 수 있습니다.


2. Batch Size & Iteration

Batch Size는 말 그대로 하나의 Mini-Batch를 몇개의 데이터로 구성할지에 대한 정보입니다. 100개의 이미지-라벨이 있는 상황에서 Batch Size를 5로 정했다면 우리의 모델은 한번에 하나의 데이터를 볼때마다 매번 가중치 값을 갱신하지 않고 5개 데이터에 대한 값을 한번에 계산한 뒤 가중치를 갱신해주게 되므로 총 20번의 갱신 과정만을 거치게 됩니다. 이 특성으로 인해 Mini-Batch Gradient Descent는 Naive한 Batch Gradient Descent보다 더 적은 컴퓨터 자원을 소모하게 됩니다.

Training Dataset을 여러개의 Mini batch로 분할

Iteration은 한 Epoch를 진행하기 위해 몇 번의 가중치 갱신이 이루어지는지에 대한 정보입니다. 위의 예시에서는 가중치를 갱신하는 과정이 총 20번 이루어지므로 20이 Iteration의 값이라고 말할 수 있습니다. Batch Size가 커질수록 당연히 Iteration의 값은 줄어들고 Batch Size가 작아질수록 Iteration의 값은 늘어납니다. Batch Size 또한 프로그래머가 직접 조정해주어야 하는 Hyper Parameter의 일종으로 볼 수 있으므로 실험을 통해 최적값을 찾는 과정이 필요합니다.