← 문제 목록/Numerically Stable log-sigmoid [medium]
문제 해설

Numerically Stable log-sigmoid [medium]

활성 함수 · medium

preview

Numerically Stable log-sigmoid [medium]

v1 시그모이드로그 logσ(z)\log \sigma(z) 는 BCE loss, logistic log-likelihood 계산에서 필수. 단 순진하게 np.log(sigmoid(z)) 는:

  • z+z \to +\infty: σ1\sigma \to 1log\log 안전.
  • zz \to -\infty: σ0\sigma \to 0log(0) = -inf.

안정한 공식

logσ(z)=log(1+ez)=softplus(z)\log \sigma(z) = -\log(1 + e^{-z}) = -\text{softplus}(-z)

다시 수치 안정 softplus 로 표현:

logσ(z)=min(0,z)log(1+ez)\log \sigma(z) = \min(0, z) - \log(1 + e^{-|z|})

증명:

  • z0z \ge 0: min(0,z)=0\min(0, z) = 0, z=z|z| = zlog(1+ez)-\log(1 + e^{-z}). ✓
  • z<0z < 0: min(0,z)=z\min(0, z) = z, z=z|z| = -zzlog(1+ez)=log(ez/(1+ez))=logσ(z)z - \log(1 + e^{z}) = \log(e^z / (1 + e^z)) = \log \sigma(z). ✓

두 경우 모두 exp 인자가 음수여서 오버플로 없음.

과제

함수 log_sigmoid(z) 를 완성하세요.

  • 입력: 임의 shape 배열.
  • 반환: 같은 shape, 값 0\le 0.
  • 큰 양/음수 (예: ±1000) 에서 NaN/Inf 금지.
  • 힌트: np.minimum(z, 0) - np.log1p(np.exp(-np.abs(z))).

테스트 케이스

#이름검증
1shape 유지
2log_sigmoid(0) = -log 2
3모든 출력 ≤ 0sigmoid ≤ 1
4큰 양수 z → ≈ 0
5큰 음수 z → ≈ z
6z=±1000 에서 finite (순진 구현은 NaN)
7log(sigmoid(z)) 와 작은 z 에서 일치
코드 작성
Loading...
실행 결과

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