본문 바로가기
Paper Review/Diffusion Transformer

[개념 설명] Sinusoidal encoding, Normalization - Transformer 이해하기 (2)

by kongshin 2025. 3. 11.
  • Transformer 구조를 이해하기 전, 다양한 기법들에 알아보기 2번째
  • Transformer에서 위치 정보를 입력하기 위해 사용되는 Sinusoidal Encoding과 Normarlization 방법을 알아볼 예정
  • Positional Encoding에 관한 자세한 설명은 아래의 post에 작성

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

 

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

Transformer 구조를 이해하기 전, 다양한 기법들에 대해 하나씩 작성해볼 예정위치 정보를 입력하는 방법 중 하나인 Positional Encoding에 대해 알아볼 예정Transformer에는 위치 정보를 입력하기 위해 Posit

kongshin00.tistory.com

 


Positional encoding - sinusoidal version

Positional encoding

  • Sequence 길이나 input에 상관없이 동일한 encoding value 유지
  • encoding value 너무 크면 안됨 ⇒ 단어 간의 상관관계나 의미정보 값이 상대적으로 줄어듦

 

Sigmoid 함수

  • 0 ~ 1 사이 값
  • 긴 문장의 sequence 경우, positional encoding value의 차이가 미미해지는 문제 발생

 

Sine & Cosine 함수 ⇒ sinusoidal version (Transformer)

  • $PE_{(pos, 2i)} = \sin( \frac{pos}{10000^{2i/d}}) = \sin(\omega_i \cdot pos)$
  • $PE_{(pos, 2i + 1)}= \cos \left( \frac{pos}{10000^{2i/d}} \right) = \cos(\omega_i \cdot pos)$
  • $\omega_i=\frac{1}{10000^{2i/d}}$

 

  • -1 ~ 1 사이를 주기적으로 반복 ⇒ 긴 문장의 sequence 경우에도, value 차이 작지 않음
  • Sine & Cosine 모두 사용
    • 다양한 주기를 사용하면 다른 위치의 동일한 encoding value 가질 확률 매우 낮음
    • $PE_{(pos+k, 2i)}$ 를 $PE_{(pos, 2i)}$ 의 linear function으로 표현 가능

[pf]

$PE_{(pos+k, 2i)} = \sin( \frac{pos+k}{10000^{2i/d}})=\sin(\omega_i \cdot(pos+k))= \sin(\omega_i\cdot pos)\cos(\omega_i \cdot k) + \cos(\omega_i\cdot pos)\sin(\omega_i \cdot k)$

 

$PE_{(pos+k, 2i + 1)}= \cos \left( \frac{pos+k}{10000^{2i/d}} \right)=\cos(\omega_i \cdot(pos+k))= \cos(\omega_i\cdot pos)\cos(\omega_i \cdot k) - \sin(\omega_i\cdot pos)\sin(\omega_i \cdot k)$

 

$\begin{pmatrix}PE_{(pos+k, 2i)}\\PE_{(pos+k, 2i+1)}\end{pmatrix} =\begin{pmatrix}\cos(\omega_ik) & \sin(\omega_ik) \\\sin(\omega_ik) & \cos(\omega_ik)\end{pmatrix} \begin{pmatrix}PE_{(pos, 2i)}\\PE_{(pos, 2i+1)}\end{pmatrix}$

 

$R(\omega_ik) =\begin{pmatrix}\cos(\omega_ik) & \sin(\omega_ik) \\-\sin(\omega_ik) & \cos(\omega_ik)\end{pmatrix}$

 

$\begin{pmatrix}PE(pos+k)_0 \\PE(pos+k)_1 \\\vdots \\PE(pos+k)_{511}\end{pmatrix} = \begin{pmatrix}R(\omega_0 k) & 0 & \cdots & 0 \\0 & R(\omega_1 k) & \cdots & 0 \\\vdots & \vdots & \ddots & \vdots \\0 & 0 & \cdots & R(\omega_{255} k)\end{pmatrix}\begin{pmatrix}PE(pos)_0 \\PE(pos)_1 \\\vdots \\PE(pos)_{511}\end{pmatrix}$

 

  • ⇒ $\omega_i$ 0~255인 이유

 

Sinusoidal version 이점

  • 위치 인코딩 값이 선형적으로 변함 ⇒ 모델이 위치 간의 관계를 일관성 있게 학습
  • 계산적 효율 증가
  • sequence 길이가 길어지더라도 안정적으로 작동
  • ⇒ 학습 중에 접하지 않은 긴 sequence도 position encoding value 추론 가능

Normalization

  • input: $x_i$, mean: $\mu$, var: $\sigma^2$
  • $\hat{x_i}=\frac{x_i-\mu}{\sqrt{(\sigma^2+\epsilon)}}$
  • $y_i = \gamma \hat{x_i} +\beta$
  • $\gamma$: scaling & $\beta$: shifting ⇒ learnable parameters

 

Batch Normalization(BN)

  • Batch 단위로 정규화 ⇒ 각 feature의 mean, var를 batch단위로 계산
  • 주로 CNN과 같이 Batch 단위로 처리되는 model에 사용
  • Pros
    • 내부 공변량 이동(internal covariate shift) 줄이고, 학습 안정화
      • Covariate shift: layer를 통과할 때마다 input의 분포가 조금씩 바뀌는 현상
    • learning rate 크게 설정하여 학습속도 증가
      • gradient vanishing/exploding 문제 해결 ⇒ learning rate에 덜 민감
  • Cons
    • Batch단위의 통계치를 사용하여 batch size의 의존
      • ex) Batch=1이면, variance는 0이 됨
      • test의 mean과 var은 running mean, variance를 사용하여 train과 다른 동작 수행
      • test 정규화: $\hat{x_i}=(x_i-\mu_{running})/(\sqrt{(\sigma^2_{running}+\epsilon)})$

 

Layer Normalization(LN)

Ba, Jimmy Lei, Jamie Ryan Kiros, and Geoffrey E. Hinton. "Layer normalization." arXiv preprint arXiv:1607.06450 (2016).

 

  • Layer 단위로 정규화 ⇒ 각 sample의 모든 뉴런에 대해 mean, var 계산
  • RNN과 같이 순차적 데이터 처리에 적합
  • Pros
    • 각 layer의 모든 뉴런에 대해 독립적으로 정규화 ⇒ batch size에 영향 X
    • RNN, Transformer 등의 신경망에서 잘 작동
  • Cons
    • BN에 비해 학습 속도 느릴 수 있음

 

Transformer LN 사용

  • Sequence data와 같이 각 time step마다 다른 배치를 형성하는 경우에도 일관된 성능
    • 여러 sequence 한번에 처리 ⇒ 각 sequence는 다른 길이를 가져 다른 배치를 형성
    • ex) A = [A1, A2, A3], B = [B1, B2]
    • time 1: [A1, B1] (batch size = 2)
    • time 2: [A2, B2] (batch size = 2)
    • time 3: [A3] (batch size = 1)
  • Sequence 길이가 변하는 경우에도 일관되게 작동
  • Sequence적 특성을 잘 유지
  • 각 self-attetion head의 output을 독립적으로 정규화 ⇒ 각 head의 output이 독특한 표현을 유지
    • BN사용시 각 head의 output 함께 정규화 진행