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와는 무관합니다.