신경망·연습 문제

SwiGLU Activation (LLaMA FFN) [medium]

문제 설명PROBLEM

preview

SwiGLU Activation [medium]

v1 GELU 는 element-wise. 하지만 LLaMA/Mistral/Qwen 의 FFN 은 단순 활성화가 아닌 gated 구조를 씀 — SwiGLU (Shazeer 2020):

SwiGLU(x)=swish(xWgate)(xWup)\text{SwiGLU}(x) = \text{swish}(x W_{\text{gate}}) \odot (x W_{\text{up}})

구성요소

  • Swish/SiLU: swish(z)=zσ(z)=z/(1+ez)\text{swish}(z) = z \cdot \sigma(z) = z / (1 + e^{-z}). ReLU/GELU 와 비슷한 smooth 활성화.
  • Gate: swish(x W_gate) 가 0~선형 사이를 softly 골라냄.
  • Up projection: x W_up 은 활성화 없이 넘김.
  • 두 프로젝션 출력을 element-wise 곱 → hidden dim h.

후속에 W_down 을 통과해 원래 차원으로 복귀하는 게 전체 FFN. 이 문제는 SwiGLU 본체만.

왜 SwiGLU 가 주류인가

  • GLU (Dauphin 2017) 가 증명: 곱셈 gating 이 FFN 성능을 크게 올림.
  • Swish 가 ReLU/GELU 보다 deep net 에서 약간 우수.
  • LLaMA-2, Mistral, Gemma, Qwen — 전부 SwiGLU 사용.

과제

함수 swiglu(x, W_gate, W_up) 를 완성하세요.

  • x shape (N, d).
  • W_gate, W_up shape (d, h).
  • 반환 shape (N, h).

테스트 케이스

#이름검증
1shape (N, h)
2W_up=0 → 출력 0
3큰 음수 gate → 출력 ≈ 0swish(-∞)=0
4큰 양수 gate → swish ≈ x·W_gate → 선형 gated
5x=0 → 출력 0swish(0)=0
6알려진 toy 값
7element-wise gating (독립 컬럼)
개념 노트와 실수 포인트

신경망

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