오늘의 토픽으로 들어가기 전에 지난 글을 빠르게 복습해 보겠습니다. LLM 세계의 대부 같은 모델, Transformer의 핵심은 self-attention이었죠. self-attention은 타겟 단어 앞/뒤의 모든 단어를 동시에 고려할 수 있어서, 왼쪽에서 오른쪽으로 프로세싱을 하는 이전의 모델들보다 좋은 성능을 보인다고 배웠습니다.
단, 지난 글에서 언급하지 않은 중요한 디테일이 하나 있는데요. 바로, self-attention은 position-agnostic, 즉 이웃 단어들의 정확한 위치를 알지 못한다는 점입니다 [2]. 즉, 이웃 단어들의 존재유무만 알 뿐 그 단어가 내 앞에 있는지, 그렇다면 얼마나 떨어져 있는지에 대한 개념이 없습니다.
Position Embedding
하지만, 문장에서는 단어의 순서가 매우 중요하죠. 아래 두 문장이 단어 순서에 따라 내포하는 의미가 확 달라지는 것처럼요.
"나는 항상 빵을 먹는다" -> 다른 음식이 아닌 빵을 주로 먹는다.
"나는 빵을 항상 먹는다" -> 빵을 자주 먹는 습관이 있다.
그래서 Transformer 모델은 단어의 "위치"에 대한 개념을 학습하기 위해 position embedding, 즉 "위치에 관한 벡터"를 단어 벡터 (word embedding)에 더합니다. 이렇게 되면 같은 단어이더라도 위치에 따라 다른 벡터값을 가지게 됩니다.
Absolute Position Embedding
Position Embedding을 만드는 방법에는 크게 두 가지가 있습니다. 첫 번째는 단어의 절대적인(absolute) 위치를 사용하는 방법입니다. 가장 유명한 absolute position embedding은 삼각비(코사인, 사인)를 활용한 임베딩입니다 (Transformer 논문에서 제시한 방법). 아래와 같은 아름다운 그림이 만들어지죠.
Relative Position Embedding
두번째 방법은 단어의 상대적(relative)인 거리를 활용하는 방법입니다. 문장 속에서 어떤 단어의 의미를 유추할 때, 저 멀리 떨어진 단어보다는 상대적으로 가까운 단어에 가장 많이 주의(attention)를 기울여야 하죠. Relative Position Embedding을 활용하여 모델을 학습시키면 가까운 거리에 있는 단어를 더 많이 고려하도록 만들 수 있습니다.
RoPE (Rotary Position Embedding)
오늘의 메인 주제인 RoPE는 단어의 절대적 위치와 다른 단어들과의 상대적 거리를 모두 고려할 수 있습니다. 즉, 위의 두 방법론을 하나로 합쳐버린 것이죠. 그리고 이는 "벡터의 회전(rotary)"이라는 생각보다 간단하지만 매우 기발한 아이디어로 구현가능 했습니다. position embedding을 단어 벡터에 "더하기"를 하는 대신, 단어 벡터를 거리에 따라 다른 각도로 "회전"을 시키는 것입니다.
선형대수를 공부하신 분이라면 익숙하겠지만, rotation matrix를 활용하면 쉽게 벡터를 회전시킬 수 있습니다. 논문에서 제시하는 rotation matrix는 아래와 같습니다. m은 단어의 절대적 위치를 나타내고 θ는 미리 정해진 각도값입니다. 복잡한 수학 증명을 제외하고 결론으로 가자면, 이렇게 각 벡터를 회전시키고 나면 가까운 단어들은 각도가 작고 서로 멀리 있는 단어끼리는 두 벡터의 각도가 커지게 됩니다.
RoPE가 처음 적용된 모델은 같은 논문에 소개된 RoFormer 모델입니다. 저자들은 여러 벤치마킹 데이터를 통해, Roformer가 RoPE를 사용하지 않은 이전 모델들에 비해 긴 텍스트에 좋은 성능을 보임을 증명했습니다. 그 이후로도 RoPE는 라마, Mistral 등 최신의 언어 모델에도 활용되고 있습니다.
원본 논문에 보면 rotation matrix가 어떻게 단어간의 상대적 거리를 나타낼 수 있는지 수학적으로 증명하고 있는데요. 증명을 읽어나가다 보면, 이런 아이디어를 생각해 낸 저자들의 비상함에 다시 한번 놀라게 됩니다. 다음엔 또 어떤 기발한 아이디어가 있을지 기대하며 다음 글에서 뵙겠습니다. :)
한 판 정리 - RoPE는 단어의 절대적, 상대적 거리를 모두 고려 - rotation matrix을 이용하여 벡터를 회전시킴으로써 단어 사이 거리를 나타냄 |
Reference
[1] RoFormer: Enhanced Transformer with Rotary Position Embedding (Su et al., 2023)
[2] Are Transformers Universal Approximators of Sequence-to-Sequence Functions? (Yun et al., 2020)
'LLM' 카테고리의 다른 글
[Attention] Sliding Window Attention 슬라이딩 윈도우 어텐션 (0) | 2025.02.15 |
---|