2017년 Transformer 논문은 다른 주파수의 sine/cosine 고정 조합으로 위치를 인코딩하자고 제안했어:
PE(pos, 2i) = sin(pos / 10000^(2i / d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i / d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i / d_model))
각 위치가 길이 d_model인 unique 벡터 받아. 차원마다 다른 속도로 진동 — 차원 0은 빠르게 한 바퀴 돌고(고주파), 차원 d_model−1은 매우 천천히 진동. 합쳐서 위치마다 unique 지문 형성.
설계가 영리한 이유
- 위치별 unique. 학습 범위 안에서 두 위치가 같은 인코딩을 공유하지 않아.
- 선형 변환이 상대 위치를 잡아. PE(pos + k) = M_k @ PE(pos), 여기서 M_k는 k에만 의존. 모델이 원리상 상대 위치 attention을 인코딩에 대한 선형 연산으로 학습할 수 있어.
- 파라미터 0. 인코딩이 공식으로 완전 결정 — 학습 불필요.
- 외삽 잠재력. 공식이 모든 정수 위치에 정의돼 있어서, 학습보다 긴 시퀀스도 적어도 문법적으론 유효(실제론 품질 저하 잦지만).
sinusoidal 인코딩은 모던 decoder-only LLM에서 RoPE에 대체로 밀렸지만, 가장 깔끔한 멘탈 모델은 여전히 이거야. sinusoidal을 먼저 이해하면 RoPE는 "같은 아이디어인데 입력에서 더하는 게 아니라 attention 안에서 회전으로 적용"일 뿐이야.