← 보드학습 루프와 검증 · 5/7
샘플 시험 5번 손으로 풀기 ★★★
문제의 5줄은 위의 9-1과 같아요. 보기는 각 함수의 역할을 묻고 있어요.
optimizer.zero_grad()
prediction = model(batch_x)
loss = criterion(prediction, batch_y)
loss.backward()
optimizer.step()
| 보기 | 내용 | 판정 | 이유 |
|---|---|---|---|
| ① | optimizer.step()은 저장된 기울기를 이용해 옵티마이저에 전달된 파라미터를 갱신한다. | 맞음 | step의 정의 그대로예요. 계산된 .grad를 읽어 값을 고쳐요. |
| ② | loss.backward()는 기울기를 계산한 뒤 파라미터 값까지 갱신한다. | 틀림 | backward는 기울기만 계산·저장해요. 갱신은 step이에요(7장 실험에서 backward 직후 weight 1.0이 그대로였어요). |
| ③ | optimizer.zero_grad()는 모델의 모든 파라미터 값을 0으로 만든다. | 틀림 | 0으로 만드는(비우는) 대상은 기울기예요. 파라미터 값(weight)은 건드리지 않아요. |
| ④ | criterion(prediction, batch_y)는 손실을 계산하고 이전 기울기를 초기화한다. | 틀림 | criterion은 loss 점수만 계산해요. 기울기 초기화는 zero_grad가 해요. |
| ⑤ | optimizer.step()은 기울기를 새로 계산한 뒤 기존 기울기를 자동으로 제거한다. | 틀림 | step은 계산도 제거도 안 해요. 이미 저장된 기울기를 읽어 갱신만 해요. |
정답은 ①번이에요. 교수님은 이 문제를 보여 주면서 수업 때 계속 얘기한 다섯 개 과정에 대한 설명 중 올바른 것을 고르는 문제라고 했고, 기울기를 초기화하는 일은 zero_grad가 한다고 말했어요. 시험에 이 모양 그대로 나오지는 않는다고 했지만 유형은 같아요.
외우기 팁
대상으로 구분하세요. zero_grad는 "기울기"를 비우고, backward는 "기울기"를 구하고, step은 "파라미터"를 바꾸고, criterion은 "loss"를 만들어요. 보기에서 함수와 대상이 어긋나면 틀린 문장이에요.
이렇게 고르세요 (풀이 요령)
① 보기마다 (함수, 하는 일, 대상)을 뽑아요. ② 위의 짝(zero_grad-기울기 비우기, backward-기울기 계산, step-파라미터 갱신, criterion-loss 계산)과 하나라도 다르면 지워요. ③ "A가 B도 같이 해 준다"는 보기(②, ④, ⑤처럼 한 함수가 두 가지 일을 한다고 말하는 것)는 거의 오답이에요. 각 함수는 한 가지 일만 해요.
잠깐 확인 — zero_grad() 없이 backward()를 2번 연속 하면 기울기는 어떻게 될까요?
두 번째 값이 첫 번째 값에 더해져서 2배 정도로 쌓여요. 학습에서는 매번 새 기울기만 필요해서 zero_grad로 지워야 해요.
다음 카드 → 학습 데이터와 검증 데이터 — 참고 참고
자료: 6·7주차 · Week04_Autograd_Loss_Optimizer, Week05_Dataset_DataLoader_Train_Validation(part1), 딥러닝 모델 Training 과정.pdf · 7주차 녹취(빅데이터07)