Rotary Position Embedding in RoFormer
참고:
- 영상: https://www.youtube.com/watch?app=desktop&v=tRe2XHF6UbQ
- 글: https://velog.io/@wkshin89/MLDL-Rotary-Embeddings
RoPE의 직관은 간단하다. QKV linear projection으로 affine 변환된 임베딩에 위치 인덱스의 각도 배수만큼 회전을 걸어주는 것이다.
다음과 같은 fq, fk가 있다.
fq = fk 일 때:
각각에 인덱스 배수만큼의 회전을 걸어주면:
왼쪽은 두 단어의 위치가 가까울 때, 오른쪽은 멀 때이다.
fq = fk 이더라도 위치의 차이(m-n)에 따라 내적의 결과가 크게 차이 나는 것을 보여준다.
이러한 RoPE는 두 벡터의 내적에 직접적으로 영향을 줄 수 있으며, '더하는 방식'의 이전 PE들은 내적을 할 때 정보가 소실된다.
또한 벡터의 각 차원에 다른 회전율(회전 각도 = sinusoidal PE와 같이 다른 sin, cos 주파수)을 사용하는데,
회전 행렬을 적용하기 위해 2개의 차원마다 다른 회전율을 사용한다. (낮은 차원일수록 높은 회전율, 높은 회전 주파수.)
아래는 인덱스가 m인 d차원 벡터에 적용되는 행렬이다.
위의 행렬은 sparse 하기 때문에 연산이 비효율적이다. 실제로는 다음과 같이 구현된다.
'논문 리뷰 > Concept' 카테고리의 다른 글
Constitutional DPO (0) | 2024.02.05 |
---|---|
Self-Conditioning (1) | 2023.12.17 |
R1 Gradient Penalty (1) | 2023.12.01 |
Score Distillation Sampling (1) | 2023.11.30 |