AI/Fundamental

Transformer 모델 - Positional Encoding 포지셔널 인코딩에 대해서 알아보자.

방황하는 데이터불도저 2023. 12. 28. 18:05

Transformer 모델에서 사용되는 positional encoding은 시퀀스 내 단어의 상대적인 위치 정보를 주입하는 데 사용됩니다. 이것은 모델이 단어의 순서를 이해하고 효과적으로 처리할 수 있도록 돕습니다.
 
Transformer에서 주로 사용되는 positional encoding 방법 중 하나는 다음과 같은 싸인과 코사인 함수를 사용한 것입니다.

Positional Encoding 공식

  • PE는 positional encoding matrix의 요소입니다.
  • pos는 시퀀스에서 단어의 위치를 나타냅니다.
  • i는 encoding 차원(d_model) 내의 인덱스를 나타냅니다.
  • d_model은 모델의 임베딩 차원입니다.

positional encoding matrix 및 (pos, i)

 
positional encoding에서 사용되는 sin과 cos 함수 안에 대입되는 공식은 주기적인 패턴을 생성하기 위해 선택된 것입니다. 이 공식은 주기적인 값을 생성하면서도 서로 다른 위치에 대해 고유한 값을 생성하는 데 목적이 있습니다. 이러한 값들은 단어의 상대적인 위치를 임베딩 공간에 반영하여 Transformer 모델이 문장의 순서를 인식하도록 도와줍니다.
 
1. 주기적인 패턴 생성: sin과 cos 함수는 주기적인 패턴을 생성하므로, 위치 인코딩 값들이 서로 다른 주기를 가지게 됩니다. 이것은 각 차원이 서로 다른 위치 정보를 인코딩하는 데 도움이 됩니다.

2. 스케일링

 
 
는 위치 pos에 대한 스케일링 역할을 하며, 다양한 위치의 값을 생성합니다. 


3. 홀수/짝수 차원 구분: sin 함수는 짝수 차원을, cos 함수는 홀수 차원을 처리하여 차원 간 다양성을 확보합니다. 이렇게 함으로써 각 차원이 서로 다른 정보를 담당하게 되며, 모델이 단어의 상대적인 위치를 효과적으로 학습할 수 있도록 합니다.

위의 설명은 이러한 공식이 주로 경험적으로 발견된 것들이며, 왜 이러한 형태로 선택되었는지에 대한 엄밀한 이론적 설명은 아직까지 명확하게 밝혀진 것은 없는 상태입니다. Transformer의 positional encoding에 대한 연구는 계속 진행 중이며, 더 나은 위치 정보를 인코딩하는 방법에 대한 연구가 진행되고 있습니다.