PEpos={sin(pos/100002i/dmodel)cos(pos/100002i/dmodel)dim=2idim=2i+1 이므로, 특정 position p에서의 positional Encoding vector는
PEp=sin(p/100001/d)cos(p/100001/d)sin(p/100002/d)cos(p/100002/d)⋮sin(p/10000)cos(p/10000)=sin(ω1p)cos(ω1p)sin(ω2p)cos(ω2p)⋮sin(ωd/2p)cos(ωd/2p) pos 1차이의 거리를 계산하기 위해 회전 행렬을 다음과 같이 정의하자.
Mi(k)=[cos(ωik)−sin(ωik)sin(ωik)cos(ωik)] 그러면 k번째 이후의 positional encoding vector는
PEp+k=M1(k)⋮⋯M2(k)Md/2(k)sin(ω1p)cos(ω1p)sin(ω2p)cos(ω2p)⋮sin(ωd/2p)cos(ωd/2p) 하나의 i 에 해당하는 거리를 구하면
Dk,i=PEp+k,i−PEp,i=(Mi(k)−I)[sin(ωip)cos(ωip)] Dk,i⊤Dk,i=[sin(ωip)cos(ωip)](Mi(k)⊤−I)(Mi(k)−I)[sin(ωip)cos(ωip)] =[sin(ωip)cos(ωip)](2I−Mi(k)−Mi(k)⊤)[sin(ωip)cos(ωip)] =[sin(ωip)cos(ωip)][2−2cos(ωik)002−2cos(ωik)][sin(ωip)cos(ωip)] =2−2cos(ωik) 이것을 모든 i에 대해 더해 루트를 씌우자.
i=1∑d/2(2−2cos(ωik))=d−2i=1∑d/2cos(ωik) 이 값은 position p와는 무관하게 거리 k에 따른 값이다. 따라서 position 차이가 같다면 positional encoding vector의 거리 또한 거리가 항상 같다!
대표적으로, 1 position 차이나는 경우, k=1이고
d−2i=1∑d/2cos(ωi)