[NLP] Position Encoding 이해하기

김성윤(Jack)·2025년 12월 15일

NLP

목록 보기
30/35

Attention Is All You Need: Position Encoding과 추가 기법들

1. 차원은 한 row(행)에 대한 여러 column(열)이다

  • 벡터의 고유성을 이해하기 위해 차원에 대해서 저는 다음과 같이 생각했습니다.
  • "각 차원이 독립된 평행세계처럼 동작한다”
  • 정확하게 말하자면 차원은 평행세계라기보다 하나의 위치를 각기 다른 정밀도(차원)로 측정하는 '측정 도구' 모음이라고 합니다.

예컨대, 이를 Attention 논문에 나오는 Position Encoding에 대입해보면:

  • 저차원(0, 1번 등): 주기가 짧은 sin/cos 함수. 눈금이 촘촘한 **'밀리미터(mm) 자'**처럼 바로 옆 단어와의 미세한 차이를 구분해 줍니다.
  • 고차원(510, 511번 등): 주기가 매우 긴 sin/cos 함수. 눈금이 큼직한 **'킬로미터(km) 자'**처럼 멀리 떨어진 단어와의 거시적인 관계를 알려줍니다.

결국 하나의 포지션 벡터는, 수백 개의 각기 다른 자로 한 위치를 동시에 측정한 값들의 집합입니다. 이 다양한 측정값의 조합 덕분에 모델은 위치를 종합적이고 풍부하게 이해할 수 있게 됩니다.


2. Position Encoding으로 만들어진 두 벡터는 완전히 같은 벡터만 아니면 된다

  • Position Encoding의 첫 번째 목표는 각 단어의 위치에 고유한 '주소'를 부여하는 것입니다.
  • 이 목표를 달성하기 위해서는 서로 다른 위치(pos1pos_1, pos2pos_2)의 Position Encoding 벡터(PE(pos1)PE(pos_1), PE(pos2)PE(pos_2))가 전체적으로 다르기만 하면 된다는 점이었습니다.
  • 512개의 모든 좌표값이 전부 다를 필요는 없었고, 단 하나라도 달라서 두 벡터가 다른 점을 가리키게 만들면 충분합니다.

3. [증명 1] Position Encoding 증명: 두 위치의 벡터가 같은가?

증명 방법 : 귀류법 (Proof by Contradiction)

1. 가정 (Assumption)

서로 다른 두 위치 pos1pos_1pos2pos_2 (pos1pos2pos_1 \neq pos_2)에 대해, 두 Position Encoding 벡터가 동일하다고 가정합니다.

위치 차이를 k=pos2pos1k = pos_2 - pos_1 (kk는 0이 아닌 정수)라고 둡니다.

2. 조건 도출 (Deriving the Condition)

벡터가 동일하려면 모든 차원(ii)에서 그 값이 같아야 합니다. 파장의 역수를 나타내는 항을 다음과 같이 정의합니다.

wi=1100002i/dmodelw_i = \frac{1}{10000^{2i/d_{model}}}

이때, 모든 ii에 대해 다음이 성립해야 합니다. 두 삼각함수 값이 동시에 같으려면, 두 각의 차이가 2π2\pi의 정수배여야 합니다.

pos1+kwipos1wi=kwi=2πni(단, ni는 정수)\frac{pos_1 + k}{w_i} - \frac{pos_1}{w_i} = \frac{k}{w_i} = 2\pi n_i \quad (\text{단, } n_i\text{는 정수})

3. 모순 발견 (Finding the Contradiction)

위 조건은 모든 차원 ii에 대해 성립해야 하므로, 임의의 서로 다른 두 차원 iijj에 대해서도 성립해야 합니다. 양변을 정리하여 정수 ni,njn_i, n_j의 비율을 구하면 다음과 같습니다.

njni=wjwi=100002(ji)dmodel\frac{n_j}{n_i} = \frac{w_j}{w_i} = 10000^{\frac{2(j-i)}{d_{model}}}

여기서 모순이 발생합니다.

  • 좌변 (njni\frac{n_j}{n_i}): 0이 아닌 두 정수의 비율이므로 반드시 유리수입니다.
  • 우변: 밑이 정수이고 지수가 유리수인 이 값은 일반적으로 무리수입니다.
  • (유리수) = (무리수) 라는 등식은 성립할 수 없으므로, 명백한 모순입니다.

Note: 근사값으로 대체해서 같은 값이 나올 수도 있지만, 이는 극단적으로 낮은 확률입니다.

4. 결론 (Conclusion)

초기 가정이 모순으로 귀결되므로, 가정은 거짓입니다.
따라서 서로 다른 두 위치 pos1pos_1pos2pos_2의 Position Encoding 벡터 PE(pos1)PE(pos_1)PE(pos2)PE(pos_2)는 절대로 같을 수 없습니다.


4. [증명 2] 다른 포지션 - 같은 차원 값의 일치 여부

증명 대상 : pos1pos2pos_1 \neq pos_2일 때, 특정 차원 jj에 대해 PE(pos1,j)PE(pos2,j)PE(pos_1, j) \neq PE(pos_2, j)이다.
증명 방법 : 귀류법 (Proof by Contradiction)

1. 가정 (Assumption)

pos1pos2pos_1 \neq pos_2인 두 위치에 대해, 특정 차원 jj의 값이 같다고 가정합니다.
k=pos2pos1k = pos_2 - pos_1 (kk는 0이 아닌 정수)라고 둡니다.

2. 모순 도출 (Deriving Contradiction)

함수를 fj(pos)=PE(pos,j)f_j(pos) = PE(pos, j)라고 할 때, 가정은 fj(pos1)=fj(pos1+k)f_j(pos_1) = f_j(pos_1 + k)입니다. 삼각함수의 성질에 의해 다음 두 가지 경우 중 하나여야 합니다.

Case 1: 주기의 정수배 차이
kwj=2πn\frac{k}{w_j} = 2\pi n
k=2πnwjk = 2\pi n w_j

Case 2: 대칭성 (Sine 함수 기준)
pos1wj=πpos1+kwj+2πn\frac{pos_1}{w_j} = \pi - \frac{pos_1 + k}{w_j} + 2\pi n
2pos1+k=(무리수 포함 항)2pos_1 + k = (\text{무리수 포함 항})

위 모든 경우에서 등식의 좌변(kk 또는 2pos1+k2pos_1+k)은 정수입니다. 하지만 우변은 초월수인 π\pi를 포함하므로 무리수입니다.

(정수)=(무리수)\text{(정수)} = \text{(무리수)}

라는 명백한 모순이 발생합니다.

3. 결론 (Conclusion)

초기 가정이 거짓이므로, 같은 차원에서는 서로 다른 두 위치의 값이 절대로 같을 수 없습니다.


5. [증명 3] 다른 포지션 - 다른 차원 값의 일치 여부

증명 대상 : pos1pos2pos_1 \neq pos_2이고 jkj \neq k일 때, PE(pos1,j)=PE(pos2,k)PE(pos_1, j) = PE(pos_2, k)인 경우가 존재할 수 있다.
증명 방법 : 구성적 증명 (Constructive Proof) - 해의 존재를 보입니다.

1. 목표 설정 (Goal)

우리는 아래 등식을 만족하는 정수 해 (pos1,pos2pos_1, pos_2)가 존재하는지 확인하면 됩니다.

sin(wjpos1)=sin(wkpos2)\sin(w_j \cdot pos_1) = \sin(w_k \cdot pos_2)

2. 해의 존재 증명 (Proof of Existence)

  1. 값의 범위 (Range): sin 함수와 cos 함수의 치역(range)은 모두 [-1, 1]로 동일합니다.
  2. 임의의 값 선택: sin(pos₁/w_i) 함수를 생각해 봅시다. pos1pos_1이 정수 값을 가지며 변할 때, 이 함수의 결과값은 [-1, 1] 사이의 수많은 값을 만들어냅니다. 예를 들어, pos1=1,i=0pos_1=1, i=0일 때, C=sin(1)0.841C = \sin(1) \approx 0.841 이라는 특정 값을 생성할 수 있습니다.
  3. 사이값 정리 (Intermediate Value Theorem): 이제 g(y)=sin(wky)g(y) = \sin(w_k \cdot y)라는 함수를 봅니다. 이 함수는 연속 함수이며, 치역은 [-1, 1]입니다. 우리가 찾은 값 C0.841C \approx 0.841은 이 치역 안에 있습니다. 따라서 사이값 정리에 의해 g(y0)=Cg(y_0) = C를 만족하는 실수 y0y_0는 반드시 존재합니다.
  4. 정수 해의 근접성: 우리가 필요한 것은 정수 pos2pos_2입니다. g(y)g(y)는 연속 함수이므로, 실수 y0y_0에 가장 가까운 정수 pos2pos_2(예: floor(y₀) 또는 ceil(y₀))에 대한 함수 값 g(pos2)g(pos_2)CC에 매우 가깝습니다.

3. 결론 (Conclusion)

두 함수는 서로 다른 입력과 주기를 갖지만, 동일한 [-1, 1] 값의 범위를 공유합니다. 한 함수가 만들어내는 어떤 값이든, 다른 함수 역시 그 값 또는 그 값에 매우 가까운 값을 만들어내는 정수 입력을 찾는 것이 가능합니다.
따라서 서로 다른 차원과 다른 위치에서는 Position Encoding 값이 같아질 수 있습니다.


최신 Position 기술

1. Sinusoidal Positional Encoding (Transformer, 2017)

개요

Transformer의 "Attention is All You Need" 논문에서 처음 제안된 위치 인코딩 기법입니다. 토큰의 위치 정보를 사인(sine), 코사인(cosine) 함수의 주기성을 이용하여 표현합니다. 학습 파라미터가 없으며, 모델이 학습 과정에서 보지 못한 긴 문맥에도 적용할 수 있습니다.

수식

PE(pos,2i)=sin(pos/100002i/dmodel)PE(pos,2i+1)=cos(pos/100002i/dmodel)PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d_{model}}) \\ PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d_{model}})

작동 원리

  1. 각 위치는 서로 다른 주파수의 사인/코사인 값으로 매핑됩니다.
  2. 위치 인코딩 벡터를 입력 임베딩 벡터에 더하여 사용합니다.
  3. Self-attention 연산에서 내적(dot product)을 통해 토큰 간 상대적 위치 차이가 자연스럽게 반영됩니다.

장단점

  • 장점: 학습 파라미터가 없고, 외삽(Extrapolation, 학습 범위를 넘어선 영역까지 일반화)이 가능합니다.
  • 단점: 표현력이 단순하여 복잡한 구조를 학습하기 어렵습니다.

2. Relative Position Encoding (2018~2019)

개요

Shaw et al.(2018)과 Transformer-XL에서 제안된 방식으로, 절대 위치 대신 토큰 간의 상대적 거리를 인코딩합니다. 긴 문맥에서 반복 패턴이나 종속 구조를 학습하는 데 유리합니다.

수식

Attention(Q,K,V)=softmax(QKT+Sreldk)VAttention(Q, K, V) = softmax(\frac{Q K^T + S_{rel}}{\sqrt{d_k}})V

(query가 key를 찾을 때, key와의 거리를 반영한다고 생각하면 됩니다.)

작동 원리

  1. 각 query와 key 쌍의 위치 차이 (iji-j)를 상대적 위치 임베딩으로 변환합니다.
  2. 이 임베딩을 attention score 계산 과정에 포함합니다.
  3. 모델은 “얼마나 떨어져 있는 토큰인가”를 직접적으로 고려할 수 있습니다.

장단점

  • 장점: 문맥 길이에 대해 더 나은 일반화, 반복 패턴 학습에 강함.
  • 단점: 구현 복잡성이 증가합니다.

3. Rotary Positional Embedding (RoPE, 2021)

개요

RoPE는 토큰의 위치를 벡터 회전(rotation) 연산을 통해 반영합니다. 쌍마다 복소수 평면 상의 회전으로 처리되며, Q와 K의 내적 연산에서 상대적 위치 정보가 자연스럽게 반영됩니다. GPT-NeoX, LLaMA 등 최신 대규모 언어 모델에서 표준적으로 사용됩니다.

수식

(q0q1)=(cosmθsinmθsinmθcosmθ)(q0q1)\begin{pmatrix} q'_0 \\ q'_1 \end{pmatrix} = \begin{pmatrix} \cos m\theta & -\sin m\theta \\ \sin m\theta & \cos m\theta \end{pmatrix} \begin{pmatrix} q_0 \\ q_1 \end{pmatrix}

작동 원리

  1. Query, Key 벡터의 각 차원을 2차원 쌍으로 묶어 회전시킵니다.
  2. 위치에 따라 각 벡터가 다른 각도로 회전합니다.
  3. 회전된 Q, K 벡터의 내적은 상대적 위치 차이를 반영합니다.

장단점

  • 장점: 상대적 위치 정보가 자연스럽게 반영되며, 긴 문맥 처리에 강합니다.
  • 단점: 약간의 연산 오버헤드가 존재합니다.

4. ALiBi (Attention with Linear Biases, 2022)

개요

ALiBi는 위치를 벡터로 임베딩하지 않고, attention score에 선형적인 bias를 직접 더합니다. 단순하면서도 긴 문맥 extrapolation 성능이 뛰어나다. GPT-3.5/4, Falcon, MPT 등 긴 문맥 모델에서 사용됩니다.

수식

Attention(qi,kj)=qiTkjmijAttention(q_i, k_j) = q_i^T k_j - m \cdot |i - j|
  • 작은 slope (mm) → 긴 거리도 무시하지 않고 attention 가능
  • 큰 slope (mm) → 가까운 거리 위주로 attention 집중

작동 원리

  1. Self-attention score 계산 시, 토큰 간 거리에 따라 선형적으로 감소하는 bias를 추가합니다.
  2. 가까운 토큰은 점수가 유지되고, 먼 토큰은 점수가 억제됩니다.
  3. 별도의 위치 임베딩 벡터가 필요 없으므로 효율적입니다.

장단점

  • 장점: 구현이 단순하고 메모리 효율적이며 긴 문맥 확장에 매우 강력합니다.
  • 단점: 구조 정보가 단순히 선형 패널티 형태로만 반영됩니다.

종합 비교

기법아이디어수식 특징장점단점
Sinusoidal (2017)사인/코사인 주파수위치별 사인/코사인 값단순, 외삽 가능표현력 제한적
Relative (2018~19)상대적 거리 반영Attention score에 상대 임베딩 추가반복 구조 학습 강함구현 복잡
RoPE (2021)회전(복소수 표현)Q, K 회전 후 내적긴 문맥 강력, LLM 표준연산량 소폭 증가
ALiBi (2022)선형 biasScore에 거리 기반 항 추가빠름, 긴 문맥에 안정적구조 표현 단순

5. SeqPE (Sequential Positional Encoding, 2025)

논문 링크: https://arxiv.org/pdf/2506.13277

개요

SeqPE는 기존 위치 인코딩 기법이 갖는 한계를 극복하기 위해 제안된 새로운 접근법입니다. 기존의 Sinusoidal, RoPE, ALiBi 등이 위치를 단순한 주기 함수, 회전, 선형 bias 등으로 표현하는 것과 달리, SeqPE는 위치를 연속적(Sequential) 구조로 학습하여 표현합니다.

즉, 위치를 단순한 “좌표”로 보지 않고, 시퀀스 전체의 맥락 속에서 위치 간의 관계를 학습적으로 모델링하는 방식입니다.

수식 (개념적 표현)

hpos=f(hpos1,Δpos)h_{pos} = f(h_{pos-1}, \Delta pos)

(이전 위치 상태와 변화량을 통해 현재 위치를 갱신)

작동 원리

  1. 첫 번째 위치(예: [CLS] 토큰)는 초기 상태에서 시작합니다.
  2. 각 다음 위치의 인코딩은 직전 위치의 인코딩과, 위치 차이를 반영하는 신호를 입력으로 받아 갱신됩니다.
  3. 전체 시퀀스의 위치 표현이 일종의 **연쇄적 구조(chain structure)**로 만들어집니다.
  4. 이렇게 하면 단순히 “몇 번째인지”만 아는 것이 아니라, 시퀀스의 순차적 패턴이 그대로 위치 인코딩에 반영됩니다.

장점

  • 단순한 좌표형 인코딩(Sinusoidal, ALiBi 등)에 비해 **순서성(sequentiality)**을 더 잘 반영합니다.
  • 긴 시퀀스에 대해서도 일반화 능력이 높습니다.
  • RoPE나 ALiBi 대비 더 유연하게 다양한 길이에 적응 가능합니다.

단점

  • 사인/코사인, RoPE, ALiBi보다 계산 비용이 약간 증가합니다.
  • 학습 가능한 구조이므로, Sinusoidal처럼 완전한 외삽은 어렵습니다.

기존 기법과의 비교

기법핵심 아이디어장점단점
Sinusoidal사인/코사인 주기 함수단순, 외삽 가능표현력 제한
Relative상대적 거리 임베딩반복 구조 학습구현 복잡
RoPEQ,K 벡터 회전긴 문맥 강력연산량 증가
ALiBi선형 bias 추가단순, 긴 문맥 안정구조 정보 단순
SeqPE순차적 관계 학습시퀀스 순서성 반영, 긴 문맥 적응계산량 증가, 외삽 제한

요약

  • SeqPE는 위치를 독립적으로 정의하는 것이 아니라, 시퀀스 내 위치 간 관계를 순차적으로 학습하는 방식입니다.
  • 기존의 “좌표형 위치 인코딩”보다 더 맥락적(contextual)인 위치 표현을 제공합니다.
  • 긴 문맥 처리와 일반화 성능을 동시에 확보하려는 최신 연구 동향을 반영합니다.
profile
AI 공부합니다

0개의 댓글