최적화·연습 문제

Layer Normalization (Forward)

문제 설명PROBLEM

preview

Layer Normalization (Forward)

Transformer의 핵심 정규화 층. 각 샘플 의 특성들을 자체 mean·std로 정규화 한 뒤 학습 가능한 스케일(γ\gamma)과 시프트(β\beta)를 더합니다:

μi=1Djxij,σi2=1Dj(xijμi)2\mu_i = \frac{1}{D} \sum_j x_{ij}, \quad \sigma_i^2 = \frac{1}{D} \sum_j (x_{ij} - \mu_i)^2 yij=xijμiσi2+ϵγj+βjy_{ij} = \frac{x_{ij} - \mu_i}{\sqrt{\sigma_i^2 + \epsilon}} \cdot \gamma_j + \beta_j

BatchNorm 과의 차이

  • BatchNorm: 배치 축(N)을 따라 평균·std 계산 → 배치 크기에 의존, inference 때 running mean/var 필요.
  • LayerNorm: 특성 축(D)을 따라 → 각 샘플 독립적. 배치 크기 1 도 OK, RNN/Transformer에 자연스러움.

과제

함수 layer_norm(x, gamma, beta, eps) 를 완성하세요.

  • x shape (N, D).
  • gamma, beta shape (D,).
  • 반환: 같은 shape (N, D).
  • keepdims=True 로 브로드캐스팅.

테스트 케이스

#이름검증
1γ=1, β=0 → 행별 평균 0
2γ=1, β=0 → 행별 std 1
3γ, β 스케일/시프트 적용기대값 수식 일치
4shape 유지
5상수 행도 NaN 없음 (eps)
개념 노트와 실수 포인트

최적화 (옵티마이저)

  • GD/SGD/모멘텀/Adam. ⚠️ 학습률: 너무 크면 발산, 너무 작으면 느림.
  • 파라미터 -= lr * gradient. 모멘텀/Adam 은 과거 기울기 활용.