시험공부빅데이터분석
← 보드딥러닝이 뭐예요 + 학습 과정 큰 그림 · 8/11

반복 — batch, iteration, epoch ★★★

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

batch를 바꿔 가며 반복
교수님 슬라이드 — 다른 batch로 Forward ~ Update 반복. weight 한 번 업데이트 = 1 iteration, 전체 데이터 한 바퀴 = 1 epoch
용어뜻예
sample입력 하나와 정답 하나의 짝학생 한 명의 (feature, 기말 점수)
batch한 번에 처리하는 sample 묶음학생 20명씩
iterationbatch 하나로 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개짜리도 한 번으로 세요.

다음 카드 → 코드로 한 번 보기 — 학습 5줄 ★★★

자료: 4주차 · 딥러닝 모델 Training 과정.pdf, Week04 Autograd_Loss_Optimizer.ipynb · 빅데이터04(4주차) 녹취, 빅데이터03·07 녹취 일부