Self-attention의 큰 매력은 모든 단어를 동시에 처리하는 병렬성이지만, 이는 동시에 큰 약점도 됩니다.
「단어들의 순서 정보가 사라진다」는 점입니다.
「A가 B를 좋아한다」와 「B가 A를 좋아한다」는 단어 집합은 같지만 의미는 정반대인데, self-attention만으로는 둘을 구분하기 어렵습니다.
이 문제를 해결하기 위해 Transformer는 「위치 인코딩(positional encoding)」을 도입합니다.
각 단어의 임베딩에 「이 단어가 문장의 몇 번째 위치인지」를 알려 주는 작은 신호를 더해 주는 방식입니다.
이렇게 하면 같은 단어라도 위치에 따라 약간 다른 표현을 가지게 됩니다.
원래 Transformer 논문에서는 사인·코사인 함수로 만든 고정된 위치 인코딩을 썼습니다.
위치 1, 2, 3, ...에 대해 각각 다른 주기의 사인·코사인 값을 더해 위치 정보를 주는 영리한 설계였습니다.
임의의 길이까지 자연스럽게 확장된다는 장점이 있습니다.
이후 「학습 가능한 위치 임베딩」(BERT, GPT-2)이나 「상대적 위치 인코딩」(T5, Transformer-XL), 그리고 최근 LLM에서 표준이 된 「RoPE(Rotary Positional Embedding)」 같은 다양한 방법이 등장했습니다.
RoPE는 회전 행렬로 위치를 인코딩해 긴 컨텍스트로의 확장이 자연스러운 장점이 있습니다.
위치 인코딩은 Transformer의 「숨은 영웅」입니다.
작은 추가 신호일 뿐이지만, 이게 없으면 모델은 단어들의 순서를 전혀 인식하지 못합니다.
매우 긴 컨텍스트(100K~1M 토큰)를 다루는 최신 LLM의 주요 기술적 도전 중 하나가 「위치 인코딩이 긴 거리에서도 잘 작동하게 만드는 일」입니다.
한 줄 요약
위치 인코딩은 self-attention이 잃어버린 단어 순서 정보를 임베딩에 더해 주는 신호이며, 사인·코사인 → 학습형 → RoPE로 발전하며 긴 컨텍스트의 핵심 기술이 되었습니다.
더 알아볼 것
- 사인·코사인 위치 인코딩의 수학적 우아함
- RoPE — Llama가 채택한 회전 위치 인코딩
- ALiBi — 또 다른 긴 컨텍스트 기법