
6번 sigmoid-v1 의 실전 응용. 순진한 구현은 극단적 입력에서 NaN/overflow 경고를 냅니다:
1 / (1 + np.exp(-z)) # z = -1000 이면 exp(1000) 이 오버플로우
는 대수적으로 동치인 두 형태가 있어요:
exp(-z) 는 → 안전.exp(z) 는 → 안전.부호에 따라 골라 쓰면 입력이 여도 오버플로우 없이 0 또는 1 로 수렴합니다.
함수 stable_sigmoid-v1(z) 를 완성하세요.
np.where(z >= 0, ...) 로 분기.z = ±1000) 에서도 NaN/inf 없음.| # | 이름 | 입력 | 기대 |
|---|---|---|---|
| 1 | σ(0) = 0.5 | 0 | 0.5 |
| 2 | 정상 영역 | [-1, 0, 1] | naive 와 일치 |
| 3 | 극단 음수 → 0 | -1000 | 0.0 (오버플로우 없이) |
| 4 | 극단 양수 → 1 | 1000 | 1.0 |
| 5 | 배열 모두 유한 | [-2000, -1000, 1000, 2000] | np.all(np.isfinite(...)) |
코드를 작성하고 Run 을 눌러보세요.