위치 인코딩
IT 위키
위치 인코딩(位置encoding, Positional Encoding)은 트랜스포머(Transformer) 아키텍처에서 입력 시퀀스의 토큰 순서를 모델이 인식할 수 있도록 추가하는 벡터 표현이다. 순환 신경망(RNN)이나 합성곱 신경망(CNN)과 달리, 트랜스포머의 어텐션 메커니즘은 토큰 간의 순서를 직접적으로 고려하지 않기 때문에 위치 정보를 별도로 주입해야 한다.
개요[편집 | 원본 편집]
트랜스포머는 입력 시퀀스를 병렬적으로 처리하므로, 입력의 순서 정보를 자연스럽게 학습할 수 없다. 따라서 각 토큰 임베딩에 위치 인코딩 벡터를 더하거나(concatenation 대신 보통 덧셈 사용), 다른 방식으로 결합하여 모델이 토큰의 상대적/절대적 위치를 인식하도록 한다.
방식[편집 | 원본 편집]
- 고정 위치 인코딩(Fixed Positional Encoding)
- 원 논문에서 제안된 방식으로, 사인(sin)과 코사인(cos) 함수를 이용해 위치를 주기적으로 표현한다.
- 모든 길이에 대해 일반화가 가능하며, 추가 학습 파라미터가 필요 없다.
- 학습 가능한 위치 임베딩(Learnable Positional Embedding)
- 각 위치에 대해 임베딩 벡터를 학습하는 방식.
- BERT 등 여러 모델에서 사용된다.
- 최대 길이가 사전에 정해져야 한다는 제약이 있다.
- 상대적 위치 인코딩(Relative Positional Encoding)
- 토큰 간 절대적 위치가 아니라 상대적 거리를 반영하는 방식.
- Transformer-XL, T5, DeBERTa 등에서 사용되며, 긴 문맥 학습에 유리하다.
- 로터리 위치 임베딩(RoPE, Rotary Positional Embedding)
- 벡터 공간에서 회전을 통해 상대적 위치를 반영하는 방식.
- LLaMA, GPT-NeoX 등 최신 대규모 언어 모델에서 널리 쓰인다.
필요성[편집 | 원본 편집]
- RNN은 순차적으로 입력을 처리하므로 순서 정보가 자연스럽게 내재되어 있다.
- 반면 트랜스포머의 어텐션은 입력을 집합처럼 다루므로, 위치 정보가 없으면 "나는 밥을 먹었다"와 "먹었다 밥을 나는"이 동일하게 취급된다.
- 따라서 위치 인코딩을 통해 순서를 명시적으로 제공해야 문장의 의미를 올바르게 학습할 수 있다.
같이 보기[편집 | 원본 편집]
참고 문헌[편집 | 원본 편집]
- Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.
- Shaw, P., Uszkoreit, J., Vaswani, A. (2018). Self-Attention with Relative Position Representations. NAACL-HLT.
- Su, J., Lu, Y., Pan, S., Wen, Y., Liu, Y., Wang, T., Qi, Q., & Sun, M. (2021). RoFormer: Enhanced Transformer with Rotary Position Embedding. ACL.