역전파·연습 문제

MSE Loss Backward

문제 설명PROBLEM

preview

MSE Loss Backward

83번 Linear Backward 는 상위 gradient dYdY 가 주어졌다 가정. 이 dYdY 를 실제로 만들어내는 건 손실 함수 backward. 가장 단순한 경우 회귀용 MSE:

L=1Ni(y^iyi)2L = \frac{1}{N} \sum_{i} (\hat y_i - y_i)^2

그래디언트: Ly^i=2N(y^iyi)\frac{\partial L}{\partial \hat y_i} = \frac{2}{N} (\hat y_i - y_i)

이걸 계산해 넘겨주면 linear_backward → optimizer step 으로 연결되어 full training loop 완성.

파이프라인

X ── linear_forward ──► ŷ ── mse ──► scalar loss
              │                 │
              ▼                 ▼
    linear_backward  ◄──── mse_backward (dŷ)
              │
              ▼
            dX, dW, db → optimizer

다차원

y^,y\hat y, y shape (N, D) 인 경우에도 동일: Ly^i,j=2ND(y^i,jyi,j)\frac{\partial L}{\partial \hat y_{i,j}} = \frac{2}{N \cdot D} (\hat y_{i,j} - y_{i,j}) 여기서는 배치 평균 (N 으로만 나눔) 또는 전체 평균 (N·D) 두 관례가 있습니다. 이 문제에선 PyTorch 기본인 "모든 원소 평균" 사용: 나누는 수는 np.size(y_true).

과제

함수 mse_backward(y_pred, y_true) 를 완성하세요.

  • y_pred, y_true 같은 shape.
  • 반환: 같은 shape — 2(y^y)/Ntotal2 (\hat y - y) / N_\text{total}.

테스트 케이스

#이름검증
1shape 유지
2완벽 예측 → 0
3부호: ŷ > y → grad > 0
4스칼라 손계산
52D 배열
개념 노트와 실수 포인트

역전파

  • 연쇄법칙으로 출력 쪽에서 입력 쪽으로 기울기 전파.
  • ⚠️ 각 단계 그래디언트의 차원(shape) 을 입력과 맞추기.