딥 러닝 도구인 Caffe를 사용하면서 batch_size, max_iter, test_iter, epoch 등의 용어를 이해하는 것이 힘들었어서 이렇게 기록으로 남깁니다. 설명을 쉽게 하기 위해 사진을 Caffe로 처리하는 경우를 가정해 보도록 하겠습니다.
1. batch_size
배치(batch)는 한 번에 처리하는 사진의 장 수를 말합니다. Caffe에서 기본으로 제공되는 cifar10 예제의 cifar10_full_train_test.prototxt 파일을 열어보면 batch_size: 100 이라는 부분이 있습니다. 한 번에 100장의 사진을 처리한다는 의미입니다.
2. max_iter
반복(이터레이션, iteration)은 몇 개의 배치(batch)를 사용할 것인지를 의미합니다. max_iter는 기계 학습(머신 러닝)의 학습(training) 과정에서 반복을 몇 번 할 것인지를 정해줍니다. cifar10 예제의 cifar10_full_solver.prototxt 파일에 max_iter: 60000 이라고 되어 있는데, batch_size:100 이기 때문에 학습을 한 번에 사진 100장씩 60,000번 하겠다는 말이 됩니다. 총 사진 6,000,000장으로 학습이 이루어질 것입니다. 이 과정에서 사진이 중복될 수 있는데, 그에 대해서는 아래의 세대(이폭, epoch) 에서 설명하겠습니다.
3. test_iter
학습을 했으면 실전에 사용해 보아야 합니다. 예제에서 역시 batch_size:100 으로 되어 있습니다. test_iter:100 으로 설정되어 있는데, 그 말은 한 번에 사진 100장 씩 100번, 총 10,000장의 사진으로 학습 결과를 검사해 보겠다는 뜻입니다.
4. epoch
학습용 사진 전체를 딱 한 번 사용했을 때 한 세대(이폭, epoch)이 지나갔다고 말합니다. cifar10의 경우 사진 60,000장 중 50,000장이 학습용, 10,000장이 검사용으로 지정되어 있습니다. 그런데 max_iter에서 학습에 사진 6,000,000장을 사용하기로 했기 때문에 50,000장의 학습용 사진이 여러번 재사용되게 됩니다. 정확히 계산해보면 6,000,000 / 50,000 = 120 이니 한 사진이 120번 씩 재사용될 것입니다. 이 경우 120 세대(epoch)라고 말합니다. 검사용의 경우 사진 10,000장을 사용하기로 했는데 실제로도 사진이 10,000장 있으니 딱 한 세대만 있는 것입니다.
( 도움을 얻은 곳: https://groups.google.com/forum/#!topic/caffe-users/mUIi42aKWHQ )