WikiChat: Stopping the Hallucination of Large Language Model Chatbots by Few-Shot Grounding on Wikipedia
논문 정보
- Date: 2024-02-20
- Reviewer: 김재희
- Property: Retrieval, ICL, QA, Knowledge
1. Intro
Wikipedia 기반 Knowledge Grounded Conversation 특화 언어모델
-
LLM : Hallucination 현상이 매우 심함
-
잘못된 Implicit Knowledge를 이용한 답변
-
모델의 학습 이후 시점의 정보와 관련된 질문
-
⇒ 기존 접근 방법 : Retrieval-based(RALM) / Knowledge Editing(ROME)
- RALM : Query 관련 정보를 Retrieval하여 추가 정보로 입력하자.

-
Retrieve된 정보가 정확한 지식을 포함한다고 보장 X
-
Retrieve된 정보를 입력으로 생성된 문장이 Retrieve된 정보를 충분히 사용하여 생성했다고 보장 X
-
Retrieve된 문장으로 인해 생성 시 사용되는 정보량(Token 수)가 매우 많아짐 —> 생성 난이도 상승/Input Length 제한 발생
-
ROME : 모델의 내부 파라미터를 수정하여 지식을 업데이트하자.
-
걍 어렵다.
-
여전히 안된다.
-
하지만 신기하쥬?
-
-
Knowledge Grounded Task 평가 방식
- 주어진 질문에 대해 모델이 사실 기반 문장을 잘 생성하는지 평가
⇒ Human Annotator를 이용
⇒ 일반적으로 사람들이 잘 알고 있는 지식을 이용하여 데이터셋 구성 → Corpus Distribution 내 Head에 해당하는 내용으로만 평가 진행
- 모델 역시 Head에 해당하는 지식은 학습이 쉬움
⇒ Pretrain Corpus에 자주 등장했기 때문
- 사람도 구축하기 어려운 Tail 지식들을 이용해서 평가하는 것이 중요
**Contribution **1. 광범위한 지식, 그 중에서도 모델 학습 이후 발생하는 지식을 이용한 효과적인 대화 모델 프레임워크 및 평가 방법론 제안 2. Knowledge Base 변경을 통해 개인정보 및 기업 내부 정보에 대해서도 활용 가능
2. Method

7단계로 구성된 Retrieve-and-Generate Framework → 기존 LLM을 이용하여 Prompting + Retrieval의 결합으로 Knowledge-Grounded Response 생성
-
LLM : GPT-3.5/GPT-4/LLaMA-1
-
Retriever : ColBERT + PLAID(reranker)
1단계 Search Query 작성
-
Retrieval을 위한 Query 작성
-
모든 Turn에 대해 Search를 진행 X
-
Prompting을 통해 모델이 직접 Search 시점 선택
-
-
Input : User Query + history → 특히 입력 정보의 시점을 함께 Prompting

- Retriever가 N_{IR}개의 Passage 반환
2단계 Passage 내 필요 정보 추출
-
Passage에는 현재 User Query와 관련된 정보와 관련없는 정보가 혼재
-
Bullet Point를 통해 Passage의 정보를 요약/필터링하도록 Promping
- K-Shot Prompting 사용

3단계 LLM 단독 Response 생성
- Retrieve된 정보를 이용하지 않고 User Query에 대한 Response 생성
→ 흥미롭고 자연스러운 Response 초안
- 해당 과정에서 생성된 Response는 신뢰도가 낮음

4단계 Response 분해
-
3단계에서 생성된 Response 초안을 Claim 단위로 분해
-
분해 과정에서 발생할 수 있는 Coreference 문제를 해결하도록 Prompting
→ 단순 대명사/호칭/날짜(오늘 → 2024년 02월 20일) 등
-
대화 기준 날짜를 직접 명시하여 날짜에 다른 지식 변화 고려
-
K-Shot Prompting


- 각각의 Claim에 대해 Retriever을 이용하여 N_{evidence}개의 Passage 탐색
5단계 Claim 검증
-
4단계에서 마련된 (claim-passage) tuple을 이용하여 prompting
-
날짜 정보 함께 기재하여 지식 변화 고려
-
K-Shot Prompting
-
CoT prompting
-
-
모델은 각 claim이 (사실, 거짓, 판별불가)인지 분류
→ 사실로 분류된 claim만 향후 사용


6단계 실제 Response 초안 작성
-
5단계에서 사실로 판별된 claim이 있을 경우에만 수행
- 모든 claim이 (판별 불가 or 거짓)이었다면 7단계로 넘어감
-
2단계에서 생성한 passage 요약을 prompting하여 response 생성
-
K-Shot Prompting
-
날짜 정보 함께 기재하여 지식 변화 고려
-


7단계 Response 정제
-
6단계에서 생성한 Response를 다시 Prompting하여 Feedback 작성 → 반영
-
Feedback 기준
-
Relevance : User Query와 관련된 Response인가
-
Naturalness : 문장이 자연스러운가
-
Non-Repetitiveness : 반복된 표현은 없는가
-
Temporal Correctness : 해당 시점에 옳바른 정보인가
-
-
Feedback: 각 기준에 대해 0-100점
-
Refinement : feedback 생성 시점 이후에 바로 정제하도록 prompting
-
K-Shot Prompting

Distillation to LLaMA
-
각 단계별 input, output을 pair로 하여 LLaMA2 Finetune 진행
- Label : GPT-4 응답
-
대화 데이터 : User Simulator Framework를 이용하여 다양한 지식에 대해 이야기하는 데이터셋 구축 → GPT-4 이용
- User의 개성 및 사용 정보를 다양하게 Prompting하여 실제 대화를 모사
-
Knowledge : Head, Tail, Recent로 구분하여 구축
-
Wikipedia 조회수를 기준으로 선택
- 조회수가 높을수록 웹 상에 자주 언급되는 Knowledge라고 가정(자주 사용되는 proxy)
-
Head : Wikipedia 내 2020년(LLM들이 학습된 데이터 시점)까지의 데이터 중 68M ~ 16M회 조회된 페이지
-
Tail : 1000회 이하로 조회된 데이터
-
Recent : 2023년 01월 ~ 2023년 04월까지 새롭게 수정된 페이지
-
Summary
- Retrieval, Summarization, Refinement의 반복을 통해 답변의 품질 개선 프레임워크
3. Evaluation
Factuality
-
답변이 정말 사실 정보를 바탕으로 생성되었는지 평가
-
GPT-4 + human을 통해 Response의 Factuality 평가
-
response를 claim 단위로 분해
-
각각의 claim에 대해 evidence를 Retriever을 통해 산출
-
각각의 claim이 evidence를 기반으로 사실 정보인지 판단 ⇒ GPT-4가 잘 수행하지 못하여 Annotator 고용
-
⇒ Atomic Factuality Check → Factscore
Conversationality
-
답변의 챗봇 응답으로서 품질
-
5가지 세부 지표를 설정하여 사용 : relevant, informational, natural, non-repetitive, temporally correct
-
각각의 지표에 대해 GPT-4 Prompting을 통해 해결
-
기존 연구들에서 해당 지표들은 LLM이 잘 판단한다고 알려져 있음(Citation)
-
각 지표 1-5점 scale
-
⇒ GPT-4와 저자 1인의 inter-annotator agreement가 두 저자 간 inter-annotator agreement와 비슷했음
4. Experiments
Main Results

-
All
- WikiChat 모델이 기존 모델 대비 매우 높은 Factuality 달성
⇒ LLaMA의 경우 40% → 91% 상승
⇒ GPT-4에 대한 Distillation + 프레임워크를 통한 사실성 확보
-
GPT Series 역시 Factualtiy 상승
-
대화 점수(5개) 역시 매우 높은 점수 달성
-
기존 점수와 비슷하거나 높은 점수 달성
-
Factuality를 확보하면서 대화 품질 유지
- feedback→refinement를 통한 품질 향상
-
-
Head vs Tail
-
Head에서는 GPT-4/GPT-3.5에 대해 성능 향상이 적은 편
- Head 데이터는 이미 Pretrain Corpus에 다수 포함되어 있어 모델이 이미 잘하고 있기 때문
-
⇒ 기존 Factuality Benchmark 데이터셋들의 한계점이라고 지적
-
Tail 에서는 GPT Series 역시 매우 높은 성능 향상 관찰
- 웹 상에 잘 존재하지 않는 데이터들에 대해 Model 내부의 Knowledge를 사용하기 힘들 때 In Context Learning을 통해 사용하도록 유도한 결과
-
Recent
-
Recent 데이터는 LLM들이 아직 학습하지 않은 데이터
-
LLM들이 타 데이터 대비 Factuality 성능이 매우 떨어지는 모습
-
Atlas : RAG 방식으로 Scratch부터 학습된 Retiever-Generator 모델
- Atlas는 성능 저하가 거의 없음
-
LLM이 아직 학습하지 않은 데이터에 대해서도 98.5%(GPT-4 기준) Factuality 확보 가능
-
-
Latency

-
Retrieval와 Generation을 매우 여러번 반복하면서 비용과 시간 손해가 매우 큼
-
프레임워크 특성 상 Prompt가 매우 길어져서 불가피한 속도/비용 손해
- 4개의 Prompt가 K-Shot을 사용하고 잇음
Human Evaluation

- Human Evaluation 결과 기존 LLM 대비 좋은 성능 기록

-
“I Don’t Know”라고 응답한 비중
-
모델이 잘 응답하기 힘든 Tail/Recent에 대해 높은 비중으로 IDK 실행해버림…
-
IDK가 모델 안정성 측면에서는 좋지만, 이 정도로 비중이 높으면 오히려 안좋은 것일텐데…?
-

-
refinement 전/후 응답의 BLEU Score 평균
-
Tail/Recent에서 상대적으로 낮은 BLEU Score 기록
-
Tail/Recent에서 모델이 많은 수정 작업을 수행했음
-
7. Conclusion
-
숫자로 보면 매우 좋은 방법론처럼 보임.
-
Prompting과 Retrieval을 극단으로 결합한 프레임워크
-
사실성이 정말 중요한 경우라면 해당 프레임워크 도입 or 개선이 가능할듯
-
당장 해당 방법론이 정말 좋다고 이야기 X
-
평가 metric과 prompting 간 동일한 지표 사용
-
IDK 비율이 매우 높음
-
비용/속도 손해 극심
-