신경망·연습 문제

Mish 활성함수

문제 설명PROBLEM

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)
개념 노트와 실수 포인트

신경망

  • 순전파 → 손실 → 역전파(연쇄법칙) → 갱신.
  • ⚠️ 행렬곱 차원: A(m×n) @ B(n×p) — 안쪽 차원이 같아야 함.
  • 비선형 활성화가 없으면 층을 쌓아도 선형. 가중치 초기화 중요.