용어 정리 — sample, batch, epoch, step ★★★
용어가 네 개 나와요. 처음에는 헷갈리니까 문제집으로 비유해 볼게요.
문제집 한 권이 데이터 전체예요. 문제 하나(문제와 정답 쌍)가 sample, 한 번에 풀고 채점하는 묶음(예 20문제)이 batch, 채점할 때마다 공부 방법을 한 번 고치는 것이 step, 문제집을 처음부터 끝까지 한 바퀴 푸는 것이 epoch이에요.
| 용어 | 뜻 | 예시 |
|---|---|---|
| sample | 입력 하나(여러 특성으로 이뤄짐)와 정답 하나 | 이미지 1장과 그 라벨, 또는 x = [0, 1]과 y = 5 |
| Dataset | sample을 번호(인덱스)로 꺼낼 수 있는 데이터 모음 | dataset[0] |
| batch | 한 번에 처리하는 sample 묶음 | 이미지 64장 묶음이면 크기 (64, 1, 28, 28) |
| step | 배치 하나로 학습하고 업데이트하는 과정 한 번 | 학습 5단계 (zero_grad → forward → loss → backward → step) 1회 |
| epoch | 학습 데이터 전체를 한 번 순회하는 것 | 모든 배치를 한 번씩 학습 |
교수님은 이렇게 설명했어요. 데이터가 1000개이고 배치 크기가 20이면 20개씩 step을 거치니까 50번 하면 한 epoch이 돼요. 4주차 예제는 데이터 5개를 전부 한 번에 넣었기 때문에 한 epoch이 한 step이었어요. 앞으로는 배치로 나누니까 한 epoch에 여러 step이 있어요. 이렇게 데이터를 나눠 학습하는 방식을 미니 배치(mini-batch) 학습이라고 해요.
왜 나눠서 넣을까요? 데이터 천 개를 한 번에 넣으면 계산이 너무 많고 컴퓨터 메모리도 많이 필요해요. 그래서 20개, 30개씩 잘라서 넣어요.
용어 문제는 단위로 구분하세요. sample = 데이터 1개, batch = sample 묶음, step = 배치 1개로 1번 업데이트, epoch = 전체 데이터 1바퀴예요. "한 epoch의 step 수 = 배치 개수"예요. 예를 들어 sample 10개, batch_size 4이면 한 epoch에 step이 3번이에요.
잠깐 확인 — 데이터 1000개를 배치 크기 20으로 학습하면 한 epoch에 step은 몇 번일까요?
50번이에요. 1000 ÷ 20 = 50개의 배치를 하나씩 학습해요.
자료: 7주차 · Week05_Dataset_DataLoader_Train_Validation(part1) · 7주차 녹취(빅데이터07)