← 문제 목록/SiLU / Swish 활성화
문제 해설

SiLU / Swish 활성화

신경망 · easy

preview

SiLU / Swish

GELU(96) 와 형제 — 역시 "ReLU 의 부드러운 버전". EfficientNet, Llama, Gemma 등 현대 아키텍처의 표준 활성화.

SiLU(x)=xσ(x)=x1+ex\text{SiLU}(x) = x \cdot \sigma(x) = \frac{x}{1 + e^{-x}}

여기서 σ\sigma 는 sigmoid-v1. "Swish" 라는 이름으로도 불림 (β=1).

GELU 와 차이

  • SiLU = xσ(x)x \cdot \sigma(x) → sigmoid-v1 기반, 계산 저렴.
  • GELU = xΦ(x)x \cdot \Phi(x) → 정규분포 CDF, 이론적 동기.
  • 값은 매우 비슷 (max diff ≈ 0.02) — 이 문제 시각화에서 직접 비교.

과제

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

  • 입력: shape 임의.
  • 반환: 동일 shape.
  • 수치 안정성 (큰 음수에서 exp 오버플로) 을 위해 sigmoid-v1 는 직접 작성하지 말고 np.where / scipy.special.expit / 안정식 사용을 권장.

안정한 sigmoid-v1:

def _sigmoid-v1(x):
    return np.where(x >= 0,
                    1.0 / (1.0 + np.exp(-x)),
                    np.exp(x) / (1.0 + np.exp(x)))

테스트 케이스

#이름검증
1shape 보존
2silu(0) = 0
3큰 양수 → ≈ x
4큰 음수 → ≈ 0silu(-30)inf/nan 아님
5공식 일치x · σ(x) ref 비교
코드 작성
Loading...
실행 결과

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