시험공부빅데이터분석
← 보드학습 루프와 검증 · 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)