최근 LM들은 긴 contexts를 input으로 받을 수 있기는 하지만, 그것을 얼마나 잘 활용하는지에 대해서는 잘 알고 있지 않다.
우리의 input text 내에 관련된 정보가 있는 2가지 task에 대해 성능을 분석함.
관련 정보가 input context의 시작 또는 끝에 있는 것이 성능 🔺
중간에 있는 정보에 접근해야 할 경우 성능🔻
긴 context를 다루는 모델에서도 입력 context가 길어질수록 성능 🔻
💡 논문에서 하고자 하는 일
- LM이 input context를 어떻게 활용하는 지에 대한 더 나은 이해 제공
- long context model을 평가하기 위한 새로운 평가 프로토콜 제공
LM은 일반적으로 Transformer로 구현 (입력 시퀀스의 길이에 따라 self-attention complexity가 제곱으로 증가 → 긴 시퀀스 처리 불가능)
하드웨어 개선 및 알고리즘 발전 → larger context windows 가능 & downstream task를 어떻게 할지에 대한 문제가 남아있음
experiment
💡multidocument question answering
모델이 제공된 문서를 기반으로 추론하고 관련 정보를 찾아 주어진 질문에 답하는 task
input context size와 관련된 정보의 위치를 변경하며 모델 성능 평가
위치 정보를 변화시켰을 때의 성능 그래프
관련 정보가 context의 처음과 끝에 있을 때 성능이 올라가고, input context의 중간에 있는 정보에 접근해야 할 경우, 성능이 크게 저하됨. (문서 없이 예측하는 것보다 성능이 낮아짐)
(context가 길어질 수록 성능이 점차 낮아짐)
🤔 Given that language models struggle to retrieve and use relevant information in the multi-document question answering task, to what extent can language models even retrieve from their input contexts❓
✔️ input context에서 retrieve matching token을 최소한의 basic ability로 testbed 설계함.
✔️ JSON-formatted key-value pairs을 받고 특정 키의 연결된 값을 반환
❓ 왜 context 중간에 관련 정보가 있으면 정보에 접근하는 데 어려움이 생길까?
1️⃣ 모델 구조의 역할 (decoder-only vs encoder-decoder)
encoder-decoder 모델이 training time sequence length 내에서 평가될 때 input context 내에 관련 정보의 위치 변화에 대해서는 robust함. 그러나 training 때 본 길이보다 긴 시퀀스가 주어지면 평가될 때 U자형 곡선을 보임.
2️⃣ query-aware contextualization
query-aware contextualization(쿼리를 문서나 key-value 쌍의 앞이나 뒤에 위치하게 함)은 모델이 e synthetic key-value task를 완벽하게 수행하지만, multi-document QA에 미미함.
3️⃣ instruction fine-tuning
instruction fine-tuning 없이도 input context와 관련된 정보의 위치의 다양함은 U자 곡선을 보임.
✔️ 추론 ↔ 정보 추가 (trade off 관계)
✔️ 정보의 양이 일정한 수준에 도달하면 결과가 더 이상 크게 변화하지 않음
대부분의 LM은 Transformer의 구조로 구현되어있음.
Increasing language model maximum context length.
→ 최근 하드웨어와 알고리즘의 발전으로 maximum context length가 급격히 증가함.
commercial search & questoin answering app (예: Bing Chat)을 기반으로 한 retrieval-augmented generation setup과 유사함.
model inputs
1️⃣ a question to answer
2️⃣ k documents
k개의 documents가 있고, 1개의 document에만 Question에 대한 정보가 있음.
(K-1)개의 documents에는 Q에 대한 정보 X → “distractor” document
NaturalQuestions 벤치마크에서 데이터 사용 (NaturalQuestions-Open에서 query를 가져와 사용)
1) 정답이 담긴 document 수집
NaturalQuestions 주석에서 답변이 포함된 위키피디아 단락을 사용
2) distractor documents 수집
Contriever 검색 시스템을 사용하여 질문과 관련성이 높은 위키피디아 paragraph 중에서 NaturalQuestions 답변 중 Question에 대한 Answer이 포함되지 않은 것을 k-1개 검색
💡 input context length 조절 → distractive document의 수를 증가 시키거나 감소시킴
관련된 정보의 위치를 조절 → document의 순서를 조절
✔️ accuracy를 primary evaluation metric으로 사용
✔️ 단순히 답을 copy하는 것을 방지하기 위해 처음 생성된 newline을 제거함.
✔️ 생성은 new line character 없이 end-of-sequence 토큰을 사용해서 종료함.
✔️ 관련된 paragraph가 input context의 처음에 위치하거나 random하게 놓였을 때 성능이 어떤 지에 대한 연구가 있는데, 본 논문은 위치를 미세하게 조정한다는 측면에서 다름.
open models.
MPT-30BInstruct와 LongChat-13B (16K)에 대한 실험 내용
closed models.
closed-book 설정: 모델은 입력 문맥에 어떤 문서도 주어지지 않으며, 매개 변수 기반 메모리를 활용하여 올바른 답변을 생성
oracle 설정: 언어 모델에게 답변이 포함된 단일 문서가 주어지며, 이를 사용하여 질문에 답해야 함
💡Model performance is highest when relevant information occurs at the beginning or end of its input context
input context의 처음과 끝 부분에 나타나는 정보를 식별하고 활용하는 데 성능이 좋음
중간 부분에 있는 정보를 사용하려고 할 수록 성능 저하
⇒ downstream task를 수행할 때 전체 context window를 효과적으로 추론 X
⇒ input context의 처음이나 끝에 있는 정보를 사용하는 것이 더 쉬움.
💡Model performance substantially decreases as input contexts grow longer
⇒ input context의 길이가 길어질 수록 성능🔻
💡Extended-context models are not necessarily better at using input context
model과 extende-context model 모두 input context를 처리할 수 있는 경우 성능이 거의 동일함.
⇒ 더 긴 maximum context window를 가진 모델이 context를 더 잘 활용하는 것 X
synthetic key-value retrieval task에 대한 연구
input
(i) k 개의 키-값 쌍을 가진 문자열로 직렬화된 JSON 객체 (각 키와 값은 고유한 무작위 생성 UUID)
(ii) 언급된 JSON 객체 내에서 특정 키
goal
speicified key와 연결된 value 반환
✔️ 각 JSON 객체는 하나의 관련 키-값 쌍을 포함, k - 1개의 관련 없는 "distractior" 키-값 쌍을 포함
✔️ accuracy 사용
✔️ synthetic key-value retrieval task는 input context에서 일치하는 토큰을 검색하는 것을 testbed로 함.
💡 input context length 조절 → distractor key-value pairs의 수를 증가 시키거나 감소시킴
관련된 정보의 위치를 조절 → 검색할 key의 위치를 조절
긴 input context에서 관련 정보가 중간에 위치해있을 때 언어 모델의 성능이 저하됨.
이러한 원인을 더 잘 이해하기 위해 다음의 것들을 실행함.
decoder only vs encoder-decoder
사용된 모델:
✔️ relative positional embedding 사용
⇒ 2048 토큰까지는 input context내에 관련 정보의 위치를 바꿔도 robust함 (2048 토큰보다 시퀀스가 길어지면 middle에서 다시 성능 저하)
⇒ encoder-decoder 모델은 양방향 인코더로 인해(prior token뿐 아니라 그 후에 있는 token도 참조할 수 있기 때문에) context window를 더 잘 활용할 수 있을 것
질문이나 키를(즉, 답변할 질문이나 검색할 키) 처리하는 데 있어서 데이터 (즉, 문서나 키-값 쌍) 다음에 질문이 오도록 설정
⇒ decoder 모델은 query token에 attend 할 수 없음 → prior token에만 attend 할 수 있기 때문에
(질문에 대한 프롬프트는 끝에 나옴)
⇒ encoder-decoder 모델이 위치가 변경되어도 더 robust함. (양방향 인코더를 사용하므로)
✔️ trade-off
input context length를 증가 → LM에 더 많은 정보 제공 & 모델이 추론해야 하는 content의 양 🔺
❓ LM이 16,000개의 토큰을 처리할 수 있으면 실제로 16,000개의 토큰을 제공하는 것이 좋은가?
downstream task마다 다름 & 추가된 context의 가치와 긴 input context를 효과적으로 활용할 수 있는 지에 대한 모델의 능력에 따라 다름.
실험
reader 모델의 성능이 retriever 모델의 성능 보다 더 빨리 포화됨 → readers가 추가된 context를 효과적으로 사용X
⇒ 모델들이 input context의 시작 또는 끝에서 정보를 검색하고 사용하는 데 더 능숙함
⇒ "effective reranking of retrieved documents"와 "ranked list truncation”이 context를 활용하기 위한 더 나은 방향
❓ "Effective Reranking of Retrieved Documents"
: 검색된 문서들을 다시 정렬하여 관련 정보를 input context의 시작 부분에 더 가깝게 위치시키는 것
ex) 관련 정보가 있는 문서를 먼저 나열하거나 가중치를 조절하여 중요한 정보에 더 집중
❓ "Ranked List Truncation"
: 검색된 문서들의 리스트를 필요에 따라 줄이는 것
ex) 모델이 다루기에 너무 많은 문서가 있는 경우, 중요한 정보만을 포함하는 작은 리스트로 줄일 수 있음