← 문제 목록/Batched Outer Sum (선형층 weight gradient) [medium]
문제 해설

Batched Outer Sum (선형층 weight gradient) [medium]

선형대수 · medium

preview

Batched Outer Sum [medium]

v1 Outer product한 쌍 의 벡터. 신경망 backprop 에서 자주 등장하는 연산은:

WL=n=1Nδ(n)x(n)\nabla_W L = \sum_{n=1}^{N} \delta^{(n)} \otimes x^{(n)}

배치 전체에 걸친 outer product 의 합. 이 연산은 선형층 y=Wx+by = Wx + bweight gradient 다.

등가 공식

  1. loop: sum(np.outer(D[n], X[n]) for n in range(N)).
  2. matrix product: D.T @ X. shape 확인:
    • D.T (out_features, N)
    • X (N, in_features)
    • 결과 (out_features, in_features) — weight 행렬 shape 과 일치.

이 동치는 각 batch 샘플의 기여를 합 하는 기본 구조 — 아인슈타인 표기 np.einsum('no,ni->oi', D, X) 와도 같음.

왜 중요

  • Linear 층 backprop 의 실제 연산.
  • 배치 크기에 따른 scale: gradient 를 배치 크기로 나눌지 (mean) 또는 그대로 둘지 (sum) 는 convention.
  • 효율: 루프보다 D.T @ X 가 BLAS 활용으로 훨씬 빠름.

과제

함수 linear_weight_grad(X, D) 를 완성하세요.

  • X shape (N, in_features): 배치 입력.
  • D shape (N, out_features): 배치 upstream gradient.
  • 반환: shape (out_features, in_features)sum_n D[n] ⊗ X[n].
  • 힌트: D.T @ X 한 줄이면 됨.

테스트 케이스

#이름검증
1반환 shape (out, in)
2루프 구현과 일치
3einsum 과 일치
4수치 예제손계산 검증
5linearity: grad(cD) = c·grad(D)
6linearity: grad(X1 + X2 stacked) = 각 grad 의 합
7수치 미분: y=WXy = W X^\top, L = sum(y), dL/dW 와 일치
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.