본문 바로가기
Paper Review/Diffusion Transformer

[개념 설명] Positional Encoding - Transformer 이해하기 (1)

by kongshin 2025. 3. 11.
  • Transformer 구조를 이해하기 전, 다양한 기법들에 대해 하나씩 작성해볼 예정
  • 위치 정보를 입력하는 방법 중 하나인 Positional Encoding에 대해 알아볼 예정
  • Transformer에는 위치 정보를 입력하기 위해 Positional Encoding 중 Sinusoida Encoding 방법을 사용함

Just count

  • 숫자가 너무 빨리 증가하여 Weight가 커지고, gradient vanishing이나 gradient explosion 등 학습이 불안정

 

Noramlize the “Just count”

  • x / (max len -1)
  • 0~1 사이 값으로 안정적인 학습 but encoding vector의 길이가 다른 두 vector의 동일한 position 값이 다름

 

Using binary

  • 0~1 사이 값 & 길이가 다른 encoding vector의 동일 위치 값이 같음
  • But (0,0) → (0,1) [1] // (0,1) → (1,0) [$\sqrt2$] // (1,0) → (1,1) [1] ⇒ 동일 간격의 거리가 다름

 

Using continous binary vector

  • -1 ~ 1사이를 연속적이고 부드럽게 움직이는 함수 ⇒ Sine 이용
  • n차원 positional encoding ⇒ n개의 주기가 다른 sine 함수들로 vector encoding
    • ⇒ 일정 step마다 positional vector가 동일해지는 경우 발생

  • $y_1=sin(\frac{\pi}{2}x_i)$, $y_2=sin(\frac{\pi}{4}x_i)$, $y_3=sin(\frac{\pi}{8}x_i)$
  • $x_i$=0 → (0,0,0) & $x_i$=8 → (0,0,0)

 

Sinusoidal Encoding

  • 기존 방법은 주기가 $2^n$배이기에 발생한 문제 ⇒ $10000^{\frac{2k}{d}}$의 주기이므로 중복 문제 해결
  • cosine함수를 함께 사용하면 Translation operator 정의 o ⇒ Transformer 내적에서 유용한 성질