← 문제 목록/Sinusoidal Positional Encoding
문제 해설

Sinusoidal Positional Encoding

신경망 · easy

preview

Sinusoidal Positional Encoding

Bag of Embeddings(89) 에서 보았듯 attention 은 순서 정보 자체가 없음 → Transformer 는 임베딩에 "위치 신호" 를 더해 해결.

Vaswani et al., 2017 의 고정식(fixed) 인코딩:

PE(pos,2i)=sin ⁣(pos100002i/d),PE(pos,2i+1)=cos ⁣(pos100002i/d)\text{PE}(pos, 2i) = \sin\!\left(\frac{pos}{10000^{2i/d}}\right),\quad \text{PE}(pos, 2i+1) = \cos\!\left(\frac{pos}{10000^{2i/d}}\right)

여기서 d 는 embedding 차원. 짝수 index 는 sin, 홀수 index 는 cos, 주파수는 차원에 따라 기하급수적으로 감소.

과제

함수 positional_encoding(L, d) 를 완성하세요.

  • L: 시퀀스 길이.
  • d: 임베딩 차원 (짝수).
  • 반환: shape (L, d), 각 원소 [-1, 1].
  • 힌트:
    • i = np.arange(d // 2)
    • freq = 1.0 / 10000 ** (2 * i / d)
    • angles = pos[:, None] * freq[None, :] → shape (L, d/2)
    • 짝수 열: sin(angles), 홀수 열: cos(angles)

테스트 케이스

#이름검증
1shape (L, d)
2값 범위 [-1, 1]abs <= 1
3짝수 열 = sinpos=0 → 0
4홀수 열 = cospos=0 → 1
5공식 일치Vaswani 공식 ref 비교
코드 작성
Loading...
실행 결과

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