RoPERoPE(회전 위치 인코딩)
Rotary Position Embedding
쉽게 이해하기
트랜스포머는 단어들의 순서를 스스로 알지 못해, ‘어느 단어가 어느 단어와 얼마나 가까운가’를 알려주는 위치 신호가 필요하다. 예컨대 문서 앞에서 붙어 있든, 뒤에서 붙어 있든 서로 가까운 단어쌍은 비슷한 주의를 받는 편이 좋다. 문제는 절대 위치를 그대로 넣으면 문서의 앞/뒤에 따라 유사도가 달라져, 같은 간격이라도 주의가 달라질 수 있다는 점이다.
RoPE는 이 문제를 “벡터를 회전시킨다”는 매우 단순한 아이디어로 푼다. 각 토큰의 쿼리/키 벡터를 ‘위치에 비례한 각도’만큼 돌려서, 두 벡터 사이의 위상 차이가 두 토큰 사이의 간격으로 바로 변환되도록 만든다. 즉 R(m)q와 R(n)k의 내적은 R(n−m)을 통해 상대 거리(n−m)에만 의존한다. 비유하자면, 여러 개의 작은 시계바늘을 각 차원쌍마다 다른 속도로 돌려 두 바늘 사이의 각도 차이만 읽는 방식이다.
구체적으로는 임베딩을 2차원 쌍들로 쪼개 각 쌍마다 주파수가 다른 회전 각도를 쓴다(낮은 차원쌍은 빠르게, 높은 차원쌍은 느리게 회전). 이렇게 하면 어떤 정보는 ‘아주 가까운 토큰에만’ 민감하게, 다른 정보는 ‘멀리 떨어져도’ 연결되게 만들 수 있다. 또한 회전 변환은 벡터 크기를 보존하므로 의미(세멘틱) 표현을 크게 흐트러뜨리지 않고, 위치 정보는 attention 내부에서만 작동해 서로 간섭을 줄인다.
비유와 예시
- 긴 표 제목-본문 매칭: 표 제목 토큰과 본문 첫 행 토큰이 1,500토큰 떨어져 있어도, 같은 간격의 제목-본문 쌍이면 유사한 주의를 받게 해 정렬이 안정화된다.
- 코드 블록 재참조: 함수 정의와 호출 지점이 문서 전반에 반복될 때, 호출-정의 간 거리가 같으면 문서 어디서든 비슷한 주의 점수를 유도해 참조 일관성을 높인다.
- 요약에서 문단-핵심문장 연결: 2,048토큰 길이 기사에서 문단별 핵심문장이 반복 간격(예: 평균 120토큰)으로 등장하면, 같은 상대 간격 신호로 요약시 해당 문장들이 고르게 주목된다.
한눈에 비교
| RoPE | 사인/코사인 절대 PE | 학습형 절대 PE | |
|---|---|---|---|
| 위치 신호 주입 위치 | Q·K에 회전 적용(attention 내부) | 임베딩에 합산(히든 상태) | 임베딩 테이블로 합산 |
| 상대성 보존(점곱) | 내적이 (n−m)의 함수로 정리 | 위상차로 상대 정보는 있으나 내적이 (n−m)로 깔끔히 환원되진 않음 | 절대 위치 의존, 상대성 불안정 |
| 일반화/확장성 | 수식 기반 각도로 창 확장 논의 용이 | 수식 기반이라 확장은 가능하나 점곱 상대성은 제한 | 훈련 창 밖 일반화 어려움 보고 |
| 의미 신호 간섭 | 낮음(위치가 attention 내부) | 높을 수 있음(의미와 합산) | 높음(의미와 합산) |
RoPE는 위치 신호를 attention 내부로 격리하고 점곱이 상대 거리에 의존하도록 설계되어, 긴 문맥에서의 일관성을 확보하는 데 유리하다.
어디서 왜 중요한가
- 발생 상황/변화: 위치 정보를 attention 내부로 옮기면서, 의미 표현과 위치 신호 간 섞임을 줄이는 설계가 확산되었다.
- 발생 상황/변화: 학습형 절대 임베딩이 가진 ‘훈련된 컨텍스트 창 한계’ 이슈에 대해, 수식 기반 각도로 확장 논의를 하기가 쉬워졌다.
- 사용 사례 보고: 일부 대형 언어모델(예: Llama, Llama 2, PaLM, CodeGen 등)에서 RoPE 사용이 소개·분석된 자료가 있다.
- 평가 맥락: 동일 간격의 토큰쌍이 문서 앞/뒤 어디에 있든 유사한 주의를 받는지 확인하는 상대 위치 일관성 점검이 설계 리뷰의 기본 체크로 자리잡았다.
자주 하는 오해
- ❌ 오해: RoPE는 절대 위치 정보를 전혀 쓰지 않는다 → ✅ 실제: 회전 각도는 절대 위치에 비례하지만, Q·K 내적은 R(n−m)으로 정리되어 상대 거리에만 의존한다(자세한 맥락은 basic_ko_1_plain 참조).
- ❌ 오해: 사인/코사인 PE는 상대 정보를 못 담는다 → ✅ 실제: 위상차로 상대 정보는 있으나, 점곱이 (n−m)의 함수로 깔끔히 환원되지는 않는다(표 참조).
- ❌ 오해: RoPE를 쓰면 먼 토큰 주의는 항상 줄어든다 → ✅ 실제: 차원쌍별 주파수가 달라 장거리 연결을 유지하도록 일부 축은 느리게 회전한다.
대화에서는 이렇게
- "이번 릴리즈에서 RoPE 각도 스케줄 바꾸니 중장거리 attention이 덜 붕괴합니다. 실험 로그 공유할게요."
- "사인/코사인 PE 대비 RoPE로 바꾸니 요약 벤치에서 순위 변동이 줄어들었어요. 상대 위치 일관성이 오른 듯합니다."
- "학습형 절대 PE는 컨텍스트 확장에 취약해서, 이번엔 RoPE+스케일 조정으로 가보죠."
- "디버그 결과, 히든에 위치를 더하는 대신 Q·K만 회전하니 의미 표현이 안정적입니다."
- "리뷰 포인트는 두 개: (n−m) 의존성 유지 확인, 그리고 장거리 축 회전 주파수 튜닝입니다."
함께 읽으면 좋은 용어
참고 자료
- RoFormer: Enhanced Transformer with Rotary Position Embedding
RoPE를 도입한 원 논문과 이론 곡선 제시.
- Attention Is All You Need
사인/코사인 절대 위치 인코딩을 제안한 트랜스포머 논문.
- RoPE, Clearly Explained
RoPE 직관, 회전 각도와 고차원 직관 정리.
- A deep-dive into RoPE, and why it matters?
⟨R(m)q,R(n)k⟩=⟨R(n−m)q,k⟩ 유도와 구현 요지.
- An In-depth exploration of Rotary Position Embedding (RoPE)
원리와 시각화, 적용 사례 개요.