LLM의 한계와 환각: AI가 틀리는 이유

LLM 환각(Hallucination)의 정의와 유형(사실적·충실성·추론 오류), 발생 원인의 근본 메커니즘, 자가 일관성 측정 방법, 그리고 RAG·구조화 출력·RLHF를 활용한 실전 완화 전략을 코드와 함께 완전 해설한다.

· 12 min read · PALDYN Team

지난 글에서 Beam Search를 비롯한 디코딩 방법들이 어떻게 더 좋은 텍스트를 탐색하는지 살펴봤다. 그런데 아무리 정교한 디코딩 방법을 써도 해결되지 않는 근본적인 문제가 있다. 바로 LLM이 없는 사실을 만들어내는 현상, 즉 환각(Hallucination)이다. ChatGPT를 사용해본 사람이라면 한 번쯤 “AI가 그럴듯하게 틀린 답을 자신 있게 말하는” 경험을 했을 것이다. 이 글에서는 환각의 정체, 발생 원인, 측정 방법, 그리고 실용적인 완화 전략을 깊이 살펴본다.

환각이란 무엇인가

LLM 환각(Hallucination)은 모델이 사실이 아닌 정보를 마치 사실인 것처럼 유창하게 생성하는 현상이다. 단순한 실수나 오류와 다르다. 환각의 핵심은 두 가지 특성의 결합이다.

유창성: 문법적으로 완벽하고 자연스러운 문장으로 제시된다. 자신감: 모델이 불확실성을 표현하지 않고 확정적으로 진술한다.

“세종대왕이 1397년에 영국에서 훈민정음을 완성했다”는 문장은 문법적으로 완벽하고, AI는 이를 마치 역사적 사실인 것처럼 말한다. 이것이 환각이다.

LLM 환각 유형 분류

환각의 세 가지 유형

환각은 크게 세 가지 유형으로 분류된다.

**사실적 환각(Factual Hallucination)**은 가장 흔한 유형으로, 존재하지 않거나 틀린 사실을 생성한다. 가짜 논문 인용, 존재하지 않는 법률 조항, 잘못된 역사적 날짜와 인물 등이 여기 속한다. 유명한 사례로, 미국의 변호사가 ChatGPT를 사용해 작성한 법정 서류에서 실제로 존재하지 않는 판례 6개가 발견돼 법정 제재를 받은 일이 있다.

**충실성 환각(Faithfulness Hallucination)**은 제공된 컨텍스트(문서, 지시)와 모순되는 내용을 생성하는 유형이다. 500개라고 명확히 나와 있는 판매량을 5,000개로 과장하거나, “한국어로 답하라”는 지시를 무시하고 영어로 답하는 경우다. RAG 시스템에서 검색된 문서 내용을 왜곡해 전달하는 것도 이 범주다.

**추론 오류(Reasoning Error)**는 전제는 올바르지만 논리적 추론 과정에서 오류가 발생하는 유형이다. 단순한 수학 계산 오류, 순환 논리, 다단계 추론에서의 비약이 여기 속한다. “A이면 B, B이면 C, 따라서 A이면 D”처럼 중간 논리 단계를 건너뛰는 경우다.

왜 LLM은 환각하는가

환각의 근본 원인을 이해하면 완화 전략도 명확해진다.

확률적 텍스트 생성: LLM은 “다음 토큰의 확률 분포”에서 샘플링하는 방식으로 작동한다. 이 과정은 사실 검증이 아니라 언어 패턴 학습의 결과다. “아인슈타인은 ___을 발표했다”라는 문장 패턴에서, 모델은 훈련 데이터에서 아인슈타인과 자주 연결된 것들을 생성한다. 설령 그것이 실제로 아인슈타인이 한 일이 아니더라도.

훈련 목표와 사실 검증의 괴리: 사전학습의 목표는 “다음 토큰 예측”이다. 이 목표 자체에는 “사실인가”를 검증하는 메커니즘이 없다. 인터넷 텍스트에는 오류, 편견, 거짓 정보가 섞여 있고, 모델은 이것들도 학습한다.

지식 커트오프: 학습 데이터 이후의 사건에 대해서는 정보가 없다. 하지만 모델은 그 사실을 알지 못하고, 기존 패턴으로 추론해 잘못된 내용을 생성할 수 있다.

“모른다”는 표현의 부재: 인간은 “잘 모르겠어요”라고 말할 수 있지만, 기본적인 LLM은 항상 유창한 답을 생성하도록 훈련되어 있다. RLHF로 “모른다”고 말하도록 학습하지 않으면, 모델은 불확실한 상황에서도 확정적으로 답한다.

환각 측정: 자가 일관성 체크

환각을 자동으로 탐지하는 방법 중 하나가 자가 일관성(Self-Consistency) 체크다. 동일한 주장을 여러 번 모델에게 물어보고, 답이 일관적인지를 측정한다. 같은 질문에 “Yes”와 “No”를 반반씩 답한다면, 그 주장은 모델이 확신하지 못한다는 신호다.

# 환각 탐지: 자가 일관성(Self-Consistency) 체크
from anthropic import Anthropic

client = Anthropic()

def check_consistency(claim: str, n_samples: int = 5) -> float:
    """동일 주장을 여러 번 생성해 일관성 측정"""
    results = []
    for _ in range(n_samples):
        response = client.messages.create(
            model="claude-opus-4-7",
            max_tokens=50,
            messages=[{
                "role": "user",
                "content": f"다음이 사실인지 Yes/No로만 답하세요: {claim}"
            }]
        )
        answer = response.content[0].text.strip().lower()
        results.append("yes" in answer)

    consistency = sum(results) / len(results)
    return consistency  # 0.5에 가까울수록 불확실

consistency가 0.0 또는 1.0에 가까우면 모델이 일관된 판단을 내리고, 0.5에 가까울수록 불확실하다는 신호다. 실용적으로는 consistency < 0.7이면 그 주장을 인간이 별도로 검증하도록 플래그를 세울 수 있다.

완화 전략 1: RAG

**RAG(Retrieval-Augmented Generation)**는 현재 가장 효과적인 사실적 환각 완화 방법이다. 모델에게 답변의 근거가 될 문서를 실시간으로 제공함으로써, 모델이 훈련 데이터의 패턴이 아닌 주어진 사실을 바탕으로 답하게 한다.

RAG의 핵심 프롬프트 전략: “아래 문서를 바탕으로만 답하세요. 문서에 없는 정보는 ‘문서에서 확인할 수 없습니다’라고 답하세요.”

이 지시가 있으면 모델은 컨텍스트 밖의 내용을 생성하는 것을 억제한다. 물론 충실성 환각이 완전히 사라지지는 않지만 대폭 감소한다.

환각 완화 전략 다이어그램

완화 전략 2: 구조화 출력과 팩트체크

모델 출력을 JSON 스키마로 강제하면 환각의 형태가 제한된다. 특히 각 주장에 출처(source) 필드를 포함하도록 요구하면, 모델이 출처를 제시해야 하므로 가짜 정보를 생성하기 어려워진다.

{
  "claim": "세종대왕은 1443년에 훈민정음을 창제했습니다.",
  "source": "훈민정음 해례본 (1446)",
  "confidence": "high"
}

이 출력을 받은 후, 외부 검색 API나 지식 베이스로 claimsource를 자동 검증하는 파이프라인을 구성할 수 있다. 검증에 실패한 주장은 인간 검토 큐로 보낸다.

완화 전략 3: RLHF와 Constitutional AI

**RLHF(Reinforcement Learning from Human Feedback)**는 더 근본적인 접근법이다. 인간 평가자들이 환각이 있는 응답에 낮은 점수를 주면, 리워드 모델이 이를 학습해 LLM 자체를 더 정직하게 업데이트한다.

Claude의 Constitutional AI는 RLHF를 발전시킨 방법으로, “모르는 것은 모른다고 말하라”, “불확실한 정보에는 명시적으로 불확실성을 표현하라” 같은 원칙(constitution)을 AI 스스로 적용하도록 훈련한다. 이 덕분에 Claude는 “이 질문에 대해서는 확신하기 어렵습니다”처럼 불확실성을 자연스럽게 표현한다.

LLM의 다른 근본적 한계들

환각 외에도 LLM이 갖는 근본적 한계들이 있다.

지식 커트오프: 학습 데이터 이후 사건은 알 수 없다. 이것은 RAG나 Tool Use로 극복해야 한다.

수학 및 정밀 추론: LLM은 토큰 수준에서 작동하기 때문에 복잡한 산술 연산을 직접 수행하기 어렵다. 외부 코드 실행 도구(Code Interpreter)를 통해 우회할 수 있다.

장기 계획(Long-Horizon Planning): 수십 단계의 복잡한 계획을 짜고 실행하는 능력은 여전히 제한적이다. 이는 AI 에이전트 분야의 핵심 연구 과제다.

맥락 추적의 한계: 컨텍스트 윈도우가 길어도 “Lost in the Middle” 현상처럼 중간 정보가 손실될 수 있다.

편향(Bias): 훈련 데이터의 편향이 모델에 내재화된다. 성별, 인종, 문화적 편향이 특정 맥락에서 나타날 수 있다.

환각을 완전히 없앨 수 있을까

솔직히 말하면, 현재 기술로는 LLM 환각을 완전히 제거하는 것이 불가능하다. 확률적 언어 모델의 본질에서 비롯되는 한계이기 때문이다. 하지만 올바른 시스템 설계로 환각의 영향을 최소화할 수 있다.

환각을 전제한 시스템 설계가 핵심이다. LLM의 출력을 최종 정보로 직접 사용자에게 제공하는 설계는 위험하다. 검증 레이어, 출처 표시, 불확실성 명시, 인간 검토 워크플로우를 갖춘 파이프라인이 필요하다. LLM을 “항상 옳은 오라클”이 아닌 “강력하지만 검증이 필요한 초안 생성기”로 보는 시각 전환이 중요하다.


지난 글: 디코딩 방법: Greedy에서 Beam Search까지

다음 글: GPT 패밀리: OpenAI 모델의 진화


읽어주셔서 감사합니다. 😊