본문 바로가기

논문 리뷰/Language Model

Transformers Can Do Arithmetic with the Right Embeddings (Abacus Embeddings)

Abstract

각 숫자의 자릿수를 인코딩하는 임베딩을 추가하여 산술 작업의 능력을 획기적으로 향상

(Abacus는 주판을 의미한다.)

 

[Github]

[arXiv](2024/05/27 version v1)

 

 

Hacker news에서 엄청난 토론이 열렸다.

 

 

Achieving Length Generalization for Addition

무작위 자릿수의 두 숫자를 더하는 작업에 대해 3가지 범주로 평가하며 

  • In-Distribution: 훈련에 나타난 최대 자릿수 이내
  • Out-of-Distribution: 훈련 최대 자릿수보다 크지만 100자리 이하
  • Extreme OOD: 100자리 초과

Abacus Embeddings Help Align Digits

 

Randomized Positional Encodings에서 영감을 받았다.

 

먼저 정수의 자릿수를 뒤집고, 무작위 오름차순 인덱스를 사용하는 대신 임의의 위치 β부터 시작하는 연속적인 오름차순 인덱스를 사용한다. 

 

구체적으로, 1004의 경우 1~k(default = 100)에서 임의의 인덱스 β를 샘플링하고 다음과 같이 위치를 부여한다.

4( β ), 0( β+1 ), 0( β+2 ), 1( β+3 )

 

임의의 인덱스부터 시작하는 이유는 훈련 중에 없던 큰 자릿수에 적응하기 위함이며, 덧셈의 특성과도 부합한다.

1+2 = 3, 10+20 = 30, 10000+20000 = 30000

 

덧셈의 정확도 차이


Recurrence In Transformers Boosts Performance

 

반복 아키텍처를 사용하면 성능이 향상된다. (Deep Thinking, 반복 알고리즘은 사용하지 않는 듯.)

 

16×1은 일반적인 transformer, 8×2는 8개의 블록이 2번씩 반복됨을 나타낸다.

반복을 사용하면 성능도 더 좋고 피라미터 수도 줄어들어 효율적이다.

(단순한 산술 연산에 많은 피라미터가 필요하지 않아서 그런가?)

 

 

 

Pushing the Limits of Algorithmic Reasoning for Transformers

조금의 변형을 통해 곱셈, 숫자 정렬 등의 작업 성능도 향상시킬 수 있다고 한다. 자세한 방법은 생략.

곱셈 정확도

 

논문의 주장으로는 RoPE와 결합하여 범용 모델에 통합될 수 있다고 하긴 함.