← 문제 목록/Mish 활성함수
문제 해설

Mish 활성함수

신경망 · easy

preview

Mish

97번 SiLUxσ(x)x \cdot \sigma(x). Mish (Misra 2019) 는 sigmoid-v1 대신 softplus + tanh 조합:

Mish(x)=xtanh(softplus(x))=xtanh(log(1+ex))\text{Mish}(x) = x \cdot \tanh(\text{softplus}(x)) = x \cdot \tanh(\log(1 + e^x))

  • smooth (전 구간 미분 가능).
  • self-gated (x 가 자기 자신을 게이트).
  • 음의 영역에서 약간의 값 유지 (GELU/SiLU 와 유사).

YOLOv4 가 채택하면서 유명해짐. 실험적으로 SiLU/GELU 와 성능 거의 동등하지만 계산이 약간 무거움.

수치 안정 softplus

log(1 + exp(x)) 는 큰 양수에서 overflow. 안정한 구현:

softplus(x)=max(x,0)+log(1+ex)\text{softplus}(x) = \max(x, 0) + \log(1 + e^{-|x|})

np.log1p(np.exp(-|x|)) 를 사용하면 정확.

과제

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

  • 입력: 임의 shape.
  • 반환: 같은 shape.
  • 큰 양수 (예: x=1000) 에서 NaN/inf 금지.
  • 힌트:
    sp = np.maximum(x, 0) + np.log1p(np.exp(-np.abs(x)))  # stable softplus
    return x * np.tanh(sp)
    

테스트 케이스

#이름검증
1shape 유지
2silu-swish-v2(0) = 0
3큰 양수 → ≈ x
4큰 음수 → ≈ 0
5수치 안정 (x=500)inf/nan 없음
6공식 일치naive x * tanh(log(1+exp(x))) 와 비교 (작은 x)
코드 작성
Loading...
실행 결과

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