
96번 GELU 는 "x × 확률" 형태의 활성. SwiGLU (Shazeer 2020) 는 한 걸음 더 — 두 개의 선형 프로젝션 중 하나를 gate 로 써서 다른 하나를 곱합니다:
LLaMA, PaLM 의 FFN 이 정확히 이 구조 (이후 projection 으로 마무리 — 이 문제는 up+gate 까지).
| ReLU | GELU | SwiGLU | |
|---|---|---|---|
| 연산 | 또는 0 | gate · up | |
| 파라미터 | 동일 | 추가 | |
| LLM 성능 | baseline | +소폭 | 최고 (현재 표준) |
추가 파라미터가 들지만 같은 total FFN 크기에선 성능 향상이 안정적. LLaMA 는 FFN 중간 크기를 2/3 로 줄여 전체 파라미터 수 맞춤.
함수 gelu-v2(x, W_gate, W_up) 를 완성하세요.
x shape (N, D_in), W_gate, W_up shape (D_in, D_out).(N, D_out).g = x @ W_gate
silu = g * (1 / (1 + np.exp(-g))) # SiLU
u = x @ W_up
return silu * u
| # | 이름 | 검증 |
|---|---|---|
| 1 | shape (N, D_out) | |
| 2 | SiLU(0) = 0 → W_gate=0 → 출력 0 | |
| 3 | W_up=0 → 출력 0 | |
| 4 | 같은 input 두 번 넣어도 동일 | determinism |
| 5 | 손계산 | toy |
코드를 작성하고 Run 을 눌러보세요.