PART 4 · 강의 3/4

포지셔널 인코딩

트랜스포머에게 "순서"를 가르치는 방법

01

왜 포지셔널 인코딩이 필요할까?

트랜스포머의 치명적 결함

⚠️ 트랜스포머의 치명적 결함

트랜스포머의 어텐션 메커니즘은 순서에 무관(permutation invariant)합니다. "고양이가 쥐를 쫓았다"와 "쥐가 고양이를 쫓았다"를 구분할 수 없습니다! 단어의 의미만 보고 위치 정보는 완전히 무시됩니다.

위치 정보의 중요성

문장 A

"고양이를 쫓았다"

→ 고양이 = 주어(추적자)

문장 B

"고양이를 쫓았다"

→ 쥐 = 주어(추적자)

같은 단어들이지만 순서에 따라 의미가 완전히 달라집니다. 포지셔널 인코딩 없이는 두 문장을 구분할 수 없습니다.

💡 해결책

각 토큰의 위치 정보를 벡터로 인코딩하여 입력에 추가합니다. 이렇게 하면 같은 단어라도 위치에 따라 다른 표현을 갖게 됩니다.

02

사인/코사인 포지셔널 인코딩

원본 트랜스포머의 위치 인코딩

원본 트랜스포머 논문(2017)에서 제안한 방식입니다. 각 위치를 다양한 주파수의 사인과 코사인 파동으로 표현합니다.

수식

짝수 차원: PE(pos, 2i) = sin(pos / 100002i/d)
홀수 차원: PE(pos, 2i+1) = cos(pos / 100002i/d)
pos: 토큰 위치 | i: 차원 인덱스 | d: 전체 차원 수

🧪 파동 시각화

차원에 따라 파장이 달라집니다. 낮은 차원은 긴 파장, 높은 차원은 짧은 파장.

차원 (i) 0
i=0 (긴 파장) i=128 i=255 (짧은 파장)
━━ sin (짝수 차원) ━━ cos (홀수 차원)

📊 인코딩 히트맵

각 위치(행)와 차원(열)에 대한 인코딩 값. 색상은 값의 크기를 나타냅니다.

차원 (d) →
위치 (pos) ↓
+1 0 -1
🔑 사인/코사인의 장점
  • 값이 -1 ~ 1 사이로 정규화 (학습 안정성)
  • 인접 위치 간 대칭적이고 자연스러운 거리
  • 학습 파라미터 없음 (결정론적)
  • 이론적으로 무한한 길이에 일반화 가능
03

RoPE: 회전 위치 임베딩

현대 LLM의 표준

현대 LLM의 사실상 표준이 된 Rotary Position Embedding입니다. Llama, Mistral, Qwen 등 대부분의 최신 모델이 사용합니다.

💡 핵심 아이디어

위치 정보를 벡터를 회전시키는 것으로 인코딩합니다. Query와 Key 벡터를 위치에 따라 다른 각도로 회전시키면, 내적(dot product)이 자연스럽게 상대적 위치 차이만 반영합니다.

🔄 회전 시각화

같은 벡터가 위치에 따라 다른 각도로 회전합니다.

Position 0
θ = 0
Position 1
θ = 45
Position 2
θ = 90
Position 3
θ = 135

RoPE 회전 행렬

R(θ) = [cos(θ), -sin(θ)]
        [sin(θ), cos(θ)]
θ = position × base_angle
2D 부분공간마다 서로 다른 주파수로 회전

RoPE의 장점

📐

벡터 크기 보존

회전은 벡터의 크기를 변경하지 않아 학습 안정성 유지. cos²θ + sin²θ = 1

↔️

상대 위치 인코딩

Q·K의 내적이 자연스럽게 (pos_q - pos_k)만 반영. 절대 위치 불필요

📏

길이 외삽

기하학적 진행 덕분에 학습 때보다 긴 시퀀스에도 일반화 가능

🚀

파라미터 프리

학습 파라미터 없이 순수 수학 연산만으로 구현. 메모리 효율적

04

포지셔널 인코딩 비교

각 방식의 장단점

📌
학습된 위치 임베딩
BERT, GPT-2 (2018-2019)

각 위치에 대해 학습 가능한 벡터를 사용

  • 간단하고 직관적
  • 데이터에서 직접 학습
  • 최대 길이 고정 (512, 1024 등)
  • 학습 데이터 외 길이 일반화 불가
🌊
사인/코사인 인코딩
Transformer (2017)

다양한 주파수의 사인파로 위치 표현

  • 파라미터 없음
  • 이론상 무한 길이
  • ⚠️ 절대 위치 인코딩
  • ⚠️ 임베딩에 더해져 왜곡 가능
📊
ALiBi
BLOOM, Falcon (2022)

어텐션 점수에 선형 바이어스 추가

  • 매우 간단한 구현
  • 긴 시퀀스 일반화
  • ⚠️ RoPE 대비 성능 약간 하락
  • ⚠️ 일부 모델에서만 사용
05

포지셔널 인코딩의 진화

절대 위치에서 상대 위치로

2017

Sinusoidal Encoding

"Attention is All You Need" 논문에서 제안. 절대 위치를 사인/코사인 파동으로 인코딩.

2018-2019

Learned Positional Embedding

BERT, GPT-2에서 학습 가능한 위치 임베딩 사용. 고정 길이 제한이 문제로 부각.

2021

RoPE (Rotary Position Embedding)

RoFormer 논문에서 제안. 회전을 통한 상대 위치 인코딩. 이후 Llama, Mistral 등에서 채택.

2022+

ALiBi & 확장 기법

ALiBi, YaRN, NTK-aware 스케일링 등 더 긴 컨텍스트를 위한 다양한 확장 기법 등장.

SUMMARY

핵심 요약

❓ 필요한 이유

  • 어텐션은 순서 무관
  • "A가 B를"과 "B가 A를" 구분 불가
  • 위치 정보 추가 필수

🌊 사인/코사인

  • 원본 트랜스포머 방식
  • 다양한 주파수 파동
  • 절대 위치 인코딩

🔄 RoPE

  • 현대 LLM 표준
  • Q/K 벡터 회전
  • 상대 위치 자동 인코딩
🎓 다음 강의 예고

다음 강의에서는 트랜스포머 전체 구조를 살펴봅니다. 인코더, 디코더, FFN, Layer Normalization, Residual Connection 등 지금까지 배운 개념들이 어떻게 조합되는지 알아봅니다.

REF

참고 자료