한양과학기술고등학교

에듀테크 프로젝트 대시보드

배치·에포크·학습률 스케줄

배치 · 에포크 · 학습률 스케줄

모델이 데이터를 얼마씩 나눠 보는지, 몇 바퀴를 도는지, 한 걸음을 얼마나 크게 내딛는지  |  학습 과정 자체를 결정하는 세 손잡이
경사 하강법은 "기울기 방향으로 조금씩 이동"하는 원리였다. 그런데 실제로 학습을 돌리려면 데이터를 얼마씩 묶어서 기울기를 계산할지(배치), 전체 데이터를 몇 바퀴 돌지(에포크), 한 걸음을 얼마나 크게 내딛을지(학습률)를 정해야 한다. 이 세 가지가 학습이 제대로 수렴할지, 흔들릴지, 아예 발산할지를 가른다.

1. 배치(Batch) — 기울기를 몇 개 데이터로 계산할까

배치 경사하강법(Batch GD)미니배치(Mini-batch)확률적 경사하강법(SGD)
배치 크기전체 N개보통 16~256개1개
기울기정확함(잡음 없음)적당히 잡음 있음매우 잡음 많음
속도(1스텝)느림(전체 계산)빠름가장 빠름
경로매끄러운 직선에 가까움약간 지그재그많이 지그재그

데이터 전체로 기울기를 구하면 정확하지만 매 스텝마다 모든 데이터를 훑어야 해서 느리다. 반대로 1개씩만 보면(SGD) 스텝은 빛의 속도지만 기울기가 들쭉날쭉해 경로가 지그재그를 그린다. 그래서 실무에서는 그 중간인 미니배치를 가장 많이 쓴다 — 적당히 빠르면서 적당히 안정적이다. 재미있게도 이 잡음이 완전히 나쁜 것만은 아니다 — 손실 표면의 작은 웅덩이(지역 최솟값)를 잡음 덕분에 빠져나가기도 한다.

2. 에포크(Epoch)와 이터레이션(Iteration)

이터레이션 = 미니배치 1개로 파라미터를 1번 업데이트하는 것. 에포크 = 전체 데이터를 한 바퀴(모든 미니배치를 한 번씩) 다 도는 것.

1 에포크의 이터레이션 수 = ⌈ N(전체 데이터 개수) / batch_size ⌉

예를 들어 데이터 1,000개, 배치 크기 100이면 1 에포크는 10 이터레이션이다. 보통 모델은 수십~수백 에포크를 돌며, 매 에포크가 끝날 때마다 검증 데이터로 성능을 체크해서 과적합 여부를 감시한다.

3. 학습률(Learning Rate) — 한 걸음의 크기

파라미터 업데이트는 w ← w − η · 기울기 로 이루어진다. η(에타, learning rate)가 너무 작으면 한 걸음이 너무 짧아 수렴까지 한참 걸리고, 너무 크면 골짜기 반대편으로 넘어가 버려서(overshoot) 진동하거나 아예 발산한다. 아래 데모에서 직접 확인해 보자.

배치 크기 20
학습률 η 0.30
점 = 데이터(굵은 점 = 이번 스텝의 미니배치) · 선 = 현재 예측 직선
전체 데이터 기준 손실(MSE) 변화 — 수렴·진동·발산을 눈으로 확인
에포크
0
이터레이션
0
현재 η
0.30
전체 MSE
–
η ≈ 0.3 부근은 매끈하게 수렴한다. η 를 1.0 이상으로 올리면 손실이 줄어들다가 갑자기 튀어 오르며 발산하는 걸 볼 수 있다 — 이 손실함수(선형회귀 MSE)는 η가 대략 1을 넘으면 발산하도록 곡률이 잡혀 있다. 배치 크기를 1~2로 낮추면 같은 η에서도 경로가 훨씬 들쭉날쭉해진다.

4. 학습률 스케줄 — 처음엔 크게, 나중엔 작게

학습 초반엔 목표에서 멀리 있으니 큰 걸음으로 빨리 다가가고, 후반엔 작은 걸음으로 미세 조정하는 게 이상적이다. 그래서 실무에서는 η를 학습 도중 점점 줄이는 스케줄을 함께 쓴다.

위 데모에서 학습률 점점 줄이기를 켜고 η를 1.0 근처(원래는 발산하는 값)로 올린 뒤 학습을 시작해 보라 — 초반에 크게 움직이다가도 η가 빠르게 작아지면서 발산하지 않고 진정되는 걸 볼 수 있다.

핵심 정리 — 배치 크기는 "기울기를 얼마나 정확하게, 얼마나 자주 계산할지"를, 에포크는 "데이터를 몇 바퀴 돌지"를, 학습률은 "한 걸음의 크기"를 정한다. 학습률이 너무 크면 발산, 너무 작으면 느림 — 그래서 처음엔 크게 시작해 점점 줄이는 학습률 스케줄을 함께 쓴다. 관련: 경사 하강법, 선형 회귀, 교차검증.