논문 및 개념 정리

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

2024. 6. 26. 17:04
목차
  1. 1. 논문 내용
  2. 2. 그럼 구현은..?

 

 

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

 

1. 논문 내용

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

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

 

다음과 같이 qm,kn,vn(m,n은 position을 의미)가 있다고 하자.

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

 

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

 

 

 

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

 

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

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

 

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

 

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

 

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

 

 

2. 그럼 구현은..?

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

 

그리고 θi를 다음과 같이 정의했다.

 

즉 RoPE는 position 정보 m과 θ를 계산하기 위한 base를 사용한다.

 

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

(1) 파라미터 세팅

 

(2) position vector, θi, 회전변환을 위한 cos, sin 벡터 정의

 

(3) q,k를 rotary embedding을 적용하여 계산

 

 

[참고자료]

  • https://arxiv.org/pdf/2104.09864
  • https://nn.labml.ai/transformers/rope/index.html
  • https://github.com/huggingface/transformers/blob/main/src/transformers/models/llama/modeling_llama.py
  • https://github.com/abacusai/Long-Context/blob/main/python/models/interpolate.py

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'논문 및 개념 정리' 카테고리의 다른 글

[transformers] Scaled Dot Product Attention  (0) 2024.06.26
Vector Outer Product  (0) 2024.06.26
[2023] The Wisdom of Hindsight Makes Language Models Better Instruction Followers  (1) 2023.12.01
Hold-out vs Cross-validation 차이  (0) 2023.07.16
Propensity Score  (0) 2023.06.28
  1. 1. 논문 내용
  2. 2. 그럼 구현은..?
'논문 및 개념 정리' 카테고리의 다른 글
  • [transformers] Scaled Dot Product Attention
  • Vector Outer Product
  • [2023] The Wisdom of Hindsight Makes Language Models Better Instruction Followers
  • Hold-out vs Cross-validation 차이
Fine애플
Fine애플
이것저것
Fine애플
끄적끄적
Fine애플
전체
오늘
어제
  • 분류 전체보기 (167)
    • 논문 및 개념 정리 (27)
    • Pattern Recognition (8)
    • 개발 (57)
    • python 메모 (45)
    • pytorch, tensorflow (5)
    • 알고리즘 (9)
    • Toy Projects (4)
    • 통계이론 (2)
    • Reinforcement Learning (10)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • container
  • GPU
  • reinforcement learning
  • Probability
  • python
  • pandas
  • 딥러닝
  • 언어모델
  • Docker
  • 개발환경
  • BigBird
  • 알고리즘
  • ubuntu
  • PyTorch
  • Bert
  • nlp
  • transformer
  • tensorflow
  • miniconda
  • 자연어

최근 댓글

최근 글

hELLO · Designed By 정상우.
Fine애플
[2021] ROFORMER: ENHANCED TRANSFORMER WITH ROTARYPOSITION EMBEDDING(RoPE)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.