경사하강법은 손실의 기울기를 계산하고 학습률을 곱해 매개변수를 갱신하는 반복 제어 루프입니다. 학습률·배치·스케줄·수치 안정성·검증 성능은 서로 다른 축이므로, 한 축의 개선을 다른 축의 정답으로 해석하지 않도록 동일한 예산과 관측 기준을 먼저 고정합니다.
기울기와 학습률에 따른 갱신 보폭의 구분
손실 L(w)=(w-3)^2를 최소화한다고 합시다. 현재 w에서 기울기는 2(w-3)이고, 경사하강법은 w ← w - η·2(w-3)으로 움직입니다. 기울기는 현재 위치에서 손실이 변하는 방향·크기이고 η는 그 방향으로 얼마나 이동할지 정하는 학습률입니다.
기울기가 크다고 언제나 크게 움직이는 것이 좋은 것은 아닙니다. 손실 지형의 곡률과 학습률에 따라 최소점을 지나 반대편으로 더 멀리 갈 수 있습니다.
이차식 예제에서 먼저 w, gradient, update, loss를 한 줄씩 출력하면 방향 부호와 보폭을 혼동하는 오류를 분리할 수 있습니다. 같은 gradient라도 곡률이 다른 손실에서는 같은 η가 다른 안정성을 가지므로, 학습률을 절대적인 “빠르기” 값으로 해석하지 않습니다.
동일 시작점의 학습률별 보폭 비교
w=0에서 시작합니다. 최소점과의 오차 e=w-3은 매번 (1-2η)e가 됩니다.
| η | w의 변화 | 오차 배율 | 결과 |
|---|---|---|---|
| 0.1 | 0 → 0.6 → 1.08 | 0.8 | 천천히 3에 접근 |
| 0.5 | 0 → 3 → 3 | 0 | 이 이차식에서는 한 번에 도착 |
| 1.0 | 0 → 6 → 0 | -1 | 같은 크기로 진동 |
| 1.1 | 0 → 6.6 → -1.32 | -1.2 | 오차 크기 증가 |
이 식에서 수렴 범위는 0<η<1입니다. 이 숫자를 신경망의 권장 학습률로 사용하면 안 됩니다. 손실의 스케일·곡률·optimizer가 바뀌면 같은 η의 의미도 달라집니다.
그림을 글로 읽기
- 예측과 손실 계산
- 기울기 계산: 층별 크기 · 유한값 검사
- optimizer 갱신: 학습률 · 상태 · clipping
- 곡선과 비용 기록: 훈련·검증 · 샘플·시간
- 예측과 손실 계산 → 기울기 계산: 미분
- 기울기 계산 → optimizer 갱신: 방향·크기
- optimizer 갱신 → 곡선과 비용 기록: 다음 상태
발산 원인과 학습률 단일 원인 가설의 구분
특징 한 축이 0~1이고 다른 축이 수백만이면 손실 지형의 방향별 스케일이 크게 달라지고, 한 번의 갱신에서 방향별로 움직이는 크기도 달라질 수 있습니다. 이때 표준화 통계는 훈련 데이터에서만 fit하고 검증·테스트에는 같은 변환을 적용해 보되, 표준화는 잘못된 라벨이나 미래 정보 누출을 고치는 방법이 아닙니다. 타깃 단위를 바꿨다면 예측값을 원래 단위로 되돌리는 처리까지 포함해 결과를 확인해야 합니다.
loss가 NaN이 된 배치부터 입력과 타깃이 유한한지 확인하고, 로그·나눗셈의 정의역을 벗어난 값과 mixed precision(일부 연산을 낮은 정밀도로 수행하는 설정)의 overflow, 잘못 구성된 배치가 있는지 순서대로 좁힙니다. 그다음 전체 gradient norm만 기록하지 말고 층별 gradient와 parameter norm, optimizer step 전후의 실제 업데이트 크기를 함께 비교합니다.
전체 norm이 정상이어도 특정 층의 gradient 소실·폭발은 가려질 수 있으므로 이 값을 나눠 봐야 원인을 더 좁힐 수 있습니다.
for batch in training_batches:
optimizer.zero_grad()
loss = objective(model(batch.inputs), batch.labels)
require finite(loss)
loss.backward()
inspect_gradients()
optionally_clip_gradients_under_fixed_policy()
optimizer.step()
코드에서 optimizer.zero_grad()를 빼면 이전 미니배치의 gradient가 다음 미니배치에 남아 의도하지 않은 누적이 생길 수 있습니다. 반대로 의도적으로 gradient accumulation을 사용할 때는 미니배치별 gradient를 평균할지 합할지와 실제 optimizer.step() 주기를 같은 정책으로 맞춰야 합니다. clipping은 큰 갱신의 크기를 제한할 뿐, 발산 원인이 사라졌다는 증거는 아닙니다.
진단 순서는 입력·타깃 유한성 → loss 내부 정의역 → gradient 유한성 → optimizer state → 실제 parameter delta 순서가 좋습니다. 예를 들어 loss가 NaN이 된 첫 batch의 parameter는 유한하지만 gradient만 overflow라면 learning rate를 낮추는 것과 함께 precision·loss scaling·입력 범위를 확인해야 합니다. clipping 뒤 loss가 안정돼도 데이터 누출·잘못된 라벨·목적 불일치가 해결됐다는 뜻은 아닙니다.
배치 크기와 epoch당 step 수
훈련 샘플이 10,240개라면 batch 32는 epoch당 320번, batch 128은 80번 갱신합니다. 동일 epoch를 비교해도 파라미터를 바꾼 횟수는 네 배 차이입니다. 큰 배치는 기울기 추정 잡음을 줄일 수 있지만 메모리·step 시간·일반화가 달라집니다.
| 고정 예산 | 공정하게 비교하는 것 | 달라질 수 있는 것 |
|---|---|---|
| 처리 샘플 수 | 데이터 노출량 | update 수·벽시계 시간 |
| optimizer step 수 | 갱신 횟수 | 총 샘플·계산량 |
| 벽시계 시간 | 실제 자원 사용 시간 | 샘플·수렴 단계 |
배치를 네 배 늘리면 학습률도 반드시 네 배라는 보편 법칙은 없습니다. optimizer·loss reduction·정규화·warmup·장비 효율을 포함해 검증해야 합니다. 학습률만 바뀐 것인지 배치 평균 대신 합을 사용해 gradient 자체가 커진 것인지도 구분합니다.
비교 표의 고정 예산을 실제 실험명에 포함합니다. fixed_samples, fixed_steps, fixed_wall_clock는 서로 다른 질문을 답하므로 하나의 표에서 섞지 않고, 각 조건에서 optimizer state·shuffle·seed를 고정합니다. batch를 키운 뒤 epoch당 step이 줄어든 결과를 단순히 “더 안정적”이라고 부르지 말고 update 수와 샘플 노출량을 함께 보고합니다.
Warmup·decay와 시점별 학습률 정책
warmup은 초기 일정 step 동안 작은 학습률에서 목표값으로 올려 초기 큰 갱신을 줄입니다. decay는 뒤쪽 보폭을 줄여 안정적인 세부 조정을 돕습니다. 초기화와 optimizer 통계가 다른 환경에서는 효과가 다를 수 있습니다.
스케줄을 epoch 기준으로 쓰는지 step 기준으로 쓰는지, 재시작 시 어느 위치부터 이어가는지 저장해야 합니다. 배치 크기를 바꾸고 같은 epoch 스케줄을 쓰면 update 기준의 스케줄도 달라집니다. 더 오래 학습한 결과를 스케줄만의 개선으로 보고하지 않도록 샘플·step·시간과 검증 곡선을 함께 비교합니다.
스케줄 검증은 step 0, warmup 끝, decay 중간, 마지막 step, checkpoint 재시작 직후의 실제 learning rate를 출력하는 작은 시험으로 시작합니다. 예상 결과는 같은 epoch라도 batch 크기와 gradient accumulation이 바뀌면 step 기반 정책의 위치가 달라지는 것입니다. scheduler state를 저장하지 않으면 resume 뒤 동일한 optimizer라도 다른 곡선을 만들 수 있습니다.
손실 감소와 예측 성능의 분리 평가
먼저 단순 이차식으로 update 부호·학습률·기울기 초기화의 구현을 검사합니다. 실제 모델에서는 작은 데이터 과적합 시험, seed 반복, 일정 예산의 학습률 후보 비교를 수행합니다. 훈련 손실이 잘 줄어도 검증 지표가 나쁘면 과적합·목적 불일치·판정 임계값을 살펴야 합니다.
optimizer를 Adam으로 바꾸거나 clipping을 넣어 숫자가 안정됐다고 데이터와 모델이 올바르다고 결론 내리지 않습니다. 수치 안정성·수렴 속도·일반화·계산 비용을 별개의 결과로 기록해야 합니다.
최소 검증 세트는 단순 이차식의 해 근접성, 작은 데이터의 의도적 과적합, 고정 seed 반복, 검증 지표와 threshold 평가로 구성합니다. 훈련 loss는 낮아졌지만 validation이 나빠지는 결과는 과적합·목적 함수와 제품 지표의 불일치·데이터 전처리 차이를 각각 의심하게 합니다. 문서의 수치 예시는 알고리즘 계약을 설명하기 위한 것이며 특정 모델의 최적값으로 승격하지 않습니다.