신경망·연습 문제

BERT-style Input Embedding (token+segment+pos+LN) [medium]

문제 설명PROBLEM

preview

BERT-style Input Embedding [medium]

v1 은 토큰 + 위치 두 개. BERT (Devlin 2019) 는 세 가지 임베딩 + LayerNorm:

X=LN(Etok[idx]+Eseg[seg]+Epos[:L])X = \text{LN}(E_{\text{tok}}[\text{idx}] + E_{\text{seg}}[\text{seg}] + E_{\text{pos}}[:L])

세 개를 더하는 이유

  1. Token embedding: 단어 의미.
  2. Segment embedding: 문장 A / 문장 B 구별 ("NSP" 태스크에서 사용).
  3. Position embedding: 학습된(learned) 벡터 (sinusoidal 아님).

왜 LayerNorm 을 뒤에

세 벡터 덧셈 후 크기가 불안정 → LayerNorm 으로 feature dim 기준 정규화:

LN(x)=γxμσ2+ϵ+β\text{LN}(x) = \gamma \cdot \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \beta

여기서 μ,σ2\mu, \sigma^2 는 마지막 차원 기준.

과제

함수 bert_embedding(tok_emb, seg_emb, pos_emb, idx_tok, idx_seg, gamma, beta, eps=1e-5) 를 완성하세요.

  • tok_emb (V, d), seg_emb (S, d), pos_emb (max_L, d).
  • idx_tok (B, L), idx_seg (B, L), 정수.
  • gamma, beta: shape (d,).
  • 반환: (B, L, d).

테스트 케이스

#이름검증
1shape (B, L, d)
2LN 후 mean ≈ 0 (per position)
3LN 후 std ≈ 1 (per position, γ=1)
4γ=0 → 출력 = β
5segment 변경 → 출력 변경
6position 변경 → 출력 변경
7batch broadcasting: pos/gamma/beta 공유
개념 노트와 실수 포인트

신경망

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