신경망·연습 문제

MLP with GELU (BERT/GPT 스타일)

문제 설명PROBLEM

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

신경망

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