피드로 돌아가기
Hugging Face BlogAI/ML
원문 읽기
Transformer 모델에서 위치 인코딩 방식을 Integer → Sinusoidal → Rotary Positional Encoding(RoPE)으로 단계적 진화시켜 최신 LLama 3.2에 적용
You could have designed state of the art positional encoding
AI 요약
Context
Self-Attention은 집합 연산이므로 순열 동등성을 가지며, 위치 정보 없이는 같은 토큰이 서로 다른 위치에서도 동일한 출력을 생성한다. 예를 들어 "The dog chased another dog"에서 두 개의 "dog" 토큰이 위치 정보 없이 전달되면 torch.nn.MultiheadAttention에서 identical한 출력을 반환하는 문제가 발생한다.
Technical Solution
- Integer Position Encoding: 토큰 위치를 정수값(0 → L)으로 임베딩 벡터에 직접 더하는 방식 도입 → 시퀀스 길이 변화에 따라 값 범위가 동적으로 변함으로써 일반화 실패
- Binary Position Encoding: 위치를 이진수로 변환하여 각 비트를 별도 차원에 할당 → 인접 위치 간의 수학적 관계가 복잡해짐
- Sinusoidal Position Encoding: 서로 다른 주파수를 가진 사인/코사인 함수를 차원별로 적용(θ = 10000으로 설정하여 약 63,000개 위치 지원) → 상대 위치 관계가 선형 변환으로 표현되도록 개선
- Rotary Positional Encoding(RoPE): 2D 평면에서 각도 회전으로 위치를 인코딩하고, Self-Attention의 Query-Key 내적에 회전 행렬을 적용 → 상대 위치 정보가 직접 내적 계산에 반영되고 다차원 공간으로 자연스럽게 확장 가능
Key Takeaway
Transformer의 위치 인코딩은 단순한 부가 기능이 아니라 Self-Attention의 근본적 약점을 해결하는 핵심 메커니즘으로 봐야 하며, 수학적 특성(선형성, 상대 위치의 결정론적 계산)에 기반해 단계적으로 설계할 수 있다. RoPE는 현재 최신 구현이나 DeepMind 분석에 따르면 저주파 대역 제거 같은 추가 개선 여지가 존재한다.
실천 포인트
Transformer 기반 모델을 개발할 때 위치 인코딩 선택 시 Property 1(위치별 고유 인코딩), Property 2(상대 위치의 선형 관계), Property 3(시퀀스 길이 일반화)을 평가 기준으로 삼으면, RoPE가 이 세 조건을 모두 만족하면서도 다차원 입력(이미지, 뇌스캔)으로 확장 가능함을 확인할 수 있다.