역전파·연습 문제

Softmax Jacobian [medium]

문제 설명PROBLEM

preview

Softmax Jacobian [medium]

v1 소프트맥스 는 forward. 역전파에서 필요한 건 Jacobian Jij=pixjJ_{ij} = \dfrac{\partial p_i}{\partial x_j}:

pixj=pi(δijpj)={pi(1pi)i=jpipjij\frac{\partial p_i}{\partial x_j} = p_i (\delta_{ij} - p_j) = \begin{cases} p_i (1 - p_i) & i = j \\ -p_i p_j & i \ne j \end{cases}

행렬 형태:

J=diag(p)ppJ = \text{diag}(p) - p p^\top

  • 대각: pipi2=pi(1pi)p_i - p_i^2 = p_i(1 - p_i)
  • 비대각: pipj-p_i p_j

성질

  • 대칭: J=JJ = J^\top.
  • 행/열 합 = 0: 확률 합이 1 로 제약된 결과 — any probability conservation identity.
  • 양의 준정부호: JJ 의 eigenvalue 는 모두 0\ge 0 — softmax가 convex potential 의 그래디언트이기 때문.

과제

함수 softmax_jacobian(x) 를 완성하세요.

  • x shape (n,) 로짓.
  • 반환: shape (n, n) Jacobian.
  • 힌트:
    p = stable_softmax(x)          # (n,)
    return np.diag(p) - np.outer(p, p)
    

테스트 케이스

#이름검증
1shape (n, n)
2대칭J == J.T
3행 합 = 0probability conservation
4대각 = p(1-p)
5비대각 = -p_i p_j
6균등 logits → 대각 균일
7수치 안정 (큰 logits 에서 finite)
개념 노트와 실수 포인트

역전파

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