Attention is all you need 논문의 position encoding에 대한 설명입니다.

여기서 본 연구에서는 서로 다른 주파수인 사인(sine)과 코사인(cosine)함수를 사용합니다. 이 함수를 선택한 이유는 고정된 오프셋 k에 대해 PE(pos+k)가 PE(pos)의 선형함수로 표현될 수 있어, 모델이 상대적 위치에 따라 주목하는 것을 쉽게 학습할 수 있을것이라는 가설 때문입니다.

 

Attention is All You Need 논문에서는 위치 정보를 표현하기 위해  서로 다른 주파수를 가지는 사인(sine)과 코사인(cosine) 함수를 사용합니다.

이 함수를 선택한 이유는, 고정된 위치 차이 k에 대해  PE(pos+k)가 PE(pos)의 선형 함수(linear function)로 표현될 수 있기 때문입니다. 
즉, 모델이 두 위치 사이의 상대적 거리(relative position)를  보다 쉽게 학습할 수 있을 것이라는 가설에 기반하고 있습니다.
이 문장이 실제로 어떤 의미를 가지는지,  삼각함수와 벡터 회전 개념을 이용해 살펴보겠습니다.

 

벡터의 회전

 

고등학교때 삼각함수 정의를 이용하면 cos와 sin은 아래 수식처럼 정리할 수 있습니다.

만약, 대각선의 길이는 같고, 방향만 α + θ 로 회전한 새로운 좌표 x', y' 가 있다면 다음과 같이 표현할 수 있습니다.

여기서 삼각함수의 덧셈정리를 적용할 수 있습니다.

삼각함수 덧셈정리

 

뎃셈 정리를 이용하면

 

결과를 행렬식으로 표시하면

여기서 아래 행렬을 회전 행렬(Rotation Matrix) 이라고 합니다.  
이 행렬은 2차원 공간에서 벡터를 반시계 방향으로 θ 만큼 회전시킬 때 사용되는 행렬입니다.  
이때 벡터의 길이는 유지되고, 방향만 θ 만큼 변화합니다.

회전행렬

 

Sinusodial Positional Encoding에서 sin cos 함수를 사용하는 이유

Sinusoidal Positional Encoding에서 sin과 cos 함수를 함께 사용하는 이유는, 이들을 쌍으로 사용하면 위치가 k 만큼 증가할 때의 변화를 선형 변환(회전 행렬)의 형태로 표현할 수 있기 때문입니다.

논문에서 언급한 성질은 다음과 같이 나타낼 수 있습니다.

PE(pos+k) = R(k) · PE(pos)

여기서 R(k)는 위치 차이 k에만 의존하는 회전 행렬이며, 현재 위치 pos와는 무관합니다.

삼각함수의 덧셈 정리를 적용하면 다음과 같이 표현됩니다.

$$sin(pos + k) = sin(pos)cos(k) + cos(pos)sin(k)$$
$$cos(pos + k)= cos(pos)cos(k) − sin(pos)sin(k)$$

이를 행렬 형태로 나타내면, 위치가 k 만큼 떨어진 인코딩은 기존 인코딩에 회전 행렬을 적용한 것과 동일한 형태가 됩니다.

즉, "이 단어는 저 단어로부터 k 만큼 떨어져 있다"는 상대적 위치 정보가 선형 변환의 형태로 자연스럽게 표현됩니다.

이와 같이 위치 차이가 회전 행렬로 표현될 수 있다는 성질은, 이후 Rotary Positional Encoding(RoPE)의 핵심 아이디어로 확장됩니다.

+ Recent posts