위치 인코딩 (Positional Encoding)

컴퓨터과학·AI
한 줄 정의: 트랜스포머 모델이 단어의 순서를 알 수 있도록, 각 단어의 위치 정보를 숫자 벡터에 더해서 함께 입력해 주는 기법입니다.

쉽게 풀면

"개가 고양이를 쫓았다"와 "고양이가 개를 쫓았다"는 완전히 다른 뜻이지만, 사용된 단어는 똑같습니다. 즉 단어의 순서가 의미를 결정합니다. 그런데 트랜스포머 모델의 핵심인 어텐션 메커니즘은 문장 속 모든 단어를 한꺼번에 놓고 서로의 관련성을 계산하기 때문에, 그 자체로는 "이 단어가 몇 번째에 있었는지"를 알지 못합니다. 위치 인코딩은 이 문제를 해결하기 위해 "1번째 자리", "2번째 자리"처럼 각 위치마다 고유한 숫자 패턴(주로 사인·코사인 곡선을 이용)을 만들어 단어의 벡터에 더해주는 방법입니다. 이렇게 하면 모델이 단어의 의미뿐 아니라 순서 정보까지 함께 파악할 수 있습니다.

왜 중요한가

위치 인코딩은 순서 정보를 스스로 처리하지 못하는 어텐션 메커니즘의 근본적인 한계를 보완하는 장치이기 때문에, 트랜스포머 기반 자연어처리 논문 대부분에서 아키텍처 설명의 필수 구성요소로 다뤄집니다. 이 개념은 문장 길이가 길어질 때의 일반화 성능, 비전 트랜스포머(ViT)의 이미지 패치 순서 처리 등 다양한 응용으로 확장되며, 최근에는 더 긴 문맥을 다루기 위한 위치 인코딩 개선 연구도 활발히 이루어지고 있습니다.

논문에서는 이렇게 쓰입니다

"본 아키텍처는 사인-코사인 함수 기반의 위치 인코딩(positional encoding)을 입력 임베딩에 더하여, 순서 정보가 없는 어텐션 연산에도 토큰의 상대적 위치가 반영되도록 하였다."

이 문장은 트랜스포머 모델이 단어 자체의 의미(임베딩)에 위치 정보를 더한 값을 입력으로 사용해, 어텐션 연산 과정에서도 단어의 순서를 함께 고려하도록 설계했다는 뜻입니다.

"비전 트랜스포머는 이미지를 패치 단위로 분할한 뒤 각 패치에 위치 인코딩을 추가하여 공간적 배치 정보를 모델에 전달하였다."

이미지 분류를 다루는 컴퓨터비전 논문에서 트랜스포머를 이미지에 적용할 때 위치 정보를 어떻게 처리했는지 설명하는 표현이다.

"긴 문맥 처리를 위해 회전 위치 인코딩(rotary positional encoding)을 도입함으로써 학습 시보다 긴 시퀀스에 대해서도 안정적인 성능을 유지하였다."

대규모 언어모델의 긴 문맥 처리 능력을 개선하는 연구에서 개선된 위치 인코딩 기법을 설명할 때 쓰인다.

조금 더 깊게 보면

원조 트랜스포머 논문에서는 학습되지 않는 고정된 사인·코사인 함수를 사용했지만, 이후 연구들은 위치 정보를 학습 가능한 파라미터로 두거나(학습형 위치 인코딩), 절대 위치 대신 토큰 사이의 상대적 거리를 반영하는 상대적 위치 인코딩, 회전 변환을 이용하는 로터리 위치 인코딩(RoPE) 등 다양한 변형을 제안했습니다. 이런 변형들은 특히 모델이 학습 때보다 훨씬 긴 문장을 처리해야 할 때의 일반화 성능과 밀접한 관련이 있어, 대규모 언어모델 논문에서 자주 비교 대상으로 다뤄집니다.

주의할 점

위치 인코딩은 임베딩과 다른 개념입니다. 임베딩이 "단어가 무슨 뜻인가"를 나타내는 벡터라면, 위치 인코딩은 "그 단어가 문장의 몇 번째에 있는가"를 나타내는 벡터로, 둘은 서로 더해져서 함께 모델에 입력됩니다.

관련 용어