https://arxiv.org/pdf/2309.11495


Abstract:

  • 이 논문은 대규모 언어 모델(Large Language Models, LLMs)에서 환각(hallucination) 현상을 감소시키는 방법에 대해 다룸. 그 방법으로 COVE (Chain-of-Verification) 을 제안한다.
  • 환각이란, 언어 모델이 그럴듯하지만 실제로는 잘못된 사실 정보를 생성하는 문제를 말함.
  • COVE 방법은 다음과 같음:
    • 초안 생성(Initial Drafting): 모델이 먼저 질문에 대한 초기 답변을 생성
    • 검증 질문 계획(Planning Verification Questions): 생성된 초안을 토대로, 초안의 사실성을 확인하기 위한 검증 질문들을 계획함.
    • 독립적 검증(Independent Answering): 계획된 각 검증 질문에 대해 모델이 다른 답변의 영향을 받지 않고 독립적으로 답변함.
    • 최종 확인된 답변 생성(Final Verified Response): 검증 과정을 통해 얻은 정보와 결과를 종합하여 최종적으로 검증된 답변을 생성함.
  • COVE 방법을 사용했을 때 다양한 과제에서 환각 현상이 감소함을 보였다고 한다:
    • 특히 장문 텍스트 생성(long-form text generation) 과제와 위키데이터(wikidata) 를 기반으로 한 목록형 질문 작업, MultiSpanQA
  • Abstract 만 봤을 때는 정확한 답변을 생성해내는 작업들, 환각을 줄이는 작업들에 대해서 이 기법이 적합해보이는듯.

 

CoVe (CHAIN-OF-VERIFICATION):

  • CoVe의 핵심 가정은, 이 모델이 적절히 프롬프트를 제공받으면, 자신이 생성한 답변을 검증하기 위한 계획(verification plan)을 세우고 이를 실행하여 자신이 생성한 답변의 정확성을 스스로 평가하고 개선할 수 있다는 거임.
  • CoVe의 전체적인 과정 (4단계):
    • 초기 답변 생성(Generate Baseline Response):
      • 사용자 질문이 주어졌을 때, LLM을 사용하여 초기 답변을 생성하는 것.
      • 물론 이 초기 답변은 환각을 포함할 가능성이 있다.
    • 검증 계획 수립(Plan Verifications):
      • 주어진 질문과 초기 답변을 바탕으로, 원래의 답변에 오류가 있는지 식별하기 위해 검증 질문(verifying questions)을 생성한다.
      • 이 단계는 모델이 스스로 “어떤 부분을 검증해야 하는지”에 대한 질문들을 계획하는 단계임.
      • 예를 들어, 장문 모델 답변에 “멕시코-미국 전쟁은 1846년부터 1848년까지 미국과 멕시코 사이의 무력 충돌이었다”라는 문장이 포함되어 있다면, 검증 질문으로 “멕시코-미국 전쟁은 언제 시작해서 언제 끝났나요?“ 를 생성해볼 수 있을 것.
      • 검증 질문들은 정형화된 템플릿을 따를 필요 없이, 모델이 원하는 형식으로 자유롭게 생성할 수 있을 것이고, 실험에서는 Few-shot 프롬프트를 사용했다고 함.
    • 검증 실행(Execute Verifications):
      • 앞서 생성한 각 검증 질문에 대해 순차적으로 답변을 생성한다.
      • 이 단계에서는 RAG 와 같은 기법을 사용해서 외부 지식 스토어에서 데이터를 조회해보고 판단하는 방법도 있을거임. 하지만 여기서는 LLM 만을 이용.
      • 생성된 검증 질문에 답변함으로써, 모델은 원래 답변과 비교하여 모순이나 오류가 있는지 확인함.
      • 이 단계는 원래 답변에 포함된 사실 정보가 실제로 정확한지 개별적으로 검증하는 단계이다.
    • 최종 검증된 답변 생성(Generate Final Verified Response):
      • 검증 과정에서 발견된 불일치나 오류를 토대로, 검증 결과를 통합하여 향상된 최종 답변을 생성하는 단계다.
      • 이 단계에서는 검증 결과(수정된 정보 및 정정 사항)를 원래 답변에 반영하여 최종적으로 더 정확한 답변을 제공하는 단계임.
    • 이 4단계는 동일한 LLM에 서로 다른 프롬프트를 제공하여 수행하는거임.
    • 단계 (1), (2), (4)는 일반적으로 단일 프롬프트를 사용해서 실행될거임.
    • 단계 (3)에서는 검증 질문에 답변하는 다양한 변형 방법(joint, 2-step, factored)이 있을거임:
      • Joint Version:
        • 검증 계획(Plan Verifications) 단계와 검증 실행(Execute Verifications) 단계를 단일 프롬프트 내에서 수행하는 방법임.
        • 한 번의 프롬프트 호출로 검증 질문과 답변을 모두 처리할 수 있으므로 과정이 단순하지만, 모델이 같은 환각을 반복할 가능성이 있음.
      • 2-Step Version:
        • 검증 질문을 먼저 생성하고, 다음 프롬프트에서 그 질문들에 대해 답변을 생성하는 방식.
        • 검증 계획과 검증 실행을 두 개의 별도 프롬프트로 분리하는 방법임.
        • 첫 번째 프롬프트에서 모델은 초기 답변과 함께 검증 질문들을 생성하고, 두 번째 프롬프트에서는 생성된 검증 질문만을 맥락으로 제공하여 각 질문에 답변하게 될거임.
      • Factored Version:
        • 각 검증 질문에 대해 독립적인 프롬프트를 사용하여 답변하고, 더 정교하게 검증 과정을 분해하는 방식으로, 결과적으로 더 높은 성능을 제공할거임.
        • Factored 방법은 각 검증 질문마다 독립적인 프롬프트를 사용해서 답변을 하는 방법임.
        • 이전 단계에서 생성된 검증 질문들은 쉼표로 구분된 리스트로 출력되며, 이를 개별 질문들로 분할하여 각 질문에 대해 별도의 프롬프트를 사용하게 될거임.
        • 각 검증 질문에 대한 답변이 독립적으로 생성되므로, 한 질문에 대한 답변이 다른 질문이나 초기 답변의 영향을 받지 않음.
        • 또한 검증 질문의 수가 많을 때도 확장성이 뛰어남.
        • 각 검증 질문마다 별도의 프롬프트를 사용하므로, 계산 비용이 증가할 수 있음.
        • 검증된 질문을 이용해서 답변을 만들어내게 될거임.
      • Factor+Revise 방식:
        • Factor+Revise 방법은 Factored 방식을 확장한 것으로, 검증 질문에 대한 답변을 생성한 후에 교차 검증(Cross-checking) 단계를 추가로 수행하는 거임.
        • 교차 검증 단계에서는 별도의 프롬프트를 사용해 원래의 답변과 검증 질문 및 답변을 함께 고려하여, 원래 답변과 검증 결과 사이의 불일치나 모순을 식별하는 단계임.
        • 예를 들면 원래 답변에 “1846년부터 1848년까지 미국과 멕시코 사이의 전쟁이었다”라고 포함되어 있다고 가정해보자. 검증 질문으로는 “멕시코-미국 전쟁은 언제 시작했고 끝났나요?” 라고 묻고, 검증 답변으로는 “멕시코-미국 전쟁은 1846년에 시작해 1848년에 끝났습니다.” 이라고 도 가정해보자. 교차 검증 단계에서는 원래 질문과 검증 답변을 비교해서 일치하는지를 한번 더 확인하는 단계다.
        • 교차 검증 단계를 통해 원래 답변과 검증 답변 사이의 불일치를 명시적으로 확인하고, 정확한 최종 답변을 생성하는 데 도움이 될거임.
        • 반면 추가 단계로 인해 과정이 더 복잡해지고, 수행해야 할 프롬프트 수가 증가할 수 있다.

 

 

CoVe Factor + Revise 방법:

  • 이 방법은 검증 단계에서 모델이 독립적으로 사실들을 식별(크로스 체크)하고, 실행된 검증과 일치하는지 여부를 파악하는 단계를 추가로 거침
  • 이 추가 단계로 인해 모델은 부정확한 사실을 제거하고, 정확한 사실들만 사용하여 최종 답변을 재생성하게 됨.

 

CoVe Prompt Template - GENERATE BASELINE RESPONSE:

 

 

CoVe Prompt Template - PLAN VERIFICATIONS: 

 

 

CoVe Prompt Template - EXECUTE VERIFICATIONS: 

 

 

CoVe Prompt Template - GENERATE FINAL VERIFIED RESPONSE: 

 

CoVe Prompt Template - FACTOR+REVISE: IDENTIFY WHICH FACTS ARE CONSISTENT (Cross-check):

 

 

 

CoVe Results:

  • CoVe는 목록 기반의 답변 태스크에서 큰 폭의 정밀도(precision) 향상을 가져왔다고 함:
    • 예를 들어, Wikidata 태스크에서, Llama 65B 모델의 few-shot 기본 성능이 정밀도 0.17에서 CoVe 적용 후 0.36 으로 향상.
    • 정밀도 향상의 주요 원인은 환각된 답변의 수가 크게 감소했기 때문이라고 한다.
    • 네거티브(잘못된 항목)는 평균 2.95개에서 0.68개로 줄었다고 함.
    • 하지만 올바른 항목(positives)의 수도 약간 감소(0.59개에서 0.38개로) 했다고도 함.
  • 폐쇄형 질의응답(Closed Book QA)에서의 성능 향상:
    • MultiSpanQA 데이터셋을 사용한 일반적인 QA 문제에서도 CoVe는 성능 향상을 가져왔다고 함.
    • F1 스코어가 기본 few-shot 접근보다 23% 향상(0.39 → 0.48)되었다고 한다.
  • 장문 생성(Longform Generation)에서의 정밀도 향상:
    • 장문 생성 태스크에서도 CoVe는 높은 성능 향상을 보였다고 함
    • FACTSCORE(사실적 정확성을 측정하는 지표)는 55.9에서 71.4로 28% 로 상승했다고 한다.
    • 정보량(평균 사실 수)은 약간 감소(16.6에서 12.3)했지만, 정확도가 크게 향상되었다고 함.
  • Instruction-tuning과 CoT는 환각을 감소시키지 못함:
    • 퓨샷(few-shot) 학습을 적용한 Llama 모델이 Llama 2 Chat(Instruction-tuned 모델)보다 모든 태스크에서 더 뛰어난 성능을 보였다고 함.
    • Instruction-tuning은 일반적인 지시를 잘 따르지만, 환각이나 잘못된 출력이 증가하는 경향이 있다고 함.
    • CoT는 추론 태스크에는 도움이 되지만, 이 연구에서 측정하는 환각 문제 개선에는 적합하지 않다라고 한다.
  • Factored 및 2-Step CoVe 방식의 성능 개선:
    • Factored CoVe 접근법은 Joint CoVe와 비교했을 때 모든 태스크에서 일관된 성능 향상을 보여줬따고 함.
    • -Step 접근법도 Joint 접근법보다 뛰어난 성능을 보였다고 함.
    • Joint 방식은 초기 답변의 환각을 반복하는 경향이 있었다고 함.
  • 추가적인 명시적 추론으로 환각 제거에 도움:
    • 장문 생성 태스크에서 “Factor+Revise” 방법을 통해 더욱 정교한 추론 단계를 도입했다고 한다.
    • 이 방법을 사용했을 때, FACTSCORE가 63.7에서 71.4로 크게 향상되었다고 함.
    • 명시적인 교차 검증(cross-check)을 통해 검증 답변이 원래 답변과 상충하는지를 확인함으로써 환각을 보다 효과적으로 제거할 수 있었다고 한다.
  • CoVe 적용한 Llama, InstructGPT, ChatGPT, PerplexityAI 모델보다 우수한 성능 발휘:
    • 장문 생성 태스크에서, 원래의 few-shot Llama 65B 모델은 FACTSCORE 측면에서 ChatGPT와 PerplexityAI 모델에 비해 뒤쳐졌다고 함.
    • 그러나 CoVe를 적용한 Llama 65B 모델은 ChatGPT와 PerplexityAI를 능가했으며, InstructGPT 모델보다도 높은 성능을 보였다고 한다.
    • PerplexityAI 모델은 사실 검색을 위한 검색 능력을 갖추고 있음에도 CoVe를 적용한 Llama 65B에 뒤졌다고 한다.
    • 이는 CoVe가 외부 지식 검색 없이도 모델의 추론 과정을 향상시켜 환각을 줄이는 데 매우 효과적임을 보여줬다고 함.
    • PerplexityAI는 매우 희귀한 사실에 대해서는 여전히 우수한 성능을 보이지만 CoVe는 더 흔한 사실에 대해 우수한 성능을 발휘한다고 한다.
  • 장문 텍스트 생성에서 단문 검증 질문은 더 정확하게 걸러내서 정확도 높은 답변을 만들 수 있음.
    • LLM은 장문 답변에서 여러 환각을 생성하는 경향이 있음. 이는 개별 사실에 대해 직접적으로 묻는 단문 검증 질문으로 정확하게 걸러내서 정확도 높은 답변을 만들 수 있음. 
    • LLM은 장문 생성 시 연속적인 문맥을 고려하여 여러 문장을 생성해야 하기 때문에 잘못된 정보가 포함될 가능성이 큼.
    • 하지만 단문 검증 질문은 하나의 사실에 대해 구체적으로 질문을 던지는 방식으로, 모델이 특정 사실에 대한 독립적인 답변을 하니까 정확도가 높게 검증할 수 있음.
    • 예를 들어, Wikidata 태스크에서 Llama의 few-shot 기준 답변의 정확률은 약 17%였지만, 개별 항목에 대해 검증 질문을 했을 때는 알고 있을 확률이 70%에 달했다고 함.
    • 모델은 장문 생성 시에는 혼선을 일으킬 수 있는 반면, 구체적인 사실을 묻는 질문에는 더 정확하게 답변한다.
  • LLM 기반 검증 질문은 휴리스틱(Heuristic) 기반 검증 질문보다 우수함:
    • LLM이 생성한 검증 질문과 휴리스틱한 방법으로 생성된 검증 질문(예: “Does X answer the question?”)을 비교했을 때, LLM이 생성한 질문을 사용하는 것이 더 높은 성능을 보였다고 함.
    • LLM 기반 검증 질문은 대규모 언어 모델(LLM)이 특정 태스크에 맞추어 생성한 것을 말함. 이는 태스크의 특성과 생성된 초기 답변의 내용을 반영해서 만들어진 것일 거임. 
    • 반면 휴리스틱한 방식으로 생성된 검증 질문은 사전에 정의된 템플릿이나 규칙 기반으로 생성된 질문일거임. 이러한 질문은 특정 패턴이 있고, yes/no 형식으로 답변할 수 있다.
    • 이는 LLM 기반 검증 질문이 태스크 특성에 맞는 질문보다 다양하고 정확한 검증 질문을 생성할 수 있음을 시사한다.
  • 열린 검증 질문(Open-ended Verification Questions)은 예/아니오(Yes/No) 질문보다 우수함:
    • 검증 질문에 사실을 포함시켜 예/아니오 형식으로 답하게 하는 방식도 사용해봤는데 예/아니오 질문 형식은 모델이 잘못된 정보에도 찬성하는 경향이 있다고 함. 그래서 정확도 향상에 도움을 주지 못했고, 열린 검증 질문이 더 나았다고 한다.
    • 그러니까 Factored 버전의 질문과 Yes/No 형식의 질문을 비교했을 떄 Factored 버전의 질문이 더 나았다는 거임. 
    • Factored 버전의 질문은 예/아니오로 대답하는 대신 좀 더 상세하게 대답을 하도록 한 거임. 예를 들어서“멕시코-미국 전쟁이 시작된 정확한 날짜는 언제인가요?” 라고 물어보고, “멕시코-미국 전쟁은 1846년에 시작되었습니다.” 라고 응답하도록 만드는 질문 형식이다. 

 

 

Limitations:

  • CoVe가 베이스라인 모델보다 환각을 줄이긴 하지만, 여전히 잘못된 정보나 오해를 일으킬 수 있는 정보가 생성될 가능성이 있음.
  • 실험에서 주로 사실적 오류를 해결하는 데 집중했으나, 환각은 잘못된 추론 과정, 주관적 견해 등 다른 형태로도 나타날 수 있음. CoVe는 이러한 다양한 환각 형태를 모두 다루지는 않음. 
  • CoVe는 각 답변에 대해 검증 과정을 추가로 수행하므로, 생성 과정에서 더 많은 토큰을 사용하고 계산 비용이 증가할 수 있음.
  • CoVe는 모델이 자신의 오류를 인식하고 수정하도록 돕지만, 궁극적인 개선 한계는 모델 자체의 능력에 달려있음.
  • 모델 자체의 파라미터에 저장된 정보 외에 외부 도구를 활용하면 성능을 높일 수 있지만, 본 연구에서는 이를 탐구하지 않았음.
  • 외부 정보 소스를 이용해 부족한 정보를 보완하는 방법은 CoVe와 결합하여 더 나은 성능을 낼 수 있을 가능성이 높음.

+ Recent posts