학습 한 걸음의 뼈대
- 순전파: 미니배치의 예측과 손실을 계산해.
- 역전파: 손실을 각 매개변수로 미분해 기울기를 구해.
- 갱신: 최적화기가 기울기와 내부 상태를 이용해 매개변수를 바꿔.
PyTorch에서는 기울기가 기본적으로 누적되므로 다음 미니배치 전에 지워야 해. 반면 MLX처럼 함수형 기울기와 명시적 최적화 상태를 쓰는 프레임워크는 표면 문법이 달라도 같은 계산 의존성을 다뤄.
for batch in dataloader:
optimizer.zero_grad()
pred = model(batch.x)
loss = loss_fn(pred, batch.y)
loss.backward()
optimizer.step()
이 다섯 줄은 핵심 골격이지만 실제 학습에는 자료 로딩, mixed precision, 기울기 누적, 분산 동기화, 스케줄, 체크포인트, 평가가 더 붙어. 모두가 단순한 포장인 건 아니고 수치와 시스템 동작을 바꾸기도 해.
최적화기는 과제와 구조에 맞춰 고르기
- SGD와 momentum: 단순하고 잘 튜닝하면 특히 비전 문제에서 강한 기준선이 돼.
- Adam: 매개변수별 1·2차 모멘트를 이용해 적응적으로 크기를 조절해.
- AdamW: weight decay를 모멘트 갱신과 분리해 적용해. Transformer 학습에 흔하지만 언제나 최선인 기본값은 아니야.
같은 최적화기라도 학습률, 배치 크기, warmup, 감쇠 방식에 따라 결과가 크게 달라져. 이름 하나보다 전체 설정을 봐야 해.
순전파는 값을 만들고, 역전파는 민감도를 구하고, 최적화기는 상태를 바꿔. 세 역할을 구분하면 학습이 멈췄을 때 어느 층을 점검할지 알 수 있어.