■ 위치 인코딩(position encoding)은 트랜스포머 아키텍처에서 효과적임을 보여왔다.
■ 위치 인코딩은 시퀀스 내 다른 위치에 있는 요소들(단어 또는 토큰) 간의 의존성을 모델링하는 데 중요한 역할을 한다.
■ 이 논문에서는 로터리 위치 임베딩(Rotary Position Embedding, RoPE)이라는 새로운 방법을 제안한다.
■ RoPE는 회전 행렬(rotation matrix)로 절대 위치를 인코딩하는 동시에, 토큰과 토큰 사이의 상대적인 위치 정보를 나타낼 수 있다.
■ 즉, RoPE는 상대 위치에 기반하기 때문에, 훈련 시 본 적 없는 더 긴 시퀀스에 대해서도 위치 정보를 자연스럽게 계산할 수 있다.
■ 마지막으로, RoFormer라고 불리는 로터리 위치 임베딩으로 강화된 트랜스포머를 다양한 장문 텍스트 분류 벤치마크 데이터셋에서 평가한다. (RoFormer: https://huggingface.co/docs/transformers/model_doc/roformer)
[2104.09864] RoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position Embedding
Position encoding recently has shown effective in the transformer architecture. It enables valuable supervision for dependency modeling between elements at different positions of the sequence. In this paper, we first investigate various methods to integrat
arxiv.org
1. INTRODUCTION
■ 자연어 이해에 핵심은 단어의 순차적인 순서이다. 순환 신경망(RNN) 기반 모델들은 시간 차원을 따라 순환적인 은닉 상태를 계산함으로써 토큰의 순서를 인코딩하였다.
■ 트랜스포머를 기반으로 구축된 사전학습된 언어 모델(pre-trained language model, PLM)은 문맥 표현(context representation) 학습, 기계 번역, 그리고 언어 모델링 등 다양한 NLP 태스크에서 SOTA를 달성했다.
■ RNN 기반 모델과 달리, PLM은 주어진 코퍼스의 문맥적 표현을 담기 위해 셀프 어텐션(self-attention) 메커니즘을 활용한다.
■ 그 결과, PLM은 RNN에 비해 병렬화 측면에서 상당한 개선을 달성하고, 더 긴 토큰 간의 관계를 모델링하는 능력을 향상시킬 수 있었다.
■ 단, 현재 PLM의 셀프 어텐션은 위치에 무관(position-agnostic)하다.
- 셀프 어텐션은 문장 내 모든 단어(토큰) 간의 연관성을 계산하지만,
- 이 계산 과정 자체는 '몇 번째 단어'인지, '두 단어가 얼마나 떨어져 있는지'에 대한 정보가 전혀 포함되어 있지 않다.
■ 이 문제를 해결하기 위해, 위치 정보를 학습 과정에 인코딩하기 위한 다양한 접근법들이 제안되어 왔다.
- 먼저, 트랜스포머 원 논문에서는 사인파 함수를 통해 미리 계산된 값을 문맥 표현에 더하는 절대 위치 인코딩(absolute position encoding)을 사용하였다.
- 이후에는 위치 자체를 학습하도록 하는 학습 가능한(trainable) 절대 위치 인코딩 방식이 등장하였다.
- 더 나아가, 상대 위치 정보를 어텐션 메커니즘 자체에 인코딩하는 상대 위치 인코딩(relative position encoding) 방식이 제안되었다.
■ 이러한 접근법들 외에도 다양한 접근법들(예: Transformer-XL, T5 Bias, DeBERTa, 복소 공간(complex space) 이용 등)이 제안되었지만, 이들은 공통적으로 위치 정보를 문맥 표현에 "더하는 방식"을 사용하며, 이로 인해 linear self-attention 아키텍처에 적용하기 어렵다는 단점이 있다.
■ 저자들은 PLM의 학습 과정에 위치 정보를 활용하기 위해 회전 위치 임베딩(Rotary Position Embedding, RoPE)이라는 새로운 방법을 제안한다.
■ RoPE는 절대 위치를 회전 행렬(rotation matrix)로 인코딩하며, 동시에 셀프 어텐션 수식 내에서 상대 위치 의존성(relative position dependency) 정보를 통합한다.
■ RoPE의 핵심 아이디어는 문맥 표현에 회전 행렬을 곱하여 상대 위치를 인코딩하는 것이며, 저자들은 이러한 RoPE가 (1) 시퀀스 길이의 유연성(외삽 능력) (2) 상대 거리가 증가함에 따라(거리가 멀어질수록) 토큰 간의 의존성 감소 (3) linear self-attention과의 호환성 등 기존 방법들보다 우위에 있다고 주장한다.
2. CURRENT APPROACHES DO NOT EXTRAPOLATE EFFICIENTLY
2.1 Preliminary
■ \( \mathbb{S}_N = \{ \mathbf{ww}_i \}_{i=1}^N \)을 \( i \)번째 요소가 \( w_i \)인 \( N \)개의 입력 토큰 시퀀스라고 하자.
■ \( \mathbb{S}_N \)에 대응되는 단어 임베딩을 \( \mathbb{E}_N = \{ \mathbf{x}_i \}_{i=1}^N \)이라고 한다면, \( x_i \in \mathbb{R}^d \)는 위치 정보가 없는 토큰 \( w_i \)의 \( d \) 차원의 단어 임베딩 벡터이다.
- 즉, \( x_i \)는 단순히 어떤 단어의 정보만을 담고 있으며, '몇 번재 단어'인지는 아직 모르는 상태이다.
■ 셀프 어텐션은 먼저 단어 임베딩에 위치 정보를 통합한 다음, 그것들을 쿼리, 키, 벨류로 변환한다.
■ 그런 다음, 쿼리와 키는 attention weight(식(2)의 \( a_{m, n} \))를 계산하는데 사용되며, attention output은 벨류에 대한 가중합으로 계산(식 (2)의 \( \mathbf{o}_m \))된다.
■ 기존의 트랜스포머 기반 위치 인코딩 접근법들은 주로 식 (1)을 형성하기 위한 적절한 함수 \( f \)를 선택하는 데 초점을 맞췄다.
- 여기서 \( f \)는 쿼리, 키, 벨류에 위치 정보를 부여하는 어떤 함수이다.
- 식 (1)의 \( \mathbf{q}_m, \mathbf{k}_n, \mathbf{v}_n \)은 단어의 의미 정보와 단어의 위치 정보(\( m \) 또는 \( n \)) 두 가지를 입력으로 받는 어떤 함수 \( f \)에 의해 생성된다고 하자.
- 예를 들어, BERT에서 사용하는 '덧셈 방식'은 \( f_q(\mathbf{x}_m, m) = W_q (\mathbf{x}_m + S_m + P_m) \)이라 할 수 있다. (\( S_m \)은 segment embedding의 \( m \)번째 값, \( P_m \)은 position embedding의 \( m \)번째 값)
2.2 Absolute position embedding
■ 식 (1)의 대표적인 선택은 절대 위치 임베딩이다. 아래 식 (3)은 절대 위치 임베딩의 아이디어 "위치 정보를 더한다"를 표현한 식이다.
- \( \mathbf{p}_i \in \mathbb{R}^d \)는 토큰 \( \mathbf{x}_i \)의 위치에 의존하는 \( d \)차원 벡터이다.
■ 이전 연구들은 학습 가능한 벡터 집합 \( \mathbf{p}_i \in \{ \mathbf{p}_t \}_{t=1}^L \)을 사용하였다. 여기서 \( L \)은 최대 시퀀스 길이이다.
■ 트랜스포머 논문의 저자들은 사인파 함수를 사용하여 \( \mathbf{p}_i \)를 생성할 것을 제안했다.
- \( \mathbf{p}_{i, 2t} \)는 \( d \)차원 벡터 \( \mathbf{p}_i \)의 \( 2t \)번째 요소이다.
2.3 Relative position embedding
■ 절대 위치 임베딩이 \( + P \)로 위치 정보를 더했다면, 상대 위치 임베딩들은 어텐션 스코어(또는 가중치)에 \( + \text{bias} \)나 \( + \text{term} \) 형태로 위치 정보를 더한다.
■ 저자들이 제안하는 방법도 relative position embedding이지만, \( f \)가 이러한 덧셈 방식이 아닌 rotation matrix를 곱하는 것이다.
3. Proposed approach
3.1 Formulation
■ 저자들은 식 (11)과 같이 위치 정보가 없는 단어 임베딩 \( \mathbf{x}_m, \mathbf{x}_n \), 그리고 둘 사이의 상대적인 거리 \( m - n \)만을 입력으로 받아 쿼리 \( \mathbf{q}_m \)과 키 \( \mathbf{k}_n \)의 내적을 계산할 수 있는 함수 \( g \)를 찾고자 하였다.
3.2 Rotary position embedding
3.2.1 A 2Dcase
■ \( \langle f_q(\boldsymbol{x_m}, m), f_k(\boldsymbol{x_n}, n) \rangle = g(\boldsymbol{x_m}, \boldsymbol{x_n}, m-n) \)으로 위치 정보가 없는 \( \boldsymbol{x_m} \)과 \( \boldsymbol{x_n} \) 사이에 \( m-n \) 이라는 상대적인 거리를 모델링할 수 있는 함수 \( g \)를 찾는 것이 목표이다.
■ 저자들은 임베딩을 복소수로 간주하여, 위치 인코딩 문제(식 (11))를 '회전' 문제로 재핵섬하으로써 해결하였다.
■ 차원 \( d = 2 \)에서 예시를 들었는데, 2D 평면상의 벡터와 그 복소수 형태의 기하학적 속성을 이용하여 식 (11)에 대한 해를 식 (12)와 같이 도출하였다.
- \( \text{Re} [ \cdot ] \)는 복소수의 실수부, \( (\boldsymbol{W_k x_n})^{*} \)은 \( (\boldsymbol{W_k x_n}) \)의 켤레 복소수
- \( \theta \in \mathbb{R} \)은 미리 설정된 0이 아닌 상수
■ 그리고 \( f_{\{q,k\}} \)를 다음과 같은 곱셈 행렬로 나타내었다.
cf) 복소수를 이용해 회전을 곱셈으로 표현, 오일러 공식
- 복소수는 \( a + bi \) 형태로 표현되며, 2차원 평면에 다음과 같이 나타낼 수 있다.
- 위의 2D는 복소 평면을 나타내며, 복소 평면에서 \( a + bi \) 형태의 복소수는 한 점으로 나타낼 수 있다. 가로축은 실수(Real), 세로축은 허수(Imaginary)를 나타낸다.
- 이를 다음과 같이 극좌표계로 나타낼 수 있다.
- \( r = 1 \)(단위 원)일 때, \( z = \cos \theta + i \cdot \sin \theta \)로 극좌표 \( z \)로 나타낼 수 있다.
- \( z = \cos \theta + i \cdot \sin \theta \)를 이용하여 오일러 공식을 유도할 수 있다.
\( z = \cos \theta + i \sin \theta \rightarrow \dfrac{dz}{d\theta} = -\sin \theta + i \cos \theta \)
\( \rightarrow (-i)\dfrac{dz}{d\theta} = (-i)(-1)\sin \theta + (-i)(i)\cos \theta = \cos \theta + i \sin \theta \Leftrightarrow (-i)\dfrac{dz}{d\theta} = z \)
\( \rightarrow \dfrac{dz}{z} = \dfrac{1}{-i} d\theta = i \, d\theta, \; \left( \dfrac{1}{i} \rightarrow \dfrac{1}{i} \cdot \dfrac{i}{i} = \dfrac{i}{-1} = -i \right) \)
\( \rightarrow \int \dfrac{dz}{z} = \int i \, d\theta \rightarrow \ln |z| = i \theta + C \rightarrow z = e^{i \theta +C} = e^{i \theta} \cdot e^{C} \)
- \( e^{C} \)는 상수이니 단순히 상수 \( C \)라고 표기하면, \( z = e^{i \theta} \cdot C \)
- 상수 \( C \)의 값을 구하기 위해 초기 조건 \( \theta = 0 \)일 때의 값을 이용하면,
- 원래 식 \( z = \cos \theta + i \sin \theta \)에서 \( \theta = 0 \)이면, \( z = 1 \)이 된다.
- 그러므로, \( z = e^{i \theta} \cdot C = \cos \theta + i \sin \theta \)가 성립하기 위해선 \( \theta = 0, C = 1 \)
- 그 결과, \( z = e^{i \theta} = \cos \theta + i \sin \theta \)로 오일러 공식 \( e^{i \theta} = \cos \theta + i \sin \theta \)가 유도된다.
- \( z = a+bi \)에 \( e^{i \theta} \)를 곱하면, \( z = a + bi \)가 2D에서 각도 \( \theta \)만큼 회전하게 된다. 저자들은 이 성질을 이용한 것이다.
\( \begin{align*} z' &= z \times e^{i \theta}, \quad ( e^{i \theta} = \cos \theta + i \cdot \sin \theta ) \\ &= (a + bi)(\cos \theta + i \cdot \sin \theta) \\ &= (a \cos \theta + a \cdot i \cdot \sin \theta + b \cdot i \cdot \cos \theta - b \sin \theta) \\ &= (a \cos \theta - b \sin \theta) + (a \sin \theta + b \cos \theta)i \end{align*} \)
- \( (a \cos \theta - b \sin \theta) \)를 실수부 \( a^{'} \), \( (a \sin \theta + b \cos \theta) \)를 허수부 \( b^{'} \)로 본다면,
- \( z = a+bi \)에 \( e^{i \theta} \)를 곱해 \( z^{'} = a^{'} + b^{i} i \)를 얻은 것이며, 이는 다음과 같이 복소 평면에서 복소수 \( a + bi \)를 나타내는 벡터를 \( \theta \)만큼 회전시킨 것과 동일하다. 이때 벡터의 크기(거리)는 변하지 않는다.
- \( z = a + bi \)와 \( e^{i \theta} \)를 곱해서 얻은 새로운 복소수 \( z^{'} \)의 좌표는 \( (a \cos \theta - b \sin \theta, \; a \sin \theta + b \cos \theta) =(a^{'}, \; b^{'}) \)이다.
- 이는 \( (a, b) \)를 \( \theta \)만큼 회전시킨 새로운 점 \( (a^{'}, \; b^{'}) \)이며, 이 관계는 \( (a \cos \theta - b \sin \theta, \; a \sin \theta + b \cos \theta) =(a^{'}, \; b^{'}) \)를 이용해 다음과 같이 나타낼 수 있다.
\(
\begin{cases}
a' = a \cos \theta - b \sin \theta \\
b' = a \sin \theta + b \cos \theta
\end{cases}
\;\;\Longleftrightarrow\;\;
\begin{pmatrix} a' \\ b' \end{pmatrix} =
\begin{pmatrix}
\cos \theta & -\sin \theta \\
\sin \theta & \cos \theta
\end{pmatrix}
\begin{pmatrix} a \\ b \end{pmatrix}
\)
- 여기서 \begin{pmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{pmatrix} 가 2차원 회전 행렬이다. 좌표 \( (a, b) \)를 \( \theta \)만큼 회전시킨다.
■ 위의 내용을 기반으로 식 (12)를 다시 보자.
■ \( f_q(\boldsymbol{x}_m, m) = (\boldsymbol{W}_q \boldsymbol{x}_m)e^{im\theta} \)는 단어 임베딩 \( \boldsymbol{x}_m \)을 선형변환(\( \boldsymbol{W}_q \))한 다음, 변환된 벡터를 위치 \( m \)에 비례하는 각도 \( m \cdot \theta \)만큼 회전시킨 것이다.
■ \( f_k(\boldsymbol{x}_n, n) = (\boldsymbol{W}_k \boldsymbol{x}_n)e^{in\theta} \)도 선형변환된 벡터 \( \boldsymbol{W}_k \boldsymbol{x}_n \)을 위치 \( n \)에 비례하는 각도 \( n \cdot \theta \)만큼 회전시킨 것이다.
■ \( g(\boldsymbol{x}_m, \boldsymbol{x}_n, m-n) \)은 \( \langle f_q(\boldsymbol{x}_m, m), f_k(\boldsymbol{x}_n, n) \rangle \), 즉 \( \boldsymbol{q}_m \)과 \( \boldsymbol{k}_n \)의 내적이며, (\( f_q(\boldsymbol{x}_m, m) = \boldsymbol{q}_m, \; f_k(\boldsymbol{x}_n, n) = \boldsymbol{k}_n \))
■ 이 내적 계산을 나타낸 식이 \( g(\boldsymbol{x}_m, \boldsymbol{x}_n, m-n) = \text{Re}이다. [(\boldsymbol{W}_q\boldsymbol{x}_m)(\boldsymbol{W}_k\boldsymbol{x}_n)^* e^{i(m-n)\theta}] \)
■ 여기서 \( \boldsymbol{q}_m \)과 \( \boldsymbol{k}_n \)의 내적, 즉 attention score를 반환하는 함수 \( g \)의 입력 변수를 보면, 위치 정보가 오직 '상대 위치 \( m - n \)'의 형태로만 남아있는 것을 알 수 있다.
\( f_q(\boldsymbol{x}_m, m) \)과 \( f_k(\boldsymbol{x}_n, n) \)의 입력 변수였던 절대 위치 \( m \)과 \( n \)이 사라진 것이다. 정확하게는 절대위치가 식 (13)의 회전 행렬에 녹아든 것이다. RoPE는 회전 행렬을 이용하여 절대 위치를 인코딩한다.
- 예를 들어 아래 2D에 있는 두 벡터가 각각 'I'와 'am'의 토큰 임베딩이라고 하자.
- 'I am a student'라는 문장이 있다고 하면, "I"는 첫 번째 위치, "am"은 두 번째 위치에 있기 때문에 각각 \( \theta \)와 \( 2 \theta \)씩 회전시키면 된다.
- 만약 문장이 'a student I am'이라면, "I"는 네 번째 위치, "am"은 다섯 번째 위치에 있기 때문에 각각 \( 4 \theta \)와 \( 5 \theta \)씩 회전시키면 된다.
-- RoPE에서는 두 토큰씩 짝지어 회전시킨다. (섹션 3.2.2)
- 식 (13)을 다시 보자.
-- \( \left( x^{(1)}_m x^{(2)}_m \right)^T \)은 2D 좌표로 표현된 \( \boldsymbol{x}_m \)이다.
- 위의 내용을 통해 \( \text{exp}( i \cdot m \cdot \theta) \)에 의한 곱셈은, 2D 공간에서 회전 행렬 \( \begin{pmatrix} \cos m\theta & -\sin m\theta \\ \sin m\theta & \cos m\theta \end{pmatrix} \)를 곱하는 것과 같다.
- 즉, 식 (13)은 식 (12) 에서 본 것처럼, \( f_{\{q,k\}} (\boldsymbol{x}_m, m) \)은 (회전)*(선형변환)*(입력 벡터)이다.
■ 이것이 RoPE의 핵심이다. RoPE는 선형변환된 입력 벡터(단어 임베딩)를 그 단어의 절대적 위치(\( m \))에 비례하는 각도 \( m \cdot \theta \)만큼 회전시키면 된다는 메커니즘이다.
3.2.2 General form
■ 3.2.1 2D에서의 결과를, \( d \)가 짝수인 임의의 \( \boldsymbol{x}_i \in \mathbb{R}^d \)로 일반화하기 위해, \( d \) 차원 공간을 \( d / 2 \)개의 부분공간으로 나누고, 내적의 선형성을 이용해 다시 결합하여 \( f_{\{q,k\}} \)를 다음과 같이 나타내었다.
■ 저자들은 3.2.1 2D Case에서 오일러 공식 \( e^{i \theta} = \cos \theta + i \sin \theta \)를 사용하여 2차원 벡터의 회전을 보여주었다.
■ 그러나, 트랜스포머 모델에서 사용되는 단어 임베딩은 lookup table을 통해 수백에서 수천 개의 차원으로 구성된다.
■ 이 간극을 해결하기 위해 전체 차원 \( d \)를 2차원씩 짝지어 처리한다.
■ 예를 들어, \( d = 512 \)라고 하자. 그러면 단어(또는 토큰) 임베딩 \( \mathbf{h} = [h_1, h_2, h_3, h_4, \cdots, h_{511}, h_{512}] \)이다.
■ 이 \( d \) 차원(512 차원)의 벡터를 2차원씩 짝지어 처리한다. \( \left[ [h_1, h_2], [h_3, h_4], \cdots , [h_{511}, h_{512}] \right] \)
■ 각 2차원 부분공간에 대해 3.2.1에서 설명한 2D 회전을 다음 그림처럼 독립적으로 적용한다. 이 과정에서 벡터의 각 페어(2차원 부분공간)마다 서로 다른 각도(\( \theta_1, \theta_2, \cdots, \theta_{d/2} \))가 부여된다.
■ 각 페어는 고유의 각도 \( \theta \)로 회전되어 위치 정보를 반영하게 된다.
■ 여기서 \( \theta \)는, 미리 정의된 파라미터 \( \Theta = \{ \theta_i = 10000^{-2(i-1)/d} , \; i \in [1,2,...,d/2]\} \)를 통해 결정된다.
- \( i \)는 paring index, 각 2차원 부분공간의 인덱스이다.
- 식 (14), (15)의 \( \mathbf{R}_{\Theta,m}^d \)은 이 파라미터 \( \theta \)를 가진 rotary matrix이다.
■ 아래의 Fig 1은 RoPE의 과정을 나타낸 것으로 현재 토큰의 위치(token position) \( m \)이 \( \theta \)와 곱해진 값만큼 회전되는 것을 볼 수 있다. 즉, RoPE는 각각의 토큰 임베딩을 "토큰 위치(\( m \))에 따라 회전시킨다."
■ 그러므로 RoPE를 사용할 경우, 토큰 사이의 위치 정보가 두 토큰 임베딩 사이의 각도 \( m \theta \)를 통해 모델에 반영된다.
■ RoPE를 식 (2)의 self-attention에 적용하면 식 (16)을 얻을 수 있다.
■ 여기서 \( \mathbf{R}_{\Theta,n-m}^d = (\mathbf{R}_{\Theta,m}^d)^\mathsf{T} \mathbf{R}_{\Theta,n}^d \)이며, 회전 행렬 \( \mathbf{R}_{\Theta}^d \)는 앞서 본 것처럼 벡터의 길이는 보존하고 각도만 변경되는 직교 행렬이므로, 위치 정보를 인코딩하는 과정에서 안전성을 보장한다.
- \( \boldsymbol{q} = \mathbf{R} \cdot \left( \boldsymbol{W} \cdot \boldsymbol{x} \right) \)에서 \( \mathbf{R} \)은 \( \left( \boldsymbol{W} \cdot \boldsymbol{x} \right) \)를 회전할 뿐, 벡터의 크기(길이)를 바꾸지 않으므로 \( \| \boldsymbol{q} \| = \| \mathbf{R} \cdot \left( \boldsymbol{W} \cdot \boldsymbol{x} \right) \| = \| \boldsymbol{W} \cdot \boldsymbol{x} \| \)이 성립한다.
■ 이때, \( \mathbf{R}_{\Theta}^d \)는 0이 많은 희소 행렬이다. 그러므로 식 (16)처럼 직접 행렬 곱셈을 적용하는 것은 비효율적이다. 그래서 저자들은 다음과 같은 구현 방식을 제안한다.
3.3 Properties of RoPE
Long-term decay
■ 트랜스포머 원 논문을 따라, 저자들은 \( \theta_i = 10000^{-2i / d} \)로 설정하였다. 이 설정으로 상대 위치가 증가할 때 내적 값이 감소한다.
■ 이는 긴 상대 거리를 가진 한 쌍의 토큰(쿼리와 키)은 더 적은 연결성을 가져야 한다는 직관과 일치한다.
- 언어 모델링에서는 가까운 단어가 더 중요하다는 경향(바로 옆에 있는 단어는 매우 중요하지만, 멀리 떨어져 있는 단어는 덜 중요하다)이 있다.
- \( \theta_i = 10000^{-2i / d} \)가 그 역할을 한다. \( i \)가 증가함에 따라 값이 감소하기 때문에, 쿼리와 키의 내적 값(어텐션 스코어)는 자연스럽게 감소하는 경향을 보이게 된다.
RoPE with linear attention
■ self-attention은 다음과 같은 형태로 쓰일 수 있다.
■ original self-attention은 \( \text{sim}(\mathbf{q}_m, \mathbf{k}_n) = \text{exp}(\mathbf{q}^T_m \mathbf{k}_n / \sqrt{d} ) \)를 사용하며, 모든 토큰 쌍에 대해 쿼리와 키의 내적을 계산해야 하기 때문에 quadratic complexity \( O(N^2) \)을 가진다.
■ linear attention은 다음과 같이 나타낼 수 있다. ([2006.16236] Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention)
■ RoPE는 은닉 표현의 크기(길이)를 바꾸지 않는 회전을 통해 위치 정보를 주입하므로, linear attention의 \( \varphi \) 함수를 통과한 쿼리, 키 벡터에 단순히 회전 행렬을 곱함으로써 RoPE를 linear attention과 결합할 수 있다.
■ RoPE를 결합할 때 발생하는 문제가 있는데,
- (1) 분자의 두 벡터의 내적은, 두 벡터가 서로 반대 방향을 가리킬 경우 내적 값이 음수가 될 수 있다는 점이다. 그래서 분자의 시그마에서 음수 항을 포함할 수 있다.
- (2) 분모도 분자처럼 RoPE를 적용할 경우, 이 합이 우연히 0이 되어 0으로 나누는 오류가 발생할 수 있다. 이 문제의 경우 식(19)에서 볼 수 있듯이 분모를 변경하지 않은 채로 유지하였다.
- (3) 분자의 내적을 계산한 결과가 (1)에 의해 음수일 수 있다. 두 벡터 \( u \)와 \( v \)가 이루는 각의 크기가 \( \theta (0 \leq \theta \leq \pi) \)일 때, \( u \)와 \( v \)의 내적은 \( u \cdot v = | u | | v | cos \theta \)로 나타낼 수 있다.
- 이때, 두 벡터의 사잇각이 120도가 되면 -0.5, 180도가 되면 -1, 음숫값을 갖는다. 그래서 식 (19)의 분자에서 음수가 계산될 수 있다.
- 어텐션 가중치가 음수가 되면, 더 이상 확률의 공리 중 "음의 확률은 없다"를 만족할 수 없다.
- 그러므로, 식 (19)에서 각 벨류 \( v_i \)에 대한 가중치가 엄밀하게 확률적으로 정규화된 상태라고 할 수 없다.
■ 논문에서는 위와 같은 문제가 있지만, 여전히 벨류의 중요성을 모델링(어텐션 가중치를 벨류에 가중합하는 과정)할 수 있다고 주장한다.
- 어텐션 가중치는 각 벨류 벡터의 상대적 중요성을 가중하는 가중치 요소 역할
참고) 오일러 공식 (Euler formula) - gaussian37
참고) Mastering LLama — Rotary Positional Embedding (RoPE) 이해하기 | by Hugman Sangkeun Jung | Medium