
v1 Outer product 은 한 쌍 의 벡터. 신경망 backprop 에서 자주 등장하는 연산은:
즉 배치 전체에 걸친 outer product 의 합. 이 연산은 선형층 의 weight gradient 다.
sum(np.outer(D[n], X[n]) for n in range(N)).D.T @ X. shape 확인:
D.T (out_features, N)X (N, in_features)이 동치는 각 batch 샘플의 기여를 합 하는 기본 구조 — 아인슈타인 표기 np.einsum('no,ni->oi', D, X) 와도 같음.
D.T @ X 가 BLAS 활용으로 훨씬 빠름.함수 linear_weight_grad(X, D) 를 완성하세요.
X shape (N, in_features): 배치 입력.D shape (N, out_features): 배치 upstream gradient.(out_features, in_features) — sum_n D[n] ⊗ X[n].D.T @ X 한 줄이면 됨.| # | 이름 | 검증 |
|---|---|---|
| 1 | 반환 shape (out, in) | |
| 2 | 루프 구현과 일치 | |
| 3 | einsum 과 일치 | |
| 4 | 수치 예제 | 손계산 검증 |
| 5 | linearity: grad(cD) = c·grad(D) | |
| 6 | linearity: grad(X1 + X2 stacked) = 각 grad 의 합 | |
| 7 | 수치 미분: , L = sum(y), dL/dW 와 일치 |
코드를 작성하고 Run 을 눌러보세요.