회전 위치 임베딩 (rotary position embedding)
한 줄 정의: 질의와 키 벡터를 위치에 따라 회전시켜 상대적 거리 정보를 어텐션에 넣는 방법입니다.
쉽게 풀면
트랜스포머는 단어의 순서를 스스로 알지 못하므로 위치 정보를 따로 넣어 줘야 합니다. 이 방법은 위치 값을 더하는 대신, 벡터를 두 개씩 짝지어 위치에 비례한 각도만큼 회전시킵니다. 그러면 두 단어의 내적이 절대 위치가 아니라 두 위치의 차이에만 의존하게 되어, 모델이 상대적 거리를 자연스럽게 인식합니다.
왜 중요한가
상대 위치 정보를 추가 파라미터나 별도의 편향 항 없이 회전 연산만으로 구현하면서도 성능이 좋아, 최근 공개되는 주요 대규모 언어 모델의 사실상 표준 위치 표현이 되었습니다. 학습 때보다 긴 문맥으로 확장할 때 회전 주기만 조정하면 되는 유연성도 큰 장점입니다. 긴 문맥 처리 연구에서 반복적으로 등장하는 구성요소입니다.
논문에서는 이렇게 쓰입니다
"회전 위치 임베딩의 기저 주기를 조정하는 방식으로 학습 길이의 4배에 해당하는 문맥까지 성능 저하 없이 확장하였다."
회전 각도의 설정만 바꿔 학습 때보다 훨씬 긴 입력을 처리하게 만들었다는 뜻입니다.
조금 더 깊게 보면
임베딩 차원을 2차원 쌍으로 묶고 각 쌍에 서로 다른 주파수의 회전 행렬을 적용하는데, 이 회전이 직교 변환이므로 벡터의 크기는 보존됩니다. 회전 후 질의와 키의 내적이 위치 차이의 함수로 정리된다는 것이 핵심 성질입니다. 문맥 확장을 위해 위치 인덱스를 눌러 담는 위치 보간이나 주파수 대역별로 다르게 조정하는 기법들이 제안되어 널리 쓰입니다.
주의할 점
위치 인코딩이 사인·코사인 값을 임베딩에 더하는 절대 위치 방식을 가리키는 데 비해, 회전 위치 임베딩은 어텐션 계산 시점에 질의와 키를 회전시켜 상대 위치를 표현합니다. 값 벡터에는 적용하지 않는다는 점도 구현에서 자주 틀리는 부분입니다.