논문 및 개념 정리

[2021] ROFORMER: ENHANCED TRANSFORMER WITH ROTARYPOSITION EMBEDDING(RoPE)

Fine애플 2024. 6. 26. 17:04

 

 

RoPE를 소개한 논문의 내용을 간단히 정리하고자 한다.

 

1. 논문 내용

RoPE 이전의 모델들은 대부분 absolute & additive한 poisition embedding을 사용했었다.

RoPE는 relative & multiplicative한 방식으로 position embedding을 계산한다.

 

다음과 같이 $\textbf{q}_{m}, \textbf{k}_{n}, \textbf{v}_{n}$($m,n$은 position을 의미)가 있다고 하자.

이때 attention은 다음과 같이 계산된다.

 

Absolute Position Embedding의 경우 (1)을 계산할 때 다음과 같이 position 정보를 embedding에 더한다.

 

 

 

Rotary Position Embedding이 목표로 하는 특징은 벡터 내적이 position $m,n$의 relative한 위치정보를 담도록 하는 것이다.

 

방법은 $\textbf{q}, \textbf{k}$ 벡터를 position에 따라 다른 각도로 회전하는 것이다.

아래와 같이 2차원을 예시로 보자.

 

수식에서와 같이 $\textbf{x}_{m}, \textbf{x}_{n}$ 벡터를 rotary embedding을 해서 내적하면 $m-n$에 dependent한 내적값이 계산된다. 즉, 별도의 additive position embedding을 사용하지 않더라도 relative position embedding을 계산하게 되는 것이다.

 

2차원이 아닌 $d$ 차원으로 확장하면 다음과 같은 matrix 곱으로 표현할 수 있다.

 

$\textbf{q}, \textbf{k}$를 rotate시키는 것을 그림으로 표현하면 다음과 같다.

 

 

2. 그럼 구현은..?

수식 (15)의 matrix은 너무 sparse하기 때문에 논문 저자들은 다음과 같은 계산방식을 제안했다.($\otimes$는 vector outer product를 의미함)

 

그리고 $\theta_{i}$를 다음과 같이 정의했다.

 

즉 RoPE는 position 정보 $\textbf{m}$과 $\theta$를 계산하기 위한 $\textbf{base}$를 사용한다.

 

구체적인 계산 과정은 여기에 기깔나게 정리되어 있다.

(1) 파라미터 세팅

 

(2) position vector, $\theta_{i}$, 회전변환을 위한 cos, sin 벡터 정의

 

(3) $\textbf{q}, \textbf{k}$를 rotary embedding을 적용하여 계산

 

 

[참고자료]

 

 

728x90