[System Logic] AI가 거짓말을 하는 수학적 이유: CoT(Chain of Thought)와 프롬프트 체이닝을 통한 할루시네이션 통제

오늘 칼럼에서는 CoT(Chain of Thought)프롬프트 체이닝(Prompt Chaining)이라는 두 가지 수학적 도구를 통해 AI의 논리를 제어하는 방법을 분석합니다.

2026년, 우리는 인공지능(AI)이 인간의 언어를 완벽하게 이해한다고 착각하곤 합니다. 하지만 시스템 아키텍트의 관점에서 냉정하게 바라보면, LLM(Large Language Model)은 그저 ‘다음에 올 단어의 확률(ProbabilityProbability)을 예측하는 기계’일 뿐입니다.

프롬프트 체이닝

우리는 종종 AI가 뻔뻔하게 거짓말을 하는 현상, 즉 할루시네이션(Hallucination)을 목격합니다. 이는 AI의 ‘오류’라기보다는, 설계된 ‘특성’에 가깝습니다. 학습 데이터에 없는 공백을 만났을 때, AI는 ‘모른다’고 답하는 대신 통계적으로 가장 그럴듯한 단어를 이어 붙여 ‘거짓된 진실’을 생성하기 때문입니다.

그렇다면 우리는 이 확률적 불확실성을 어떻게 통제할 수 있을까요? 해답은 질문(Input)이 아니라, 사고의 과정(Process)을 설계하는 데 있습니다.

1. 거짓말의 기원: 확률 분포의 함정

LLM이 문장을 생성하는 원리는 조건부 확률 P(wt|w1:t1)P(w_t | w_{1:t-1})로 설명될 수 있습니다. 즉, 이전까지의 문맥(Context)이 주어졌을 때, 다음에 올 단어 wtw_t의 확률 분포를 계산하는 것입니다.

문제는 이 확률 분포가 ‘사실 여부(Factuality)’와는 무관하다는 점입니다.

예를 들어, “세종대왕이 아이폰을 던진 사건에 대해 설명해”라고 묻는다면, AI는 역사적 사실이 없더라도 ‘던졌다’, ‘화가 났다’ 등의 단어가 문맥상 이어질 확률이 높다고 판단하여 그럴듯한 소설을 써 내려갑니다.

이것이 바로 할루시네이션의 본질입니다. AI는 거짓말을 하려는 의도가 없습니다. 단지 확률적으로 가장 매끄러운 문장을 완성하려는 목적 함수(Objective FunctionObjective\ Function)에 충실할 뿐입니다.

2. CoT (Chain of Thought): 사고의 연결고리 설계

이러한 확률적 편향을 줄이기 위해 구글 리서치팀이 제안한 것이 바로 CoT(Chain of Thought)입니다. 핵심은 단순합니다. AI에게 정답을 바로 요구하지 말고, “단계별로 생각하라(Let’s think step by step)”고 지시하는 것입니다.

CoT

2-1. 중간 연산 과정의 필요성

인간에게 23×4823 \times 48을 암산하라고 하면 틀릴 확률이 높습니다. 하지만 종이에 중간 계산 과정을 적으라고 하면 정답률은 비약적으로 상승합니다. AI도 마찬가지입니다.

  • Zero-Shot (일반 질문): “정답은?” \rightarrow 확률에 의존한 직관적 답변 (오류 가능성 높음)
  • CoT (사고의 사슬): “풀이 과정을 보여줘” \rightarrow 논리적 단계를 거치며 정답의 범위(ScopeScope)를 좁혀감 (수렴)

2-2. 논리적 벡터의 정렬

수학적으로 CoT는 문제 해결을 위한 벡터(Vector)의 방향을 교정하는 과정입니다. 중간 단계(Intermediate Steps)를 생성하게 함으로써, AI는 엉뚱한 방향으로 발산(DivergenceDivergence)하지 않고 논리적 결론으로 수렴(ConvergenceConvergence)하게 됩니다.

3. 프롬프트 체이닝 (Prompt Chaining): 모듈화된 사고

CoT가 하나의 질문 안에서 사고를 확장하는 것이라면, 프롬프트 체이닝(Chaining)은 업무 자체를 여러 개의 모듈(Module)로 쪼개어 연결하는 시스템 아키텍처입니다.

CoT

복잡한 업무를 한 번에 지시하면(Single Prompt), AI의 주의력(Attention Mechanism)이 분산되어 성능이 저하됩니다. 따라서 우리는 업무를 다음과 같이 분해(Decomposition)해야 합니다.

[Systematic Logic Flow]

  1. Input Analysis: 사용자의 질문에서 핵심 의도와 제약 조건을 추출하라.
  2. Information Retrieval: 추출된 키워드를 바탕으로 관련 지식을 검색하거나 내부 데이터베이스를 조회하라.
  3. Drafting: 수집된 정보를 바탕으로 답변의 초안을 작성하라.
  4. Verification (Self-Reflection): 작성된 초안에 논리적 오류나 할루시네이션이 없는지 스스로 비판하라.
  5. Final Output: 검증된 내용을 바탕으로 최종 답변을 포맷팅하라.

[Code Example: 프롬프트 설계 비교]

# [Bad Prompt: One-Shot]
"이 50페이지짜리 기술 보고서를 읽고, 핵심 내용을 요약해서 투자자용 이메일을 써줘."
(결과: 중요 내용 누락, 없는 사실 날조 가능성 높음)

# [Good Prompt: Chaining Architecture]
Step 1. [Extract] 이 보고서에서 '매출', '순이익', '리스크 요인' 3가지 데이터를 추출하라.
Step 2. [Analyze] 추출된 데이터의 전년 대비 증감률을 계산하고, 그 원인을 본문에서 찾아 매핑하라.
Step 3. [Critique] 위 분석 내용 중 수치적 오류가 없는지 다시 한번 원문과 대조하라.
Step 4. [Generate] 검증된 데이터를 바탕으로, 투자자에게 신뢰를 줄 수 있는 정중한 어조의 이메일 초안을 작성하라.

4. 할루시네이션을 0으로 수렴시키는 법

완벽한 시스템은 없습니다. 하지만 우리는 리스크를 통제 가능한 범위 내로 줄일 수 있습니다.

  1. RAG (Retrieval-Augmented Generation): AI의 내부 지식(Parametric Memory)에만 의존하지 말고, 신뢰할 수 있는 외부 문서나 데이터를 참조하게 하십시오.
  2. Self-Correction (자가 수정): 프롬프트의 마지막에 *”네가 작성한 답변에 편향이나 오류가 없는지 다시 검토해”*라는 명령어를 추가하는 것만으로도 정확도는 15% 이상 향상됩니다.
  3. Temperature 조절: 창의성이 필요한 글쓰기가 아니라면, AI의 Temperature(창의성 변수)를 0에 가깝게 설정하여 확률적 변동성을 차단해야 합니다.

결론: 당신은 사용자인가, 설계자인가?

AI 시대의 격차는 ‘누가 더 좋은 툴을 쓰느냐’가 아니라, ‘누가 AI의 사고 과정을 더 정교하게 설계하느냐’에서 발생합니다.

단순히 질문을 던지는 사용자(User)에 머물지 마십시오.

AI가 논리적으로 사고할 수밖에 없도록 길을 터주는 시스템 아키텍트(System Architect)가 되십시오.

할루시네이션은 AI의 결함이 아닙니다. 그것은 우리가 논리적 통제권을 놓쳤을 때 발생하는 시스템의 경고 신호일뿐입니다.

댓글 남기기