반복 — batch, iteration, epoch ★★★
한 번만 고쳐서는 부족해요. 학생이 한 명뿐이면 학습이 안 되고, 수천 명의 데이터로 계속 반복해야 해요. 그런데 데이터를 전부 한 번에 넣으면 계산이 너무 많아서, 보통은 조금씩 잘라서(batch) 넣어요.

| 용어 | 뜻 | 예 |
|---|---|---|
| sample | 입력 하나와 정답 하나의 짝 | 학생 한 명의 (feature, 기말 점수) |
| batch | 한 번에 처리하는 sample 묶음 | 학생 20명씩 |
| iteration | batch 하나로 weight를 한 번 업데이트하는 것 (step이라고도 해요) | 20명으로 한 번 고침 |
| epoch | 학습 데이터 전체를 한 바퀴 다 쓰는 것 | 학생 전원을 한 번씩 사용 |
계산 연습을 해 볼게요. 학생이 1만 명이고 batch가 20명이면 한 epoch에 10000 ÷ 20 = 500번(iteration) 업데이트해요(교수님 예시). 데이터가 10개이고 batch가 4이면 4개, 4개, 2개로 나뉘어서 한 epoch에 3번이에요. 마지막 묶음은 남는 만큼만 들어가요. 이 "10개, batch 4" 예는 이 과목 시험 샘플 4번에도 그대로 나와요.
보통은 여러 epoch를 반복하고, epoch마다 데이터를 랜덤한 순서로 꺼내요. 이 일을 해 주는 도구가 나중에 배울 DataLoader예요. 데이터를 전부 한 번에 넣으면 1 epoch에 step이 1번이고, batch로 나누면(mini-batch) 1 epoch에 step이 여러 번이에요.
epoch은 학습 데이터 전체를 한 번 사용하는 것이고, weight를 한 번 업데이트하는 것이 1 iteration이다. 한 epoch의 iteration 수는 올림(데이터 수 ÷ batch 크기)이다(마지막 batch가 작아도 한 번으로 센다). 계산할 때는 "나머지가 남으면 한 번 더"로 기억하세요. 단, DataLoader에서 drop_last=True로 하면 모자란 마지막 묶음을 버려서 내림이 돼요.
잠깐 확인 — 데이터 100개, batch 30이면 한 epoch에 iteration은 몇 번인가요?
4번이에요. 30, 30, 30, 10개로 나뉘어서 마지막 10개짜리도 한 번으로 세요.
자료: 4주차 · 딥러닝 모델 Training 과정.pdf, Week04 Autograd_Loss_Optimizer.ipynb · 빅데이터04(4주차) 녹취, 빅데이터03·07 녹취 일부