epoch, batch size, iteration의 개념



epoch, batch size, iteration에 대하여 제대로 된 개념 정리가 된 것 같지 않아서 찾아보던 도중, 좋은 포스팅 글을 발견하여 참고하고 포스팅 해보았습니다.

epoch

한 번의 epoch는 전체 데이터 셋에 대하여 한 번 학습을 완료한 상태를 말합니다. epoch 100 이라는 말은 전체 데이터를 100번 학습 했다는 말입니다.

batch size

batch라는 것은 한 번의 학습이라는 뜻입니다. batch size라는 것은 한 번에 학습할 때, 이용하는 데이터의 개수입니다. 가령 고양이와 강아지 인식 학습에서 batch size가 100이라면, 인공신경망에 한 번에 넣는 이미지의 개수가 100개라는 말입니다.

왜 우리는 batch size를 나눌까요?

한 번에 데이터를 학습하기 위해서는 큰 메모리가 필요합니다. 하지만, 메모리의 용량은 상대적으로 적고, 데이터 용량은 굉장히 큰 경우가 많습니다.

만약, batch size가 너무 크면 메모리 용량이 부족하여 학습이 중간에 망가질 수도 있습니다. 또, 메모리가 너무 커서 학습 중에 메모리 내용을 비휘발성 저장매체인 HDD나 SSD에 저장하여 자주 접근하게 되면, 학습 속도가 늦어질 수 있습니대.

iteration

iteration은 epoch의 전체 데이터 개수와 batch size에 의하여 결정됩니다. 한 번의 batch에서 100개를 학습하고, 전체 데이터가 5000개라면 전체 iteration은 5000/100 = 50입니다.

수식으로 정리하면 아래와 같습니다.

\[\text{total iteration} = \frac{ \text{1 epoch's data size} }{ \text{batch size } }\]

출처

  • https://m.blog.naver.com/PostView.nhn?blogId=qbxlvnf11&logNo=221449297033&categoryNo=52&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F