← 문제 목록/Softmax Jacobian [medium]
문제 해설

Softmax Jacobian [medium]

역전파 · medium

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)
코드 작성
Loading...
실행 결과

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