시험공부빅데이터분석
← 보드Autograd — 자동으로 기울기 구하기 · 2/8

requires_grad, backward(), .grad — 가장 기본 예제 ★★★

PyTorch에게 "이 값의 기울기가 필요해"라고 알려 주는 표시가 requires_grad=True예요. 이 표시가 붙은 Tensor에서 시작한 계산은 PyTorch가 전부 기록해 두었다가, 나중에 기울기를 한꺼번에 계산해요.

w = torch.tensor(3.0, requires_grad=True) L = w ** 2 print("w:", w) print("L:", L) print("backward 전 w.grad:", w.grad) L.backward() print("backward 후 w.grad:", w.grad)
w: tensor(3., requires_grad=True) L: tensor(9., grad_fn=<PowBackward0>) backward 전 w.grad: None backward 후 w.grad: tensor(6.)
코드 줄무슨 뜻
w = torch.tensor(3.0, requires_grad=True)값이 3.0인 w를 만들고 기울기를 추적하라고 표시해요.
L = w ** 2L = w² = 9. 이 계산도 기록돼요. 출력의 grad_fn이 "기록 중"이라는 표시예요.
print(w.grad) (첫 번째)아직 backward 전이라 None이에요.
L.backward()L을 w로 미분해요. L = w²이므로 2w = 2×3 = 6을 계산해서 w.grad에 저장해요.
print(w.grad) (두 번째)tensor(6.)이에요.

꼭 알아둘 점이 두 가지 있어요. 첫째, backward()는 w.backward()가 아니라 마지막 값 L에 걸어요. 둘째, backward()는 기울기를 계산해서 저장만 해요. w의 값(3.0)은 그대로이고, 값을 바꾸는 일은 나중에 업데이트(옵티마이저)가 해요.

외우기 팁

미분을 몰라도 시험은 풀 수 있어요. 교수님도 chain rule로 구하든 한 번에 미분하든 값만 맞으면 된다는 취지로 말했어요. 필요한 규칙은 딱 3개예요. ① wⁿ의 기울기는 n × wⁿ⁻¹ (w²는 2w, w³는 3w², w⁴는 4w³) ② 상수 곱하기는 그대로 따라 나와요(3w는 3) ③ 상수만 더한 것은 사라져요(w+1은 1).

이렇게 고르세요 (풀이 요령)

"backward()를 호출하면 무엇이 일어나는가"는 기울기를 계산해 .grad에 저장한다가 정답이에요. "파라미터 값까지 갱신한다"는 보기는 오답이에요. 갱신은 optimizer.step()이 해요.

잠깐 확인 — w=3, loss=(w−1)²에서 backward 후 w.grad는? 그리고 w의 값은 바뀔까요?

w.grad는 2×(3−1) = 4예요. w는 3 그대로예요. backward는 기울기만 계산하고 w 값은 바꾸지 않아요.

다음 카드 → 계산 그래프와 chain rule — 뒤에서 앞으로 곱하기 ★★

자료: 6주차 · Week04_Autograd_Loss_Optimizer · 6주차 녹취(빅데이터06), 7주차 녹취(빅데이터07)