← 문제 목록/MLP with GELU (BERT/GPT 스타일)
문제 해설

MLP with GELU (BERT/GPT 스타일)

신경망 · easy

preview

MLP with GELU (Transformer 스타일)

85번 MLP with Tanh 에서 활성함수를 GELU (Gaussian Error Linear Unit) 로 교체:

GELU(x)0.5x(1+tanh ⁣(2π(x+0.044715x3)))\text{GELU}(x) \approx 0.5 \, x \left( 1 + \tanh\!\left(\sqrt{\frac{2}{\pi}}\, (x + 0.044715 \, x^3)\right) \right)

이게 BERT, GPT-2/3, ViT 등 대부분의 Transformer 의 FFN 층 활성.

수식

h=GELU(XW1+b1)\mathbf{h} = \text{GELU}(X W_1 + \mathbf{b}_1) y=hW2+b2\mathbf{y} = \mathbf{h} W_2 + \mathbf{b}_2

GELU 의 특징

  • x>0x > 0: 대략 xx (ReLU 와 비슷)
  • x<0x < 0: 0 이 아니라 작은 음수 값 (ReLU와 차이)
  • xx \to -\infty: 0 으로 부드럽게 수렴
  • smooth, 미분 가능 전 구간 → ReLU 의 "0 에서 kink" 없음

vs ReLU, Tanh

활성x<0 영역미분사용처
ReLU0kink at 0CNN 기본
Tanh부호 반대, 포화smoothRNN (구)
GELU음의 작은 값smoothTransformer 기본

과제

함수 mlp_forward_gelu-v1(X, W1, b1, W2, b2) 를 완성하세요.

  • 은닉층 활성에 GELU (위 공식) 적용.
  • 힌트: 0.5 * x * (1 + np.tanh(np.sqrt(2/np.pi) * (x + 0.044715 * x**3))).

테스트 케이스

#이름검증
1shape (N, D_out)
2GELU(0) = 0 → W1=0, b1=0 → y=b2
3GELU(x) ≠ ReLU(x) at x=-1부호 있는 음수
4대칭 실험: GELU(-1) < 0, GELU(1) > 0
5큰 양수 → GELU(x) ≈ x
코드 작성
Loading...
실행 결과

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