본문 바로가기
NLP/Prompt & Problem Solving

Lost in the Middle (2023) 논문 리뷰

by 아르카눔 2025. 4. 27.

Lost in the Middle의 논문 제목은 Lost in the Middle: How Language Models Use Long Contexts이다. (링크)

 

저자는 Nelson F. Liu, Kevin Lin, John Hewitt, Ashwin Paranjape, Michele Bevilacqua, Fabio Petroni, Percy Liang다.

 

Github: 링크

 

논문 제목에서 알 수 있듯이 언어 모델이 긴 컨텍스트를 다룰 때의 문제에 대한 논문이다.

 

 

 

Abstract

Long context를 사용할 때 relevant information 관련있는 정보의 위치에 따라서 성능이 급격하게 감소하는 현상을 발견했다. 따라서 현재의 언어 모델은 긴 입력 컨텍스트의 정보 활용에 있어서 로버스트하지 않음을 의미한다. 관련있는 정보가 처음와 끝에 위치할수록 좋은 성능이며, 이 정보가 중간에 놓일 경우 유의미하게 품질이 저하됨을 발견했다.

 

 

 

총 20개의 relevant documents가 있을 때 정답의 위치에 따른 accuracy 성능의 차이를 Figure 1에서 보여준다.

 

 

 

2. Multi-Document Question Answering

본 논문의 목표는 언어 모델의 입력 컨텍스트 사용에 대한 더 나은 이해다.

이를 위해 multi-document question answering을 선정했는데 이는 relevant information을 찾아내어 질문에 답하는 작업을 요구한다. 구체적으로 입력 컨텍스트와 관련있는 정보의 위치를 조정해서 태스크 성능의 차이를 측정한다.

 

2.1. Experimental Setup

 

Model inputs은 2가지로 구성된다. (1)은 답변에 대한 질문이고, (2)는 답변에 관련된 문서 정확히 한 개와 k - 1개의 답변과 관련이 없는 distractor 문서들이다. 이 태스크는 모델로 하여금 답변과 관련된 컨텍스트에 접근하고 이를 활용해 답변하도록 요구한다.

 

아래 Figure 2가 multi-document question answering의 구체적인 예시를 보여준다. 

 

NaturalQeustions-Open 데이터를 사용해서 태스크를 수행한다. 이 데이터를 구글 검색 엔진에서 발행된 역사상의 커ㅜ리들을 포함하며, Wikipedia에서 추출된 human-annotated answers와 커플링되어 있다.

 

저자들은 paragraph (list나 table와 반대되는)로 표기된 long answer를 가진 2655개의 쿼리를 선택하였으며 Wikipedia로 부터 나온 (최대 100 tokens의 청크) passages 단락을 입력 컨텍스트로 사용했다. NaturalQuestions의 annotations에 있는 정답을 포함한 Wikipedia paragraph 단락을 정답과 관련있는 문서로 사용했다.  

 

나머지 k - 1개의 distractor 문서를 모으기 위해서 retrieval system (Contriever, fine-tuned on MS-MARCO)를 이용해서 k - 1개의 Wikipedia 청크를 수집했다. 이 청크들은 쿼리와 가장 관련이 있으면서도 NaturalQuestions-annotated answers를 포함하지 않은 문서들이다. 입력 컨텍스트에서 distractor 문서들은 relevance가 감소하는 순서대로 배치한다. (아마 내림차순을 의미)

 

이 실험의 세팅은 needle-in-haystack 실험과 비슷하다. 관련있는 문서는 앞쪽에 위치하면 어떤지, 랜덤한 위치에 놓이면 어떤지를 탐구한다. 

 

Figure 3과 4는 각각 관련있는 문서의 위치와 길이에 따른 컨텍스트 프롬프트의 예시를 보여준다.

 

 

2.2. Models

 

Greedy decoding을 사용하였다.

 

Open Models

MPT-30B-Instruct와 최대 컨텍스트 길이는 8192 토큰으로 설정했다. 이 모델은 1조개의 토큰으로 사전학습되었으며 2048-token sequences를 사용했다. 추가적으로 8192-tokens sequences를 이용해서 50 B 토큰을 학습했다. 또한 LongChat-13B (16K) LLaMa-13B의 컨텍스트 윈도우를 2048에서 16384로 늘린 모델 with condensed rotary positional embeddings를 활용한 모델이다. 

 

Closed Models

OpenAI의 API를 활용해서 GPT-3.5-Turbo와 GPT-3.5-Turbo(16k)를 사용했다. 각각 최대 컨텍스트 토큰의 길이가 4K와 16K다.

또한 Claude-1.3과 1.3 (100K)를 Anthropic API를 활용해서 실험했으며 각각 최대 컨텍스트 길이가 8K와 100K다.  

 

 

3. Experiments

Effect of Position of Relevant Information

 

앞쪽에 올수록 가장 성능이 좋으며, 아니면 아예 맨 뒤에 위치하는게 성능이 좋다.

 

LMs Truly Retrieve? 

 

JSON 형식의 Key-Value 쌍에 대해서 작동하는지를 통해서 진정으로 입력 컨텍스트에서 retrieve가 가능한지 테스트했다.

 

75, 140, 300 k-v 쌍 (500 examples each)에 대해서 실험했다. 

 

 

실제로 컨텍스트를 이해한다고 볼 수 있다.

 

Why Models Not Robust to the Position?

 

Model Structure

Decoder only 모델에서만 그런건지를 확인하기 위해서 Encoder-decoder 모델인 Flan-T5-XXL과 Flan-UL2를 실험한다.

 

Encoder-decoder 구조의 모델에서도 같은 현상이 발생함을 알 수 있다.

 

Query location

 

쿼리의 위치가 관련이 있나 싶어서 쿼리를 문서의 앞 혹은 뒤에 배치해서 비교한다.

 

 

하지만 차이가 거의 없었다.

 

 

Instruction Fine-Tuning

 

Instruction fine-tuning 이후에는 특이하게도 맨 뒤쪽에 위치할수록 맨 앞쪽에 위치하는 것 보다 더 좋은 성능임을 보인다.

 

 

Llama-2 모델들을 이용한 실험에서도 유사한 결과를 보인다.

다만 중간에 위치해도 성능이 하락하지 않는 몇몇 케이스도 있다.

 

More Context Is Always Better?

 

앞의 결과를 보면 컨텍스트의 길이가 굳이 길어야하나라는 의문점이 생길 수 있다.

이에 대해서도 저자들이 실험을 했는데 Figure 11에서 보여주듯이 문서의 수가 많을수록 대체로 좋다. 

다만 20개 이후로는 그 증가 폭이 미미하다. 

 

With Random Distractor Documents

 

여기서는 연관이 없는 무작위의 위키피디아 문서들을 distractor 문서로 설정한다.

 

 

관련이 없는 문서라면 관련있는 문서가 어디에 오든 상관없어야 할 것 같지만 그렇지 않다는걸 보여준다.

 

관련있는 문서의 위치와 더불어서 상관없는 문서의 필터링 역시 중요하단걸 보여준다.

 

 

Shuffle Distractor Documents

 

본래는 distractor 문서들을 연관이 있지만 정답이 없는 문서들을 모아서 relevance 순서대로 내림차순으로 정렬한다.

하지만 여기서는 그 순서를 무작위로 섞어서 실험한다.

 

 

무작위로 섞어도 기존과 같은 결과임을 알 수 있다.

 

 

 

여담

 

RAG나 ICL에 있어서 LLM에게 주는 컨텍스트의 길이가 길어지게 되는데 이를 본격적으로 연구한 논문이라 흥미롭게 읽었다.