위치 인코딩
위치 인코딩
위치 인코딩(Positional Encoding)은 셀프 어텐션이 본질적으로 순서 정보를 인식하지 못하는 문제를 해결하기 위해, 각 토큰의 임베딩에 위치 정보를 추가하는 방법이다.
핵심
- 원래 트랜스포머(Attention is All You Need)에서는 사인/코사인 함수로 위치 인코딩을 생성했다
- 절대 위치 인코딩: 각 위치에 고정된 또는 학습 가능한 벡터를 더한다
- 상대 위치 인코딩: 토큰 쌍 간의 상대 거리를 어텐션 계산에 반영한다
- RoPE(Rotary Positional Embedding)가 현대 LLM의 표준이 되었다
- 위치 인코딩이 없으면 트랜스포머는 단어 순서와 무관한 예측을 한다
수식
원래 트랜스포머: \[PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d}), \quad PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d})\]