주제: 3-3 Positional Encoding / Transformer 병렬화

분류: llm

타입: concept

난이도: 중급

선수지식: 있음 — Self-Attention, 행렬곱

문제 설정

Transformer의 Self-Attention은 입력 토큰을 동시에 처리합니다. 하지만 이 방식에는 한 가지 문제가 있습니다.

토큰의 순서 정보가 사라집니다.

예:

I love you
you love I

Self-Attention만 사용하면 두 문장은 동일한 토큰 집합으로 처리됩니다.

이를 해결하기 위해 사용하는 방법이 Positional Encoding입니다.

직관 비유

1. Transformer 입력

Transformer 입력은 다음 두 정보를 결합합니다.

X=E+P

기호 의미

왜 필요한가

토큰의 순서를 모델이 이해할 수 있도록 합니다.

주의점

positional encoding은 embedding 차원과 동일해야 합니다.

2. Sinusoidal Positional Encoding

Transformer 논문에서는 사인/코사인 함수를 사용했습니다.

PE(pos,2i)=sin(pos/10000(2i/d))
PE(pos,2i+1)=cos(pos/10000(2i/d))

기호 의미

왜 필요한가

각 위치가 고유한 벡터를 갖도록 합니다.

주의점

positional encoding은 학습 파라미터가 아닙니다.

3. 위치 정보 직관

예:

token1 -> pos 1
token2 -> pos 2
token3 -> pos 3

각 위치에 고유한 encoding 벡터가 추가됩니다.

embedding + position

결과적으로 모델은 단어 순서를 학습할 수 있습니다.

4. Relative Position 정보

sin/cos encoding의 중요한 특징:

두 위치 간 관계를 계산할 수 있습니다.

PE(pos+k)

-> 상대 위치 정보 표현 가능

왜 중요한가

문장에서 단어 간 거리 정보를 모델이 학습할 수 있습니다.

5. Transformer 병렬화

Transformer의 큰 장점은 완전 병렬 계산입니다.

Self-attention 연산:

Attention(Q,K,V)=softmax(QK/dk)V

이 연산은 모든 토큰에 대해 동시에 계산됩니다.

기호 의미

왜 가능한가

RNN처럼 이전 토큰 계산을 기다릴 필요가 없습니다.

6. RNN vs Transformer

모델 연산 방식
RNN 순차 계산
Transformer 병렬 계산

예:

RNN
x1 -> x2 -> x3 -> x4

Transformer
x1 x2 x3 x4 (동시 계산)

7. 병렬화 장점

주의점

Self-Attention 계산량은 O(n²)입니다.

8. 전체 Transformer 입력 흐름

텍스트
↓
Tokenization
↓
Token Embedding
↓
Positional Encoding
↓
Self-Attention

코드-수식 연결

수식 PyTorch 코드 설명
X = E + P x = embedding + position 위치 정보 결합
sin(pos/...) torch.sin() sin positional encoding
cos(pos/...) torch.cos() cos positional encoding

자주 하는 오해 5개

체크리스트 (스스로 설명 가능해야 하는 질문)