논문

[논문 리뷰]31. CHAIN - OF -VERIFICATION REDUCES HALLUCINATION IN L ARGE LANGUAGE MODELS

정일균 2024. 9. 13. 14:32

아아아아아 논문주제!!!!!!!!!! 너무 힘들어


언어 모델이 스스로 생성한 응답을 검토하여 실수를 교정하는 능력을 연구

Chain-of-Verification (COVE) 방법을 개발

(i) 초기 응답을 작성한 후

(ii) 초안을 사실 확인하기 위해 검증 질문을 계획하고

(iii) 다른 응답에 의해 편향되지 않도록 독립적으로 그 질문에 답한 다음

(iv) 최종 검증된 응답을 생성하는 과정

 

실험에서 COVE가 위키데이터의 목록 기반 질문, 폐쇄형 MultiSpanQA, 장문 텍스트 생성 등 다양한 작업에서 hallucination을 감소시킨다는 것을 보여줌


LLMs은 수십억 개의 토큰을 포함한 방대한 텍스트 문서로 학습

모델의 파라미터 수가 증가함에 따라 closed book QA와 같은 작업에서 정확도가 향상되고, 더 큰 모델은 보다 정확한 사실적 문장을 생성할 수 있음이 입증

그러나 가장 큰 모델조차도 여전히 실패할 수 있으며, 특히 학습 데이터에 상대적으로 드물게 등장하는 torso  tail distribution facts에서 그러함

Torso 및 tail distribution facts는 언어 모델이 처리할 때 특정 데이터의 빈도와 관련된 개념
이 개념은 Zipf의 법칙이나 긴 꼬리 분포(long tail distribution)에서 비롯

1. Torso:
Torso facts는 빈도 분포에서 중간 정도로 나타나는 사실들을 의미
즉, 학습 데이터에서 자주 등장하지는 않지만, 그래도 꽤 자주 등장하는 사실들
이런 사실들은 아주 흔한 사실(머리 부분, head facts)보다는 덜 알려져 있지만, 여전히 어느 정도 인식되고 있음

2. Tail distribution facts:
Tail facts는 긴 꼬리 분포의 "꼬리"에 위치한, 매우 드물게 등장하는 사실들을 가리킴
학습 데이터에 거의 등장하지 않는 정보들로, 모델이 이러한 사실을 학습할 기회가 적기 때문에 처리하기가 더 어려움

이 경우 모델은 종종 유사한 개체이지만 잘못된 대안을 생성, 이러한 사실적으로 부정확한 생성은 hallucinations라 지칭

 

또한 여러 문장이나 단락을 생성하는 장문 작업에서는 exposure bias 문제로 인해 hallucination 문제가 더욱 악화될 수 있음

Exposure bias는 특히 언어 모델이 여러 문장이나 단락을 생성하는 장문 작업(long-form tasks)에서 문제가 될 수 있는 현상
이 문제는 모델이 학습과 생성 시기 간의 불일치로 인해 발생 

학습 시 불일치
학습 시기에는 모델이 항상 정답 데이터를 참고하면서 학습
즉, 모델은 항상 올바른 문맥에서 다음 단어를 예측
이 과정에서 모델은 모든 상황이 정확한 문맥에서 이루어진다고 가정하고 학습

생성 시 불일치
생성 시기에는 모델이 스스로 생성한 텍스트를 기반으로 다음 단어를 예측해야 함
즉, 학습 시기와 달리 정답 데이터 없이 진행되며, 만약 잘못된 단어를 하나라도 생성하게 되면 그로 인해 이후 예측이 더 부정확해질 수 있음
결국, 학습 시기의 조건(정답 데이터를 기반으로 예측)과 생성 시기의 조건(모델이 생성한 데이터를 기반으로 예측)이 다르기 때문에, 모델이 실제 생성 중에는 자신의 생성 결과에 의존하면서 점점 더 큰 오류를 범할 가능성이 생김
이로 인해 exposure bias 문제가 발생

1. Exposure bias의 개념
학습 시: 언어 모델은 정확한 데이터를 사용해 다음 단어를 예측하도록 학습
즉, 모델이 다음 단어를 예측할 때, 실제 문장을 기반으로 한 번에 한 단어씩 예측

생성 시: 모델이 문장을 생성할 때는, 이전 예측 결과를 바탕으로 다음 단어를 예측
이때, 모델이 잘못된 단어를 예측하면, 그 단어가 다음 예측의 입력값이 되고, 그러면 잘못된 정보가 연쇄적으로 영향을 미쳐 더 많은 오류를 일으킬 수 있음
이러한 과정에서 hallucination 문제가 발생할 수 있음

2. 장문 작업에서의 문제
장문 작업에서는 여러 문장이나 단락을 연속적으로 생성해야 하기 때문에, exposure bias가 더 큰 영향을 미침
한 번의 잘못된 예측이 뒤따라 나오는 문장들에도 영향을 미쳐, hallucination(사실과 다르거나 그럴듯하지만 틀린 정보)이 더욱 악화될 수 있음

 

현재 언어 모델링 연구는 단순한 다음 단어 예측을 넘어 모델의 추론 능력에 초점

추론 작업에서 성능을 개선하려면 언어 모델이 먼저 내부 사고 과정이나 추론 체인을 생성한 후 응답하도록 유도하는 것이 효과적

또한 초기 응답을 self-critique를 통해 수정하는 방식도 성능 향상에 기여

본 연구에서는 hallucination을 줄이기 위해 언어 모델 기반 추론이 어떻게 그리고 언제 사용될 수 있는지 연구

Chain-of-Verification (CoVe)라는 접근 방식을 개발했으며, 이는 초기 초안 응답이 주어졌을 때, 먼저 검증 질문을 계획하여 해당 응답을 확인하고, 그 질문에 체계적으로 답변한 후 최종적으로 개선된 수정 응답을 생성하는 방식

독립적인 검증 질문이 원래 장문 응답보다 더 정확한 사실을 제공하는 경향이 있으며, 결과적으로 전체 응답의 정확성을 향상시킴

우리는 이 방법의 변형을 다양한 작업에 걸쳐 연구했으며, 목록 기반 질문, closed book QA, 장문 텍스트 생성에 적용

먼저 전체 검증 체인을 왼쪽에서 오른쪽으로 생성하는 공동 접근 방식을 제안했으며, 이는 기본 언어 모델과 비교해 성능을 개선하고 hallucination을 줄였음

그러나 모델이 자체 생성된 문맥 내에서 기존 hallucination에 주의를 기울이면 이를 반복하는 경향이 있음을 발견

이 문장은 언어 모델이 생성하는 과정에서 나타날 수 있는 문제점을 설명
언어 모델은 텍스트를 생성할 때 이전에 생성한 문맥을 바탕으로 새로운 내용을 생성
하지만 만약 처음에 잘못된 정보를(즉, hallucination) 생성했다면, 모델이 그 잘못된 정보를 다시 사용할 가능성이 커짐
모델은 이전에 자신이 생성한 응답을 바탕으로 계속해서 새로운 응답을 만들어내는데, 이때 처음 생성한 hallucination(잘못된 정보)에 기반하여 이후 응답에서도 반복적으로 동일한 잘못된 정보를 포함할 수 있음
이를 반복(repetition)이라고 표현한 것

 

따라서 각 검증 체인의 단계를 구분하여 어떤 문맥에 주목할지 분리하는 factored variants를 도입했고, 이러한 변형들이 세 가지 작업 모두에서 더 나은 성능을 보여준다는 것을 확인

이 문장은 CoVe(Chain-of-Verification) 접근 방식을 더욱 정교하게 만든 factored variants의 도입과 그 효과를 설명
이를 이해하기 위해 먼저 검증 과정이 어떻게 이루어지는지 설명

기존 CoVe 방식:
모델이 처음 응답을 생성한 후, 검증을 위한 질문을 생성
그 질문에 답을 하면서, 모델이 이전에 만든 응답을 참고하여 답을 검토하고 수정
하지만 여기에서 문제는, 모델이 이전에 생성한 잘못된 응답(즉, hallucination)을 기반으로 검증 질문에 답하면, 같은 오류를 반복할 수 있다는 점
즉, 검증 단계에서 모델이 기존 문맥(잘못된 응답)에 주목하면, 같은 오류를 계속 반영하게 된다는 것

Factored variants의 도입:
Factored variants는 검증 과정에서 모델이 기존의 잘못된 응답을 참고하지 못하도록 검증의 각 단계를 분리하는 방식
즉, 검증을 위한 질문을 만들고, 그 질문에 대한 답변을 할 때 기존 응답을 완전히 배제하고 새로운 정보로만 답변하도록 문맥을 구분
이렇게 함으로써, 잘못된 정보를 반복하거나 복사할 가능성을 줄이는 것
검증 과정을 두 단계로 나누어 수행
1) 검증 질문 생성
원래의 응답에서 오류를 찾아낼 수 있는 질문을 생성
2) 검증 답변 생성
질문에 대한 답변을 생성하는데, 이때 원래 응답은 고려하지 않고 오직 질문에만 집중하여 답변을 만듦.

효과
이 방식은 모델이 동일한 hallucination을 반복하지 않고, 질문에 더 집중할 수 있도록 함
이를 통해, 모델이 더 정확한 답변을 생성할 수 있었고, 세 가지 작업(목록 기반 질문, 폐쇄형 질문 응답, 장문 생성 작업) 모두에서 성능이 향상


 

Hallucination은 요약에서부터 개방형 대화에 이르기까지 다양한 작업에서 나타나는 언어 모델 생성의 일반적인 문제

이는 단순히 학습 데이터나 모델 크기를 확장한다고 해서 해결되지 않음

 

Hallucination을 줄이기 위한 방법은 크게 세 가지 범주로 나눌 수 있음

1) Training-time correction

encoder-decoder 또는 decoder-only 언어 모델의 좌측에서 우측으로의 원시 생성을 개선하기 위해 모델 가중치를 조정하거나 학습하여 hallucination 발생 확률을 줄이는 시도

이에는 reinforcement learning, constrastive learning, 기타 방법 등이 포함

 

기타 방법

(1) Data Augmentation (데이터 증강):

  • 더 많은 고품질의 데이터를 제공하여 모델이 학습하는 동안 더 다양한 정보를 접할 수 있게 하여, 정확한 정보를 생성할 확률을 높임
  • : 모델에게 같은 질문에 대해 여러 번 답변하게 하고, 다양한 상황에서 일관된 답변을 생성할 수 있도록 학습함

(2) Negative Training (음성 학습):

  • 잘못된 정보를 학습 데이터에 의도적으로 포함시켜 모델이 잘못된 답변을 피하도록 훈련
    이는 모델이 잘못된 답변의 패턴을 학습하여, 해당 패턴을 반복하지 않도록 만드는 방식
  • : 잘못된 정보가 포함된 데이터를 주고, 모델이 그 정보를 무시하고 올바른 답변을 도출하도록 훈련

(3) Fact Verification (사실 검증):

  • 모델이 답변을 생성하는 도중 또는 생성된 후에, 사실 검증 시스템을 추가로 활용하여 잘못된 정보를 자동으로 수정하는 방식
    이는 추가적인 검증 단계를 통해 환각을 줄임
  • : 모델이 생성한 답변을 외부 지식베이스와 비교하여 일치하지 않는 정보를 걸러냄

2) Generation-time correction

기본 LLM에 기반한 추론 결정을 더욱 신뢰할 수 있도록 만드는 것이 공통된 주제

생성된 토큰의 확률을 고려하는 방식

  • 언어 모델이 텍스트를 생성할 때 각 단어(토큰)에 대해 확률을 계산
    확률이 높은 단어일수록, 모델은 그 단어가 문맥에 적합하다고 판단
  • hallucination을 줄이기 위해, 생성된 단어들의 확률을 기반으로 신뢰할 수 있는 선택을 할 수 있음
    예를 들어, 생성된 단어의 확률이 매우 낮다면, 그 단어는 hallucination일 가능성이 큼
    이럴 때는 해당 단어를 수정하거나 다른 대안을 찾는 방식으로 hallucination을 완화할 수 있음

모델에서 여러 샘플을 추출하여 hallucination을 감지

  • 하나의 생성된 텍스트만을 사용하지 않고, 여러 번 모델을 실행하여 샘플을 얻음
    이렇게 여러 샘플을 비교하면 일관성이 있는 정보와 일관되지 않은 정보를 구별할 수 있음
  • 예를 들어, 모델이 한 번의 실행에서 "A는 B의 수도"라고 하고, 다른 실행에서는 "A는 C의 수도"라고 말한다면, 이 두 결과 사이에 불일치가 있음을 발견할 수 있음
    이때 모델은 hallucination을 의심할 수 있으며, 이를 확인하고 수정할 수 있음

신뢰도 점수가 낮은 부분에서 hallucination을 식별하고, 올바른지 확인한 후 이를 완화하여 생성을 계속

  • 신뢰도 점수(confidence score)는 모델이 특정 단어나 문장을 생성할 때 얼마나 확신하는지를 나타내는 지표
    이 점수가 낮다면, 모델이 그 정보를 자신 있게 제공하지 않는다는 뜻
  • hallucination이 발생할 가능성이 높은 부분은 보통 신뢰도 점수가 낮은데, 이 점수를 기반으로 해당 부분을 사실적으로 검증하거나 수정하는 방법을 사용할 수 있음
    신뢰도 점수가 낮은 부분을 확인한 후, 그 정보를 검토하고 필요하면 수정한 다음 계속해서 텍스트를 생성하는 것

신뢰도 점수를 사용하는 대안으로는 LLM의 출력에서 불일치를 이용해 hallucination을 감지하는 방법이 있음

  • 신뢰도 점수를 사용하지 않는 대안으로, 모델이 생성한 여러 출력 간의 불일치를 감지하여 hallucination을 발견할 수 있음
  • 예를 들어, 모델이 같은 질문에 대해 여러 번 다른 답을 제공하면, 그 중 일부는 사실적으로 부정확할 가능성이 있습니다. 이런 경우, 모델은 그 불일치를 분석하여 잘못된 정보를 수정할 수 있음

여러 샘플과 일관성 감지를 결합하여, 직접적이거나 간접적인 질문을 통해 hallucination된 참조를 확인

  • 여러 샘플을 생성하고, 그 결과들 간의 일관성을 평가하는 방식
    모델은 직접적인 질문 간접적인 질문을 결합하여, hallucination된 참조가 있는지 확인할 수 있음
  • 예를 들어, "A는 B의 수도인가?"와 같은 직접적인 질문과, "B에 있는 중요한 건물은 무엇인가?"와 같은 간접적인 질문을 통해 모델이 일관된 답을 제공하는지 확인할 수 있음
    이러한 방식으로 hallucination을 탐지하고 수정할 수 있음

두 개의 LLM 간의 상호작용을 시뮬레이션하여 하나의 LLM이 검사자로 작동하며 반복된 교차 검사를 통해 출력이 일관된지 테스트하는 LM vs LM이라는 방법을 도입

  • LM vs LM 방식은 두 개의 언어 모델(LLM)이 서로 검사자와 응답자 역할을 하여, 모델 간의 상호작용을 통해 hallucination을 감지하는 방식
  • 하나의 모델이 검사자로 작동하여, 다른 모델이 생성한 응답을 교차 검사
    이 과정에서 두 모델이 반복적으로 상호 검토하면서 응답의 일관성을 확인
  • 이 방식은 QA(질문-응답) 작업에서 신뢰도 점수를 사용하는 것보다 더 효과적으로 hallucination을 감지할 수 있음을 보여줌
    여러 차례의 상호 검토 과정을 통해 잘못된 정보가 드러날 가능성이 크기 때문

QA 작업에서 일관성을 사용하는 것이 신뢰도 점수를 사용하는 것보다 hallucination 감지에서 더 나은 성능을 낼 수 있음을 보임

  • COVE(Chain-of-Verification)도 자기 일관성(self-consistency)을 사용하는 방식
    즉, 모델이 스스로 생성한 응답을 다시 검토하고 검증 질문을 통해 일관성을 확인
  • 하지만 LM vs LM처럼 다중 에이전트(즉, 두 개의 LLM이 서로 상호작용하는 방식)는 사용하지 않음
    대신 COVE는 단일 모델 내에서 검증 질문을 통해 스스로 검토하는 방식으로 hallucination을 줄이는 것

COVE도 이와 관련된 자기 일관성 접근 방식을 사용하지만, 다중 에이전트(다중 LLM) 논쟁 개념은 없습니다.

 

3) Via augmentation (tool-use)

언어 모델 자체의 능력에만 의존하지 않고 외부 도구를 사용하여 hallucination을 완화하는 것

예를 들어, retrieval-augmented generation은 실제 문서를 사용하여 hallucination을 줄일 수 있음

다른 접근 방식으로는 도구를 사용한 사실 확인이나 외부 문서에 대한 인용 링크를 제공하는 방법 등이 있음

또한 논리적 및 수학적 작업에 대한 추론을 개선하는 관련 연구들이 있으며, 이들은 hallucination 문제를 명시적으로 다루지 않더라도 결과 개선을 보인 바 있음

몇몇 접근 방식은 시스템의 확장된 추론 단계를 통해 성과를 개선한 것으로 나타남

예를 들어, chain-of-thought, deductive verification, self-verification 이 있음


CHAIN-OF-VERIFICATION

base LLM에 대한 접근을 가정하며, 이 LLM hallucination에 취약할 가능성이 있음에도 불구하고, few-shot 또는 zero-shot 방식으로 일반적인 지시를 받을 수 있음
이 방법의 핵심 가정은 이 언어 모델이 적절한 프롬프트를 받았을 때 스스로를 검증하고 자신의 작업을 점검하는 계획을 수립하고 실행하며, 최종적으로 이 분석을 개선된 응답에 통합할 수 있다는 점

 

Chain-of-Verification (CoVe)라고 부르는 전체 프로세스는 다음 네 가지 핵심 단계를 수행

  1. Generate Baseline Response: 주어진 쿼리에 대해 LLM을 사용하여 응답을 생성
  2. Plan Verifications: 쿼리와 baseline response를 기반으로, 원래 응답에 오류가 있는지 스스로 분석할 수 있는 검증 질문 목록을 생성
  3. Execute Verifications: 각 검증 질문에 순차적으로 답변하여, 답변을 원래 응답과 비교해 불일치나 오류가 있는지 확인
  4. Generate Final Verified Response: 발견된 불일치(있는 경우)를 바탕으로 검증 결과를 반영한 수정된 응답을 생성

이러한 단계는 동일한 LLM에 서로 다른 방식으로 프롬프트를 하여 수행
1, 2, 4단계는 모두 단일 프롬프트로 호출될 수 있지만, 3단계에서는 joint, 2-step, factored 버전 등 다양한 변형을 조사
이러한 변형은 단일 프롬프트, 두 개의 프롬프트 또는 질문마다 독립적인 프롬프트를 포함하며, 더 정교한 분해가 더 나은 결과를 낳을 수 있음

BASELINE RESPONSE

쿼리가 주어지면, LLM을 사용하여 평소처럼 좌측에서 우측으로 응답을 생성

이는 CoVe 파이프라인의 첫 번째 단계이며, 실험에서 향상시키고자 하는 baseline
즉, 우리는 이 baseline response와 전체 메서드에서 도출된 최종 검증 응답을 직접 비교

이러한 baseline 생성은 일반적으로 hallucination에 취약하므로, CoVe는 이러한 hallucination을 식별하고 다음 단계에서 이를 수정하려고 함

PLAN VERIFICATIONS

원래 쿼리와 baseline response를 기반으로, 모델은 원래 baseline response에서 사실적 주장들을 검증할 수 있는 일련의 검증 질문을 생성하도록 프롬프트

예를 들어, 장문 모델 응답의 일부가 "The Mexican–American War was an armed conflict between the United States and Mexico from 1846 to 1848"라는 문장을 포함하는 경우, 이러한 날짜를 확인할 수 있는 하나의 검증 질문은 "When did the Mexican American war start and end?"가 될 수 있음
우리는 검증 질문이 템플릿화되지 않으며, 언어 모델이 자유롭게 질문을 구체화할 수 있음을 주목
또한, 이 질문들이 원래 텍스트의 표현과 꼭 일치할 필요는 없음

이 문장은 검증 질문을 생성할 때, 모델이 원래 Baseline Response에서 사용된 표현을 그대로 따를 필요는 없다는 것을 설명
즉, 검증 질문은 자유롭게 만들어질 수 있으며, 반드시 원래 문장과 동일한 표현이나 단어를 사용할 필요가 없음

예시를 통해 설명:
원래 응답이 "The Mexican–American War was an armed conflict between the United States and Mexico from 1846 to 1848"라는 문장을 포함하고 있다고 가정

여기에서 중요한 정보는 전쟁이 시작되고 끝난 날짜입니다.

직접적으로 표현을 따르는 질문: "When did the Mexican–American War start and end?" (원래 문장의 표현을 거의 그대로 사용한 질문)
다르게 표현된 질문: "What are the start and end dates of the Mexican–American War?" (다른 표현을 사용했지만 의미는 동일)

위 예시처럼, 검증 질문은 원래 문장의 특정 표현을 그대로 복사하지 않아도 괜찮으며, 의미가 통하는 한 어떤 방식으로든 질문을 구체화할 수 있음
이로 인해 모델이 다양한 방식으로 검증 질문을 생성할 수 있는 유연성을 가지게 됨

이 유연성은 모델이 원래 문장을 검토할 때 더 다양한 각도에서 문제를 찾고 해결할 수 있도록 도움
중요한 것은 의미가 일치하는 것이지, 단어 하나하나가 동일해야 한다는 것은 아님!

우리의 실험에서, 우리는 few-shot 프롬프트를 제공하여 (응답, 검증) 시연을 LLM에게 수행하게 함

성능이 충분히 좋은 instruction-following LLM을 사용할 경우, 이는 zero-shot으로도 수행될 수 있음

EXECUTE VERIFICATIONS

계획된 검증 질문이 주어지면, 다음 단계는 각 검증 질문에 답하여 hallucination이 있는지 평가하는 것

이 과정에서 검색 엔진을 통한 검증과 같은 retrieval-augmentation 기법이 사용될 수 있지만, 이번 연구에서는 사용하지 않음

대신, CoVe의 모든 단계에서 LLM 자체만을 사용하여 모델이 자신의 작업을 확인하도록 함

joint, 2-Step, factored, factor+revise라는 여러 검증 실행 변형을 조사

  • Joint: joint 방식에서는 계획 및 실행(단계 2와 3)이 단일 LLM 프롬프트를 사용하여 수행되며, few-shot 시연에는 질문과 답변이 즉시 뒤따릅니다. 이 접근 방식에서는 별도의 프롬프트가 필요하지 않음
Joint 방식에서는 검증 질문을 만들고 그 질문에 대한 답변을 한 번에 처리
단일 프롬프트로 실행되며, few-shot 방식에서는 모델에게 검증 질문과 그 답변이 함께 제공
즉, 모델은 처음에 주어진 응답을 바탕으로 검증 질문을 만들고, 바로 그 질문에 대한 답변을 생성하는 과정을 한 번에 처리

장점:
한 번의 프롬프트로 모든 과정을 처리할 수 있어 간단하고 빠름

단점:
문맥 의존성 문제가 발생할 수 있음
검증 질문이 Baseline Response에 의존하는 상태에서 질문이 생성되고, 그 질문에 대한 답변도 초기 응답에 의존할 수 있음
이로 인해 hallucination가 반복될 가능성이 있음
즉, 모델이 원래 응답에서 잘못된 정보를 포함하고 있었다면, 그 잘못된 정보가 검증 과정에서도 반복될 수 있음
  • 2-Stepjoint 방식의 잠재적 단점은 검증 질문이 LLM 문맥에서 baseline response에 조건부로 설정되어야 하며, 이 방법이 joint이기 때문에 검증 답변도 초기 응답에 의존해야 한다는 점
    이는 반복 가능성을 높일 수 있음
    따라서 계획과 실행을 별도의 단계로 분리함
    계획 프롬프트는 첫 번째 단계에서 baseline response에 조건을 두고, 계획된 검증 질문은 두 번째 단계에서 응답
    이때 중요한 것은 LLM프롬프트에 제공된 문맥에 오직 질문만 포함되고, 원래 baseline response는 포함되지 않기 때문에 해당 응답을 직접 반복할 수 없다는 것
2-Step 방식은 Joint 방식의 문제점을 해결하기 위해 검증 질문을 만드는 과정과 그 질문에 대한 답변을 두 개의 단계로 나눔

첫 번째 단계:
Baseline Response에 기반하여 검증 질문을 만듦
여기까지는 Baseline Response에 의존하지만, 이 단계에서는 아직 답변을 생성하지 않음

두 번째 단계:
검증 질문에 대해 따로 생성된 문맥에서 답변을 만듦
중요한 점은, 이 문맥에는 원래 Baseline Response가 포함되지 않기 때문에, 모델이 이전에 생성한 잘못된 응답을 그대로 반복할 수 없음

장점:
반복 오류를 방지할 수 있음
즉, 검증 질문과 답변을 분리하여 각 단계에서 독립적으로 처리할 수 있음

단점:
두 번의 프롬프트를 사용해야 하므로 시간과 자원이 더 많이 소요
  • Factored: 좀 더 정교한 접근 방식으로, 모든 질문에 독립적으로 개별 프롬프트로 답하는 방법
     factored 접근 방식은 원래 baseline response뿐만 아니라 답변 간의 상호 간섭을 제거하는 추가 이점이 있음
    이 방식은 더 많은 검증 질문을 처리할 수 있으며, 모든 질문이 동일한 문맥에 들어맞아야 할 필요가 없기 때문
Factored 방식은 더 정교한 방법으로, 각 검증 질문에 대해 독립적으로 개별 프롬프트로 답변을 생성
각 검증 질문이 서로 독립적으로 처리되므로, 모델이 한 질문에 대한 답변을 생성할 때 다른 질문에 대한 답변에 영향을 받지 않음

추가적인 장점:
상호 간섭을 제거
즉, 각 검증 질문에 대한 답변이 독립적으로 이루어지기 때문에, 다른 질문에 대한 답변이 이전의 응답에 영향을 미치지 않음
또한, 더 많은 검증 질문을 처리할 수 있음
모든 질문이 동일한 문맥에서 이루어져야 할 필요가 없기 때문에, 다양한 질문이 더 효과적으로 다뤄짐

단점:
이 방법은 계산적으로 더 복잡하고 비용이 많이 듦
각 질문에 대해 개별적인 처리가 필요하므로, 자원이 더 많이 요구
  • Factor+Revise: 검증 질문에 답변한 후, CoVe 파이프라인은 그 답변이 원래 응답과 불일치하는지 여부를 암묵적 또는 명시적으로 교차 확인해야 함
    factor+revise 방식에서는 이 단계를 명시적인 추가 LLM 프롬프트로 실행
    검증 질문에 답변하는 것과 달리, 교차 확인 단계에서는 원래 응답과 검증 질문 및 답변을 모두 고려해야 함
Factor+Revise 방식은 Factored 방식의 확장판
검증 질문에 답변한 후, 답변이 원래 응답과 불일치하는지를 명시적으로 확인하는 단계를 추가한 방식

Factor+Revise의 추가 단계:
검증 질문에 답변을 하고 나면, 모델은 그 답변과 원래 응답을 교차 확인하여, 두 응답 간에 불일치가 있는지 확인
이 교차 확인 단계는 추가적인 프롬프트를 사용해 실행되며, 이때는 Baseline Response와 검증 질문 및 답변을 모두 고려하여 최종 검토가 이루어짐

장점:
불일치를 명시적으로 확인하기 때문에, 오류를 더 철저하게 수정할 수 있음

단점:
명시적인 교차 확인 단계를 추가하는 만큼, 계산 비용이 더 많이 들고 시간이 더 소요

 

FINAL VERIFIED RESPONSE

마지막으로, 검증을 반영한 개선된 응답을 생성

이는 모든 이전의 추론 단계, baseline response, 검증 질문과 답변 쌍을 고려하여 몇 가지 수정이 이루어지도록 최종 few-shot 프롬프트에서 실행

factor+revise 방식이 사용되면 교차 확인 불일치 탐지 결과도 제공


CoVe hallucination을 줄이는 효율성을 측정하기 위해 여러 실험적 기준을 사용하여 여러 baseline과 비교

TASKS

우리가 사용하는 기준은 목록 기반 질문에서부터, 답변이 여러 자유 형식의 문장으로 이루어진 장문 생성에 이르기까지 다양

WIKIDATA

우리는 Wikidata API를 사용하여 자동으로 생성된 질문 세트를 사용하여 CoVe를 테스트하기 시작

"Who are some [Profession]s who were born in [City]?" 형식의 목록 질문을 만듦

예를 들어, "Who are some politicians who were born in Boston?"이라는 질문을 사용할 수 있음

이 질문의 답은 여러 엔티티로 구성되며, 정답 목록은 Wikidata 지식 베이스에서 얻음

이로 인해 56개의 테스트 질문 세트가 생성되며, 각 질문은 일반적으로 약 600개의 알려진 정답 엔티티를 포함하지만, LLM은 보통 훨씬 짧은 목록을 생성

성능을 측정하기 위해 precision 지표(미세 평균)를 사용하고, 생성된 긍정 및 부정 엔티티의 평균 개수를 보고

WIKI-CATEGORY LIST

그다음으로는 더 어려운 세트 생성 작업을 진행

QUEST 데이터셋을 사용했으며, 이 데이터셋은 Wikipedia Category lists를 사용해 생성

이 카테고리 이름을 "Name some"을 추가하여 질문으로 변환

예를 들어, "Name some Mexican animated horror films" 또는 "Name some Endemic orchids of Vietnam"과 같은 다양한 질문을 사용

논리 연산을 요구하지 않는 데이터셋의 모든 예시를 모아 각 질문에 약 8개의 정답이 있는 55개의 테스트 질문 세트를 만듦

 Wikidata 작업과 유사하게, 성능을 측정하기 위해 precision 지표(미세 평균)를 사용하고, 생성된 긍정 및 부정 엔티티의 평균 개수를 보고

MULTISPANQA

다음으로, 독해 벤치마크인 MultiSpanQA에서 우리의 접근 방식을 테스트

MultiSpanQA는 여러 독립적인 답변을 포함하는 질문으로 구성되어 있으며, 이는 텍스트 내에서 여러 불연속 스팬에서 파생

(원래는 Natural Questions 데이터셋에서 나온 질문들).

문서 지원을 제공하지 않는 closed-book 설정을 고려하며, 따라서 사실 기반인 질문의 하위 집합을 고려

이에 따라 우리 base LLM이 이러한 질문에 더 쉽게 답할 수 있을 것으로 예상

우리는 각 항목에 대해 최대 3개의 토큰으로 구성된 짧은 답변을 가진 418개의 질문이 포함된 테스트 세트를 사용

 

Q: "Who invented the first printing press and in what year?"

A: "Johannes Gutenberg, 1450"와 같은 질문을 사용

LONGFORM GENERATION OF BIOGRAPHIES

다음으로, CoVe의 성능을 장문 텍스트 생성에서 검증

이 설정에서 Min et al.에서 제안된 벤치마크를 채택하여 전기(biographies) 생성 작업에 대한 방법을 평가

여기서 모델은 "Tell me a bio of <entity>"라는 프롬프트를 사용하여 선택된 개체의 전기를 생성하도록 요청

우리는 FACTSCORE 메트릭을 사용하여 접근 방식의 효율성을 평가하는데, 이 메트릭은 Min et al. (2023)에서 개발된 것으로, 검색 보강 언어 모델을 사용하여 응답의 사실성을 검증(Instruct-Llama, “Llama + Retrieval + NP”).

이 메트릭은 인간의 판단과 높은 상관관계를 보이는 것으로 나타남

BASELINES

강력한 오픈 모델인 Llama 65B base LLM으로 사용하고, 모든 모델에 대해 greedy decoding을 사용

Llama 65B는 지시 기반 학습이 미세 조정되지 않았으므로, 각 작업에 적합한 few-shot 예시를 사용해 성능을 측정

이는 CoVe가 개선하려고 하는 주요 baseline 역할을 함

CoVe는 동일한 Llama 65B 기반을 사용하지만, 동일한 few-shot 예시에 대해 검증 질문 및 최종 검증된 응답 시연을 포함(그림 1 및 섹션 3 참조).

따라서 동일한 LLM에 대해 baseline response보다 개선된 결과를 낼 수 있는 능력을 측정

CoVe에서는 모든 작업에서 joint  factored 버전의 차이점을 비교

우리는 또한 지시 기반으로 미세 조정된 Llama 모델과 비교하며, 이를 위해 Llama 2를 사용

우리는 작업에서 zero-shot 성능을 측정하거나, zero-shot 프롬프트에 "Let’s think step by step"을 추가한 chain-of-thought을 사용하여 측정

지시 기반으로 미세 조정된 모델은 쿼리할 때 불필요한 내용을 생성하는 경향이 있음을 발견

이것은 특히 목록 기반 작업에서 문제가 될 수 있음

이를 해결하기 위해 프롬프트에 "List only the answers separated by a comma"라는 줄을 추가

또한 이 문제를 해결하기 위해 상용 NER 모델을 사용하여 답변을 추출하는 추가 처리 단계를 추가

그러나 우리는 few-shot이 여전히 Multi-Span-QA와 같은 작업에서 더 나은 성능을 발휘할 것이라 기대

이는 모든 답변이 명명된 개체가 아니며, few-shot 예시가 작업의 도메인을 효과적으로 보여주기 때문

장문 전기 생성에 대해서는 Min et al. (2023)에서 보고된 여러 기존 모델 결과와도 비교

특히 InstructGPT, ChatGPT 2, PerplexityAI를 비교 대상으로 사용

RESULTS

우리는 다음 연구 질문에 대한 실증적 답변에 관심이 있습니다:

  • RQ1: CoVe LLM이 생성한 hallucination 콘텐츠의 비율을 효과적으로 줄일 수 있는가?
  • RQ2: CoVe는 올바른 콘텐츠의 양을 감소시키지 않고 잘못된 생성물을 수정하거나 제거할 수 있는가?

 

사용한 네 가지 벤치마크 작업에 대한 주요 결과는 Table 1, Table 2, Table 3에 나와 있으며, 주요 발견 사항은 다음과 같음

CoVe는 목록 기반 질문 작업에서 정확성을 향상시킴

우리는 CoVe가 목록 기반 작업에서 큰 정확도 향상을 제공함을 발견

예를 들어, Wikidata 작업에서 Llama 65B few-shot baseline의 정확도(0.17에서 0.36으로)가 두 배 이상 향상

긍정 및 부정 엔티티의 분류에서, hallucinated된 응답의 수가 크게 감소했으며(부정 엔티티: 2.95 → 0.68), 실제 응답의 수는 비교적 적게 감소(긍정 엔티티: 0.59 → 0.38).

CoVe는 폐쇄형 질문 응답(Closed Book QA)의 성능을 개선

CoVe가 일반적인 QA 문제에서도 성능을 향상시킴을 발견

MultiSpanQA에서 few-shot baseline 대비 F1점수가 23% 향상되었으며(0.39 → 0.48), 이는 정확도와 재현율 모두에서 성과가 있음을 보여줌

CoVe는 장문 생성 작업에서도 정확성을 향상시킴

이 결과는 장문 생성 작업에서도 확장되었으며, QA 작업보다 더 큰 향상을 보임

FACTSCORE few-shot baseline에서 28% 증가했습니다(55.9 → 71.4). 평균 제공 사실 수가 약간 감소했음에도 불구하고(16.6 → 12.3), Figure 2에서 볼 수 있듯이, CoVe는 희귀한 사실과 더 빈번한 사실 모두에서 성능을 개선함을 보여줌

Instruction-tuning과 Chain-of-Thought(CoT)는 hallucinations을 줄이지 못함

우리는 few-shot baseline Llama 2 Chat(instruction-tuned 모델)보다 모든 작업에서 더 나은 성과를 보임을 발견

 few-shot 예시는 모델이 해당 작업에서 기대되는 출력에 맞는 답변을 생성하도록 유도했지만, 일반적인 instruction-tuning은 더 많은 hallucinations 또는 부정확한 출력을 생성

CoT 프롬프트도 이러한 작업에서는 성능 향상에 실패했으며, CoT가 추론 작업에서는 효과가 입증되었지만, 이 연구에서 측정한 hallucination문제에는 적절하지 않은 것으로 보임

Factored와 2-Step CoVe는 성능을 개선

factored CoVe 접근 방식을 적용했을 때 joint CoVe와 비교하여 모든 작업에서 일관된 성능 개선을 관찰했습니다. 예를 들어, 장문 생성 작업에서 FACTSCORE가 60.8에서 63.7로 향상되었습니다. 마찬가지로, 2-step 접근 방식도 joint 접근 방식을 능가했으며, Wikidata Wiki-Category list 작업에서 테스트한 결과, Wikidata에서는 2-step이 가장 좋은 결과를, Wiki-Category에서는 factored가 가장 좋은 결과를 제공했습니다. 이러한 모든 결과는 검증 질문이 원래 baseline response에 의존하지 않아야 한다는 가설을 뒷받침합니다(이는 joint 방법에서 발생할 수 있는 문제입니다).

명시적인 추론 단계는 hallucination을 제거하는 데 도움이 됩니다

장문 생성 작업에서 우리는 CoVe factor+revise 방법을 사용하여 검증 답변이 불일치를 나타내는지 명시적으로 교차 확인하는 고급 추론 단계를 탐구했습니다. 이 추가 명시적 추론을 통해 FACTSCORE가 63.7에서 71.4로 크게 향상되었습니다. 이는 LLM에서 적절하고 명시적인 추론이 hallucination을 완화하는 데 도움이 된다는 추가적인 증거를 제공합니다.

CoVe를 적용한 Llama는 InstructGPT, ChatGPT, PerplexityAI를 능가합니다

장문 생성 작업에서 우리의 few-shot Llama 65B FACTSCORE 메트릭에서 ChatGPT  PerplexityAI 모델에 비해 뒤떨어졌습니다. 그러나 CoVe baseline Llama 65B에 적용하면 ChatGPT PerplexityAI를 모두 능가했으며 InstructGPT도 능가했습니다. 이는 PerplexityAI가 검색 보강을 사용하여 사실을 지원할 수 있는 모델인 반면, CoVe는 개선된 추론(검증)을 통해 기본 언어 모델만을 사용하여 성능을 향상시켰다는 점에서 특히 인상적입니다. 그러나 PerplexityAI가 검색이 필수적인 매우 희귀한 사실에서는 CoVe보다 더 나은 성능을 발휘하지만, 더 빈번한 사실에서는 CoVe PerplexityAI를 능가합니다. 우리는 일부 모델이 다른 모델보다 전체 사실을 적게 생성함을 주목했지만, FACTSCORE 메트릭은 정규화되어 있으므로 모델 간 비교가 가능합니다.

단기 검증 질문은 장문 질문보다 더 정확하게 답변됩니다

장문 응답에서 LLM은 여러 hallucinations을 생성하는 경향이 있습니다. 그러나 개별 사실에 대해 구체적으로 질문할 경우, LLM 자체가 해당 hallucination이 잘못되었음을 알 수 있는 경우가 종종 있습니다. 이는 Figure 1, Figure 3, 및 Section 9에서 확인할 수 있습니다. 이는 Wikidata 작업에서 정량적으로 볼 수 있으며, Llama few-shot baseline 응답 엔티티 중 약 17%만이 목록 기반 질문에서 정확한 반면, 개별 엔티티에 대해 검증 질문을 할 경우 약 70%가 정확하게 응답됩니다.

LLM 기반 검증 질문은 규칙 기반 검증 질문을 능가합니다

우리의 CoVe 방법에서 검증 질문은 작업에 따라 LLM이 생성합니다. 우리는 이러한 질문의 품질을 측정하기 위해 LLM 질문을 "Does X answer the question" 형식의 템플릿화된 예/아니오 질문으로 대체하여 품질을 비교했습니다. Wiki-Category 작업에서 Table 4에 제시된 결과는 규칙 기반 검증 질문에서 정확도가 감소했음을 보여줍니다. 이러한 차이는 더 다양한 유형의 검증 질문이 필요한 장문 생성 작업에서 더 클 것으로 예상되며, LLM 기반 검증이 더욱 필요해집니다.

개방형 검증 질문은 예/아니오 기반 질문보다 성능이 뛰어납니다

주요 실험에서 우리는 예상 답변이 사실인 검증 질문을 사용했습니다. 대안 설정으로, 사실을 검증 질문의 일부로 포함시키고 예/아니오 형식으로 답변을 요구할 수 있습니다. Table 4에서 이 차이를 평가한 결과, factored CoVe버전에서는 예/아니오 형식의 질문이 더 낮은 성능을 보였습니다. Appendix section 9 ChatGPT에 대한 일화적인 예시가 포함되어 있으며, 이 예시에서 모델이 예/아니오 질문 형식으로 주어진 사실에 대해 사실 여부에 관계없이 동의하는 경향이 있음을 발견했습니다.


결론 (CONCLUSION)

우리는 **Chain-of-Verification (CoVe)**를 도입하여 대형 언어 모델이 자신의 응답을 검토하고 자가 수정하여 hallucination을 줄일 수 있는 접근 방식을 제안했습니다. 특히, 모델이 원래 쿼리에 답변할 때보다 검증 질문에 답할 때 더 높은 정확도를 보이며, 검증을 일련의 더 간단한 질문으로 분해함으로써 이러한 결과를 얻을 수 있음을 보여주었습니다. 둘째로, 검증 질문에 답변할 때, 모델의 주의를 이전 답변에 집중하지 못하도록 제어하는 것(factored CoVe)이 동일한 hallucination을 복사하는 문제를 완화하는 데 도움이 된다는 것을 입증했습니다. 전반적으로, 우리의 방법은 동일한 모델에 답변을 검토(검증)하도록 요청하는 것만으로도 원래 언어 모델의 응답에 비해 상당한 성능 향상을 제공합니다. 우리의 연구를 확장할 수 있는 분명한 방향은 CoVe에 도구 사용을 추가하는 것입니다. 예를 들어, 검증 실행 단계에서 검색 보강(retrieval augmentation)을 사용하면 추가적인 성능 향상이 있을 것입니다.


한계점 (LIMITATIONS)

Chain-of-Verification (CoVe) 방법은 hallucination을 줄이는 것을 목표로 하지만, 이를 생성에서 완전히 제거하지는 못합니다. 이는 CoVe baseline에 비해 향상되었더라도 주어진 쿼리에 대해 여전히 잘못되거나 오해를 일으킬 수 있는 정보를 생성할 수 있음을 의미합니다. 또한, 우리의 실험에서는 명시된 사실적 부정확성 형태의 hallucination만 다루었습니다. 그러나 hallucination은 잘못된 추론 단계, 의견의 일부 등 다른 형태로도 나타날 수 있습니다. 또한, CoVe가 생성하는 응답에는 검증이 포함되며, 사용자가 이를 확인하면 그 결정에 대한 해석 가능성을 높일 수 있지만, 이는 추가 토큰을 생성해야 하므로 계산 비용이 증가한다는 단점도 있습니다. 이는 Chain-of-Thought와 같은 다른 추론 방법에서도 마찬가지입니다.

우리의 방법은 대형 언어 모델이 더 많은 시간을 들여 스스로의 오류를 식별하고 개선된 응답을 생성하도록 합니다. 우리는 이 방법이 명확한 성능 개선을 가져온다는 것을 보여주었지만, 이러한 개선의 상한선은 모델이 스스로 인식하고 알고 있는 것에 의해 제한됩니다. 이와 관련하여, 2장에서 논의한 바와 같이, 언어 모델이 모델의 가중치 외부에서 추가 정보를 얻기 위해 외부 도구를 사용하는 것은 별도의 연구 주제로, 이 연구의 결과와 결합하면 더욱 유익할 것입니다.