학습의 큰 그림과 한 배치 5줄 ★★★
교수님이 "딥러닝 모델 Training 과정" 자료에서 정리한 학습의 큰 흐름은 이래요.
- 데이터 준비 — 입력 x와 정답 T
- Forward — 모델에 x를 넣어 예측 ŷ를 얻어요.
- Loss — ŷ와 정답을 비교해 틀린 정도를 숫자 하나로 만들어요.
- Gradient — 각 weight를 어느 쪽으로 바꾸면 loss가 줄어드는지(기울기)를 구해요.
- Update — 기울기의 반대 방향으로 weight를 조금 고쳐요.
- 다른 배치로 2~5를 계속 반복해요.
화살을 쏘고(forward), 과녁에서 얼마나 빗나갔는지 보고(loss), 어느 쪽으로 조준을 고쳐야 할지 판단하고(gradient), 실제로 조준을 고쳐요(update). 그리고 이전 판단은 잊고 다시 쏴요(zero_grad). 이 한 사이클을 수없이 반복하는 것이 학습이에요.
이 흐름을 코드로 쓰면 딱 5줄이에요. 5개를 순서대로 외워 두세요.
| 순서 | 코드 | 하는 일 | 값이 바뀌는 곳 |
|---|---|---|---|
| 1 | optimizer.zero_grad() | 지난 step의 기울기를 비워요 | .grad만 비워지고 weight는 그대로 |
| 2 | prediction = model(batch_x) | 모델이 예측값을 계산하고 계산 그래프를 만들어요 | weight, grad 모두 그대로 |
| 3 | loss = criterion(prediction, batch_y) | 예측과 정답을 비교해 숫자 하나(loss)를 만들어요 | weight, grad 모두 그대로 |
| 4 | loss.backward() | 각 파라미터의 기울기를 계산해서 .grad에 저장해요 | .grad가 채워져요 (weight는 그대로) |
| 5 | optimizer.step() | 저장된 기울기로 파라미터를 갱신해요 | weight가 바뀌어요 |
왜 zero_grad가 맨 앞일까요? 6장에서 배운 것처럼 기울기는 쌓이기 때문에, 지난 step의 값을 지우고 시작해야 이번 step의 기울기만 정확히 담겨요. 교수님은 zero_grad를 backward 전에만 하면 된다고 했어요. backward 뒤에 하면 방금 구한 기울기가 사라지기 때문이에요. 관례는 맨 앞에 두는 거예요.
왜 forward와 loss를 매번 다시 할까요? 6장에서 본 것처럼 계산 그래프는 backward를 하면 풀려요. 매 반복마다 model(x)와 criterion(...)을 새로 실행하니까 새 그래프가 만들어져서 문제가 없어요. 또 업데이트된 weight로 새로 계산해야 다음 예측이 나아져요.

5줄 중 하나를 빼먹으면 이런 일이 생겨요. 교수님 자료의 오류 점검표예요.
| 빼먹은 것 | 결과 |
|---|---|
zero_grad() | 기울기가 계속 쌓여서 실제보다 커져요. 업데이트가 이상해져요. |
forward / loss | backward할 loss가 없어요(또는 지난 loss를 다시 써서 오류). |
backward() | .grad가 비어 있어서 step()이 갱신할 것이 없어요. weight 불변. |
step() | 기울기는 구했지만 weight가 안 바뀌어요. 학습이 안 돼요. |
"지우고 → 예측하고 → 채점하고 → 기울기 구하고 → 고친다". 영어로는 zero_grad → forward → loss → backward → step이에요. 교수님 슬라이드가 "핵심 한 줄"이라고 부른 순서예요.
5줄이 나오면 각 줄에 한 단어를 붙여 보세요. 지우기(zero_grad), 예측(model), 점수(criterion), 기울기 계산(backward), 갱신(step). 보기가 "이 함수가 하는 일"을 다르게 말하면 오답이에요. 특히 backward = 계산, step = 갱신을 바꿔 놓은 보기가 자주 나와요.
잠깐 확인 — 학습 5단계에서 weight 값이 실제로 바뀌는 줄은 몇 번째일까요?
5번째 optimizer.step()이에요. backward까지는 기울기(.grad)만 만들어져요.
자료: 6·7주차 · Week04_Autograd_Loss_Optimizer, Week05_Dataset_DataLoader_Train_Validation(part1), 딥러닝 모델 Training 과정.pdf · 7주차 녹취(빅데이터07)