본문 바로가기
AI

[논문 리뷰] Contextual Position Encoding:Learning to Count What’s Important

by AICC 2024. 6. 3.
반응형
더보기

ABSTRACT

The attention mechanism is a critical component of Large Language Models (LLMs) that allows tokens in a sequence to interact with each other, but is orderinvariant. Incorporating position encoding (PE) makes it possible to address by position, such as attending to the i-th token. However, current PE methods use token counts to derive position, and thus cannot generalize to higher levels of abstraction, such as attending to the i-th sentence. In this paper, we propose a new position encoding method, Contextual Position Encoding (CoPE), that allows positions to be conditioned on context by incrementing position only on certain tokens determined by the model. This allows more general position addressing such as attending to the i-th particular word, noun, or sentence. We show that CoPE can solve the selective copy, counting and Flip-Flop tasks where popular position embeddings fail, and improves perplexity on language modeling and coding tasks.

많은 데이터 소스, 예를 들어 텍스트, 오디오, 코드, 그리고 사건의 타임라인 등은 모두 순서가 중요한 연속된 데이터입니다. 이러한 시퀀스를 처리할 때, 순서 정보는 매우 중요합니다. 특히 텍스트의 경우, 단어 간의 의미를 해석하기 위해서뿐만 아니라 문장과 단락 수준에서도 위치 정보는 필수적입니다.

 

문장: "오늘은 날씨가 맑고, 내일은 비가 올 것 같아요."

  • 단어 순서: "오늘은", "날씨가", "맑고", "내일은", "비가", "올 것", "같아요" 순서가 바뀌면 문장의 의미가 달라집니다. 예를 들어, "내일은 비가 맑고, 오늘은 올 것 같아요."라는 문장은 말이 되지 않습니다.
  • 문장 순서: "오늘은 날씨가 맑고"가 먼저 나오고 "내일은 비가 올 것 같아요."가 그 다음에 나와야 의미가 통합니다.

 

대화: "안녕하세요? 잘 지내셨어요?" - "네, 잘 지냈습니다. 감사합니다."

  • 음성 순서: 대화에서 인사와 답변의 순서가 바뀌면 대화의 흐름이 이상해집니다. 예를 들어, "네, 잘 지냈습니다. 감사합니다."를 먼저 말하고 "안녕하세요? 잘 지내셨어요?"를 나중에 말하면 대화가 자연스럽지 않습니다.

 

Position Encoding(위치 인코딩) 필요성

현재 대형 언어 모델(LLM)의 주된 구조인 Transformer 아키텍처는 Attention 메커니즘에 의존합니다. Attention 매커니즘은 인공지능이 문장을 이해할 때 중요한 단어에 집중할 수 있게 도와주는 기술입니다. 예를 들어, "사과는 빨갛다"라는 문장에서 "사과"와 "빨갛다"라는 단어에 주목하여 문장의 의미를 파악합니다.

 

하지만 Attention 매커니즘은 시퀀스를 집합으로 취급하여 순서 정보를 포함하지 않습니다.

Attention 매커니즘은 단어들을 순서 없이 집합으로 취급합니다. 이것을 이해하기 위해 아래의 예시를 살펴봅시다:

 

  1. 원래 문장: "오늘은 날씨가 맑고, 내일은 비가 올 것 같아요."
  2. 집합으로 취급: "날씨가", "오늘은", "비가", "내일은", "맑고", "올 것", "같아요"

Attention 매커니즘은 이 단어들을 순서 없이 하나의 집합으로 봅니다. 그래서 "오늘은"이 "날씨가"보다 먼저 나오는지, "내일은"이 "비가"보다 나중에 나오는지 알지 못합니다. 순서가 중요한데, 이렇게 순서 정보를 모르면 문장을 제대로 이해할 수 없습니다.

 

이 문제를 해결하기 위해 **Position Encoding (위치 인코딩)**이 필요합니다. 위치 인코딩은 각 위치에 임베딩 벡터를 할당하여 해당 벡터를 토큰 표현에 더함으로써 단어들의 순서를 인공지능이 알 수 있게 도와줍니다.

 

위치는 두 가지 방법으로 측정할 수 있습니다:

  • Absolute PE: 시퀀스 시작부터 토큰을 세는 방법
  • Relative PE: 현재 토큰에서부터 거꾸로 세는 방법

이러한 위치 인코딩 방법들은 LLM에서 중요한 요소가 되었으며, 여러 가지 변형된 방법들이 제안되었습니다.

 

기존 Position Encoding 방법의 한계

 

기존 위치 인코딩 방법은 토큰을 측정 단위로 사용합니다. 그러나 토큰은 단어 전체, 단어의 일부, 또는 문자와 같이 가변적인 단위입니다. 예를 들어, Byte-Pair Encoding(BPE) 토큰화 방법에서는 하나의 단어가 하나 이상의 토큰으로 나눠질 수 있습니다. 문장의 경우, 10개에서 수백 개의 토큰이 포함될 수 있어 위치 변동이 더욱 커집니다. 따라서 토큰 위치는 일반적인 위치 지정, 예를 들어 i번째 단어 또는 문장을 찾는 데 적합하지 않습니다.

 

CoPE: Contextual Position Encoding

위치 측정을 단어, 문장과 같은 더 의미 있는 단위에 연결하려면 문맥을 고려해야 합니다. 그러나 현재 위치 인코딩 방법은 문맥과 독립적으로 위치를 계산하고 나중에 문맥 정보와 결합하기 때문에 이것이 불가능합니다.

 

이 문제를 해결하기 위해 문맥과 위치 정보를 통합하는 새로운 위치 인코딩 방법인 Contextual Position Encoding(CoPE)을 제안합니다. CoPE는 문맥에 따라 위치를 지정할 수 있어, 다양한 수준의 위치 추상화를 동시에 표현할 수 있습니다.

 

쉽게 설명하자면, 

"Alice was tired. She tried reading. A rabbit came."이라는 세 문장이 있다고 해봅시다. 여기서 "A rabbit came." 문장의 첫 번째 단어인 "A"에 주목한다고 가정해 보겠습니다.

  • 기존 Position Encoding 방법: 기존의 위치 인코딩 방법은 단어의 순서를 기준으로 위치를 계산합니다. 예를 들어, "A"는 이 문장에서 8번째 단어일 수 있습니다. 그러나 이 방법은 "A"가 세 번째 문장의 첫 번째 단어라는 정보를 알려주지 않습니다.
  • CoPE 방법: CoPE는 문맥을 고려하여 위치를 지정합니다. 예를 들어, CoPE는 문장을 분석하여 "A rabbit came."이 세 번째 문장이라는 것을 인식합니다. 그리고 이 문장에서 "A"는 첫 번째 단어라는 것을 알 수 있습니다. CoPE는 이런 문맥적 정보를 활용하여 "A"의 위치를 지정합니다.

즉, CoPE는 단순히 단어의 순서를 숫자로만 보는 것이 아니라, 문맥에 따라 단어가 어떤 역할을 하는지를 고려합니다. 이를 통해 더 복잡한 정보도 쉽게 처리할 수 있게 됩니다.

 

CoPE의 작동 방식

 

"Alice was tired. She tried reading. A rabbit came."

 

현재 토큰이 "rabbit"이라고 해봅시다. CoPE는 "rabbit"을 query 벡터로 사용하여 이전 토큰들의 key 벡터와 비교합니다. 이 과정에서 각 토큰에 대해 게이트 값을 계산합니다. 예를 들어, "Alice"와 "was"는 "rabbit"과 별로 관련이 없으므로 낮은 게이트 값을 가질 것입니다. 반면에 "She tried reading."과 같은 문장은 "rabbit"과 더 관련이 있을 수 있습니다.

게이트 값이 계산된 후, CoPE는 이러한 게이트 값을 합산하여 각 토큰의 상대 위치를 결정합니다. 예를 들어, "She tried reading."의 게이트 값이 높다면, CoPE는 이를 더 가깝게 위치시킬 것입니다. 이 과정에서 위치는 소수 값이 될 수 있습니다.

이렇게 계산된 위치 임베딩은 다른 PE 방법들처럼 key 벡터에 추가되어 query 벡터가 어텐션 연산에서 사용할 수 있게 됩니다. 이를 통해 "rabbit" 토큰은 "She tried reading."과 같은 문맥을 더 잘 이해할 수 있게 됩니다.

 

CoPE의 장점

 

1. 각 Attention 헤드에서 독립적으로 작동하여 서로 다른 위치 유형에 주목할 수 있음

  • 예시:
    • 문장이 다음과 같이 주어졌을 때: "고양이가 매트 위에 앉았다. 개가 크게 짖었다. 그리고 토끼가 갑자기 나타났다."
    • 기존의 Relative PE 방법은 마지막 문장의 끝에 있는 "나타났다"에 주목하기 어렵기 때문에 중요한 정보를 놓칠 수 있습니다.
    • 그러나 CoPE는 문장 끝을 세어 위치 "0"에 주목할 수 있어, "나타났다"와 같은 문장의 끝 부분에 정확히 주목할 수 있습니다.

2. 토큰 위치뿐만 아니라 문장 위치 등을 동시에 측정할 수 있음

  • 예시:
    • 문장이 다음과 같이 주어졌을 때: "앨리스는 피곤했다. 그녀는 책을 읽으려고 했다. 토끼가 갑자기 나타났다."
    • CoPE는 "토끼가 갑자기 나타났다"라는 문장을 이해하기 위해 이전 문장인 "앨리스는 피곤했다"와 "그녀는 책을 읽으려고 했다"를 동시에 고려할 수 있습니다.
    • 이를 통해 현재 문장을 더 잘 이해할 수 있게 됩니다.

 

 

실험 결과

 

 

  • 간단한 작업에서의 성능:
    • CoPE는 숫자를 세는 작업에서 기존의 토큰 기반 PE 방법보다 더 정확한 성능을 보였습니다.
    • 또한, 특정 단어를 선택적으로 복사하는 작업에서도 더 나은 성능을 발휘했습니다.
  • 도메인 외 일반화:
    • CoPE는 새로운 데이터셋에서도 우수한 성능을 보였습니다.
    • 예를 들어, 새로운 이야기를 읽을 때 CoPE는 문맥을 잘 이해하여 정확한 의미를 추론할 수 있습니다.
  • 실제 적용 가능성 테스트:
    • 위키피디아 텍스트를 사용한 언어 모델링 작업에서 CoPE는 더 나은 성능을 보였습니다.
    • 코드 학습에서도 CoPE는 코드의 구조와 문맥을 잘 이해하여 오류를 줄일 수 있음을 보여주었습니다.

 

 

결론

 

Contextual Position Encoding(CoPE)은 기존 위치 인코딩 방법의 한계를 극복하고, 더 높은 수준의 위치 정보를 처리할 수 있는 혁신적인 방법입니다. 이러한 방법을 통해 인공지능이 텍스트와 같은 순서가 중요한 데이터를 더 잘 이해하고 처리할 수 있게 됩니다. 앞으로 CoPE의 발전과 활용이 기대됩니다.

 

 

https://arxiv.org/pdf/2405.18719

반응형