LLM으로 정탐/오탐 판별을 할 때 어떻게 해야 효율적으로 할 수 있을까? 단순히 LLM으로 Prompt를 주고 정탐인지 판별을 맡기는건 생각보다 효율적이지 않았다.
AI에 대해 깊이있는 지식은 없지만 몇가지 아이디어를 생각해 보았다.
프롬프트를 통해 단순히 정탐/오탐 판별에서 끝나지 말고 판별이 올바르게 되었는지 검증 과정을 중간에 추가하면 어떨가?

같은 내용을 여러번 검토해서 결과를 합치면 어떨까?

LLM은 같은 문제를 작은 단위로 쪼개서 물어보면 답변을 더 잘해주는 경우가 있다. 그럼 질문을 작은 단위로 분할하여 질문하면 되지 않을까?

추가적으로 LLM에게 질문할 때 영어사용, JSON, markdown, 두괄식 질문 등의 방법을 사용하면 정확도가 상승한다. Prompt를 작성할때 이런 전략을 적용해보면 어떨까?
LLM에 대해 자세히 아는게 아니다보니 간단하게 생각난 아이디어는 이정도이다. 아무래도 내 얕은 지식으론 한계가 있으니 관련 자료를 한번 찾아보자
간단하게 어떤건지 알아보았다...
대규모 언어 모델(LLM)이 한 번에 완벽한 답을 내놓지 못할 때, 스스로 피드백을 주고 답변을 수정하는 과정을 반복하여 성능을 높이는 방법론

(1) 핵심 개념: Self-Refine
(2) 작동 프로세스
Initial Generation(초기 생성): 입력값에 대해 첫 답변 생성
Feedback(피드백): 생성된 답변을 보고 스스로 어디가 부족한지, 어떻게 고쳐야 하는지 구체적이고 실행가능한 피드백 생성
Refine(수정): 앞선 답변과 피드백을 참고해 더 나은 답변으로 수정. 해당 과정은 만족할 만한 결과가 나올 때까지 또는 정해진 횟수만큼 반복
feedback-refinement 횟수가 많을수록 정확도는 상승하지만 증가폭은 줄어듬

(3) 주요 실험 결과
성능 향상: GPT-3.5, GPT-4등 다양한 모델에서 수학 문제 풀이, 코드 최적화, 대화 생성 등 7개 작업 모두 초기 밥변보다 성능이 향상됨

피드백의 중요성: 단순히 "다시 해"같은 피드백보다 구체적으로 어디를 고쳐야 할지 짚어주는 'Specific&Actionable' 피드백이 있을 때 성능이 훨씬 크게 개선됨
모델 크기와의 상관관계: 모델 성능이 좋을수록 스스로 오류를 더 잘 잡아내기 때문에 Self-Refine 효과가 더 뚜렷하게 나타남.
AI 에이전트가 모델을 직접 수정(Fine-tuning)하지 않고도, 자신이 수행한 행동에 대해 '언어적'으로 스스로 반성(Self-Reflection)하고 이를 메모리에 저장해 다음 시도에 반영함으로써 성능을 높이는 새로운 프레임워크를 제안

(1) 핵심 개념: Reflexion
기본 방식: 전통적인 강화학습(RL)은 계산 비용이 크고 효율이 낮으며 LLM은 파라미터 업데이트 없이 성능을 올리는데 한계가 있음
해결책: 실패한 시도에 대해 무엇을 잘못했는지 글로 써서 기억하게 하고, 다음 실행 시 이 기록을 참고하게 한다. 이를 통해 Semantic Gradient를 제공하여 에이전트가 더 똑똑하게 행동하도록 만듬
(2) 세 가지 주요 모듈
Actor(실행자): 텍스트나 행동을 생성함(ex) 코드 작성, 문제 풀기)
Evaluator(평가자): 결과가 맞았는지 틀렸는지 점수를 매김
Self-Reflection(반성자): 실패했을 때 왜 실패했는지 다음에 어떻게 해야할지 언어적 피드백을 생성해 메모리에 저장
(3) 메모리 시스템
LLM에서 Hallucination(환각)은 모델이 사실이 아닌 내용을 그럴듯하게 만들어서 말하는 현상을 말한다.
AI 모델이 거짓 정보를 사실처럼 말하는 '환각(Hallucination)' 현상을 줄이기 위해, 모델 스스로 자신의 답변을 검증하게 만드는 프롬프트 기법을 제안

(1) 핵심 개념 CoVe(Chain-of-Verification)
모델에게 한 번에 답을 내놓으라고 하는 대신 답변 생성 -> 검증 질문 생성 -> 검증 답변 수행 -> 최종 답변수정 4단계를 거치게 하여 답변의 정확도를 높임
(2) 작동 프로세스(4단계)
Step 1. Baseline Response: 질문에 대한 첫 답변(초안)을 생성
Step 2. Plan Verification: 초안의 사실 관계를 확인하기 위해 필요한 검증 질문들을 설계함(ex) 멕시코-미국 전쟁은 언제였냐? 라는 초안이 있다면 그 전쟁의 시작과 종료 연도는? 이라는 질문을 만듦)
Step 3. Execute Verifications: 설계한 검증 질문들에 대해 모델이 하나씩 답을 함
Step 4. Final Verified Response: 검증 결과와 초안을 비교하여 오류가 있다면 수정한 최종 답변을 생성
검증 질문 생성(Step 2)과 검증 답변(Step 3)하는 과정을 해당 논문에선 4가지 방법으로 나눠 실험했다.
Joint
Step 2와 Step 3를 하나의 prompt로 진행한다.
Prompt가 한 번에 들어가므로 검증 답변 생성하는 과정에서 초기 밥변을 참고할 수 밖에 없고 이로 인해 잘못된 답변을 반복해서 생성할 수 있다.
2-Step
Joint 방식의 단점을 극복하고자 Step 2, Step 3를 별도의 prompt를 통해 생성한다.
초기 답변을 보고 검증 질문 생성하는 prompt A, 검증 질문 보고 검증 답변 생성하는 prompt B를 사용한다. 해당 방식에서는 검증 답변 생성 시 초기 답변을 참고할 수 없게 되고 초기 답변으로 인한 Hallucination이 발생하지 않는다.
Factored
2-Step에서는 검증 질문들을 모아서 하나의 prompt로 만들고 검증답변을 한번에 생성했다.
Factored는 한 단계 더 나아가 각각의 검증 질문들에 대해 독립적인 prompt들을 구성하고 검증 답변 생성시에도 각각 독립적인 prompt를 사용해서 생성한다.
검증 질문을 분리하고(.기준) 각각 검증 질문들을 개별적인 prompt를 이용해 답변 생성한다.
초기 답변 + 검증 답변들끼리도 참고하지 못하게 된다.
Factor + Revise
Facted 방식에서 한 단계 더 나아가 cross-check 할 수 있도록 한다.
초기 답변과 검증 질문, 검증 답변간의 불일치를 검증한다.
- 2-Step -> 초기 답변 참고 x
- Factored -> 초기 답변 + 검증 답변들끼리도 참고 x
- Factor + Revise -> 초기 답변 + 검증 답변들끼리도 참고 x + 초기 답변,검증 질문,검증 답변간 불일치 검증
검증 질문에 답할 때(Step 3) 이전 초안 내용을 참고하지 못하는게 중요하다.
(3) 결론 및 한계
리스트 나열, 폐쇄형 질의응답(QA), 인물 전기 작성 등 다양한 작업에서 Hallucination 줄이고 정확도를 높임
Llama 모델에 CoVe를 적용했을 때, 당시의 ChatGPT나 검색 기반 모델인 Perplexity AI보다 특정 지표에서 더 나은 성능을 보였음

Hallucination을 줄이긴 하지만 완전히 없애진 못함.
여러 단계를 거치기에 계산 비용(시간+비용)이 증가
모델 자체가 가진 지식 안에서만 검증하므로, 모델이 아예 모르는 정보에 대해서는 외부 도구(Retrieval-Augmented Generation, RAG)와의 결합이 필요
외부 데이터베이스나 모델의 내부 정보(확률값 등) 없이도, 모델이 하는 말이 사실인지 아니면 지어낸 말(환각)인지 스스로 판별할 수 있는 방법을 제안함

(1) 핵심 아이디어: 일관성(Consistency)
가정: 모델이 어떤 사실을 알고 있다면, 여러 번 다시 물어봐도 답변 내용이 비슷하고 일관적일 것이다. 반대로 잘 모르는 내용을 지어내고 있다면(Hallusination) 물어볼 때마다 답변이 서로 모순되거나 다르게 나올 확률이 높다.
방법: 하나의 질문에 여러개의 샘플 답변을 뽑고 원래 답변이 이 샘플들과 얼마나 일치하는지 확인하여 Hallucination Score를 매긴다.
(2) 환각을 탐지하는 방식
BERTScore: 원래 답변의 문장과 샘플 답변 문장들 사이 의미적 유사도를 계산
Question Answering(QA): 원래 답변을 기반으로 질문-답변 쌍을 만들고, 이 질문에 대해 샘플 답변들이 동일한 답을 하는지 확인
n-gram 모델: 샘플 답변들로 아주 간단한 언어 모델을 즉석에서 만들어, 원래 답변의 단어들이 얼마나 자주 등장하는지 빈도를 계산
LLM Prompting(가장 강력함): 다른 LLM(또는 자기 자신)에게 "이 문장이 다른 샘플 답변들의 내용과 일치하니?"라고 직접 물어본다.
(3) 결론
LLM(대규모 언어 모델)이 다른 LLM의 실력을 제대로 심사할 수 있는가?에 대한 연구내용
(1) 등장 배경
기존의 객관식 벤치마크(MMLU 등)은 모델의 실제 대화 능력을 평가하기에 부족함
가장 정확한 평가 방법은 사람이 직접 두 모델의 답을 비교하는 것이지만, 시간과 비용이 너무 많이 듬
GPT-4 같은 고성능 모델을 '심사위원'으로 써보면 어떨까? 라는 아이디어
(2) 주요 평가 도구
MT-Bench: 챗봇의 대화 능력을 평가하기 위한 80개의 질문 세트이다. 단순 단답형이 아니라 질문이 이어지는 '멀티턴(Multi-turn)' 대화 능력을 측정한다.
Chatbot Arena: 두 모델의 답변을 익명으로 비교해 투표하는 크라우드소싱 기반 평가 플랫폼
(3) 심사 방식(LLM-as-a-Judge)
Pairwise Comparison (쌍별 비교): 두 답변 중 어느 쪽이 더 나은지 고르게 한다.
Single Answer Grading (단일 평가): 하나의 답변에 대해 1~10점 만점으로 점수를 매긴다.
Reference-guided (참조형): 모범 답안을 미리 주고 모델이 비교(수학/추론 문제에 유리)
(4) LLM 심사의 한계와 편향(Bias)
Position Bias (위치 편향): 답변의 품질과 상관없이 첫 번째로 제시된 답변을 더 선호하는 경향이 있다.
Verbosity Bias (장황함 편향): 내용이 알차지 않더라도 일단 답변이 길면 더 높은 점수를 주는 경향이 있다.
Self-enhancement Bias (자기 강화 편향): 심사위원 모델이 자신이 만든 것과 비슷한 스타일의 답변에 높은 점수를 준다.
수학/추론 한계: GPT-4조차도 복잡한 수학 문제는 스스로 풀지 못해 잘못된 심사를 할 때가 있다.
(5) 결론
LLM의 편향성(위치 바꾸기 등)만 잘 보정한다면 믿을만한 결과를 도출할 수 있다.
GPT-4를 심사위원으로 썼을 때, 인간 평가자와의 의견 일치도가 80% 이상으로 나타났다 -> 사람과 사람 사이의 일치도와 비슷한 수준
LLM-as-a-Judge가 전반적인 심사위원의 역할을 다뤘다면, G-EVAL은 그 심사 과정을 훨씬 더 정교하고 체계적으로 만든 구체적인 알고리즘
AI가 사람처럼 꼼꼼하게 채점 기준표를 짜서, 소수점 단위까지 정밀하게 성적표를 매기는 기술
문맥과 의미를 이해하는 GPT-4 같은 고성능 LLM을 사용하여, 사람처럼 유연하고 정확하게 평가하는 것
(1) 작동 방식
G-EVAL은 단순히 "점수 매겨줘"라고 시키는 것이 아님
프롬프트 생성 (Prompt Chain): 평가할 속성(예: 유창함, 일관성)에 대해 모델에게 "이 속성을 평가하기 위한 구체적인 단계별 가이드를 먼저 만들어봐"라고 시킨다.
연쇄적 사고 (Chain-of-Thought): 생성된 가이드를 바탕으로, 모델이 답변을 검토하며 평가 이유를 논리적으로 설명하게 한다.
확률 기반 가중치 점수 (Weighting via Probabilities): 단순히 "5점"이라고 한 번 내뱉는 것이 아니라, 각 점수(1~5점)가 나올 확률값을 계산하여 가중 평균 점수를 낸다. 이를 통해 점수의 편차를 줄이고 훨씬 세밀한 평가가 가능하도록 한다.
(2) 결론 및 한계
사람이 매긴 점수와 G-EVAL이 매긴 점수 사이의 상관관계가 높다
요약문 품질, 대화의 일관성 등 정성적인 평가가 필요한 분야에서 기존의 자동 평가 지표들보다 압도적으로 우수한 성능을 보였다.
GPT-4 API를 여러 번 호출하고 복잡한 계산을 거쳐야 하므로 비용이 많이 들고 시간이 걸린다.
LLM-as-a-Judge의 한계와 마찬가지로, 모델 자체의 성향이나 답변 순서에 영향을 받을 수 있다.
하나의 LLM이 스스로 답을 내는 대신, 여러 개의 모델(에이전트)이 서로의 답변을 비판하고 피드백을 주고받으며 토론하게 함으로써 결과물의 품질을 높이는 방법론

(1) Multi-agent Debate 프로세스
초기 답안 생성: 다수의 언어 모델 인스턴스가 동일한 입력에 대해 개별적인 답을 생성
토론 및 반론 과정: 각 모델이 다른 모델의 답을 읽고, 이에 대한 논리적 비판을 수행한 후 자신의 답안을 업데이트한다. 이 과정을 여러 라운드에 걸쳐 반복해 최적의 답을 도출함
최종 답안 수렴: 모델들 간의 합의(consensus)가 이루어지면 최종 답이 결정
(2) 결론 및 한계
기존의 단일 모델 기반 검증(Reflection) 방식보다 더 강력한 추론이 가능
다양한 모델이 서로 상반된 답을 제시하는 경우, 공통적으로 신뢰할 수 있는 답으로 수렴하는 경향이 있음.
사실적 오류(factual errors) 를 포함한 답변이 토론을 거치면서 자동으로 제거됨.
잘못된 초깃값을 가진 답변들도 토론을 거치며 올바른 답으로 수렴하는 현상이 나타남
다중 모델 이용 -> 계산 비용 증가
정보가 틀린 경우에도 합의가 이루어 질 수 있음 -> 모델들이 토론을 거쳐 하나의 답으로 수렴하지만 이 답이 반드시 정답이라는 보장 X
긴 토론의 처리 문제 -> 모델이 긴 토론을 다룰 때, 최근 정보에 집중하는 경향이 있음
해당 방법론을 이용해 LLM Agent를 이용할 수 있게 해주는 프로젝트들도 github에 찾으면 있을거같은데 찾아보고 이용해보는 것도 좋을 것 같다.
그나저나 LLM 관련해서 보면 볼수록 사람들이 장난스럽게 AI 러다이트 운동 이야기하는게 왜 나오는지 알것같다...
Self-Refine
https://minair.tistory.com/101
https://arxiv.org/pdf/2303.17651
Reflexion
https://velog.io/@dutch-tulip/reflexion
https://proceedings.neurips.cc/paper_files/paper/2023/file/1b44b878bb782e6954cd888628510e90-Paper-Conference.pdf
Chain-of-Verification (CoVe)
https://velog.io/@boyunj0226/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Chain-of-Verification-Reduces-Hallucination-in-Large-Language-Models
https://arxiv.org/abs/2309.11495
SelfCheckGPT
https://velog.io/@mmodestaa/SELFCHECKGPT-Zero-Resource-Black-Box-Hallucination-Detection-for-Generative-Large-Language-Models
https://liner.com/ko/review/selfcheckgpt-zeroresource-blackbox-hallucination-detection-for-generative-large-language-models
https://arxiv.org/pdf/2303.08896
Judging LLM-as-a-Judge (MT-Bench / Chatbot Arena)
https://kashnep.tistory.com/30
https://dytis.tistory.com/81
https://arxiv.org/abs/2306.05685
G-Eval
https://littlefoxdiary.tistory.com/123
https://selectstar.ai/blog/tech/g-eval-nlg-evaluation/
https://arxiv.org/abs/2303.16634?utm_source=chatgpt.com
Multi-agent Debate
https://yoonschallenge.tistory.com/976
https://arxiv.org/pdf/2305.14325
Self-Consistency
https://arxiv.org/pdf/2203.11171
https://digitalbourgeois.tistory.com/150#google_vignette