언어모델은 문장의 가능성을 생성하는 시스템이지 사실 데이터베이스가 아니므로, 근거와 검증이 없으면 유창한 오류가 자연스럽게 나올 수 있습니다.
환각은 모델이 갑자기 거짓말을 결심해서 생기는 현상이 아닙니다. 학습한 패턴과 현재 문맥을 바탕으로 다음 토큰을 이어 가는 생성 과정이 사실 확인과 같은 목표를 자동으로 갖지 않기 때문에 생깁니다. 그래서 정확한 설명과 그럴듯한 꾸며낸 설명이 같은 문체로 나타날 수 있습니다.
AI 핵심 지식 52편 중 23편입니다. 제품 화면이 바뀌어도 남는 원리와 판단 기준을 다룹니다.
환각을 만드는 네 층
| 층 | 구조적 원인 | 관찰되는 오류 |
|---|---|---|
| 생성 목표 | 가능한 다음 표현을 이어 간다 | 유창하지만 틀린 문장이 나온다 |
| 지식·문맥 | 학습 정보와 현재 근거가 불완전하다 | 빈칸을 비슷한 패턴으로 메운다 |
| 검증 경로 | 외부 사실과 자동 대조하지 않는다 | 이름·날짜·인용을 확정적으로 말한다 |
| 평가 압력 | 항상 답하도록 유도된다 | 모름을 표시하지 않고 추정한다 |
환각을 다루는 분석 순서
- 문장을 사실 주장, 해석, 제안, 창작으로 분류한다.
- 사실 주장마다 확인 가능한 원자료가 있는지 본다.
- 오류가 검색, 문맥 구성, 생성, 인용 중 어디서 생겼는지 나눈다.
- 실패 비용에 따라 출처 요구, 거절, 사람 검토를 배치한다.
다음 토큰 예측은 사실 판정과 같은 목표가 아니다
언어모델은 이전 토큰의 문맥에서 이어질 가능성이 높은 토큰을 예측하도록 학습됩니다. 이 목표는 문법적으로 자연스럽고 주제에 맞는 문장을 만드는 데 강하지만, 각 문장이 현실 세계의 사실과 일치하는지 별도의 데이터베이스에서 조회해 보장하지는 않습니다. 학습 자료에 정확한 설명과 오개념, 오래된 정보, 서로 충돌하는 표현이 함께 있으면 모델은 그 분포를 압축해 배웁니다. 질문에 특정 인물의 논문 제목이나 존재하지 않는 사건의 날짜를 요구하면, 비슷한 이름과 문장 패턴을 조합해 그럴듯한 답을 만들 수 있습니다. 생성 확률이 높다는 것은 표현이 익숙하다는 뜻이지 사실일 확률을 직접 뜻하지 않습니다. 따라서 유창함, 자신감 있는 말투, 상세한 숫자를 정확성의 증거로 사용하면 안 됩니다. 창작이나 아이디어 발산에서는 새로운 조합이 장점이 될 수 있지만, 사실 조회에서는 같은 생성 성질이 위험이 됩니다. 먼저 업무가 자유 생성인지 근거 기반 사실 전달인지 구분하고, 후자라면 생성 모델 바깥의 확인 경로를 설계해야 합니다.
학습 분포의 빈틈과 충돌이 추정을 만든다
모델이 학습 과정에서 접한 정보는 모든 분야를 균등하게 덮지 않습니다. 널리 반복된 주장은 강하게 나타나고, 드문 전문 지식이나 지역 정보는 약하게 표현될 수 있습니다. 같은 사실도 시점에 따라 바뀌며 서로 다른 자료가 모순될 수 있습니다. 학습 데이터가 공개되지 않거나 내부 표현을 직접 볼 수 없는 경우, 특정 사실이 정확히 어떻게 저장되었는지 확인하기 어렵습니다. 사용자가 생소한 용어를 실제 개념처럼 전제하면 모델은 전제를 의심하기보다 문맥상 어울리는 설명을 만들 수도 있습니다. TruthfulQA가 보여 주듯 인간 사회에 널리 퍼진 오개념을 모방하는 문제도 있습니다. 크기나 유창성이 늘었다고 진실성이 자동으로 같은 비율로 늘어난다고 가정할 수 없습니다. 이런 한계는 ‘모델이 무엇을 아는가’를 한 번의 답으로 시험하는 방식이 약하다는 뜻입니다. 고위험 사실은 원문, 데이터베이스, 최신 문서와 연결하고, 존재하지 않는 전제를 확인하는 반례 질문과 답하지 말아야 할 사례를 평가에 포함해야 합니다.
문맥이 있어도 사용 실패와 인용 오류가 남는다
근거 문서를 프롬프트에 넣는다고 환각이 사라지는 것은 아닙니다. 관련 문장이 너무 긴 문맥의 중간에 묻히거나, 질문과 다른 문서가 검색되거나, 서로 충돌하는 자료가 함께 들어오면 모델이 잘못된 부분을 선택할 수 있습니다. 문서에 없는 연결 관계를 자연스럽게 보완하거나, 실제 문장을 인용한 뒤 그 문장이 지지하지 않는 결론을 덧붙일 수도 있습니다. 출처 번호를 출력한다고 해서 인용 충실성이 자동으로 확보되는 것도 아닙니다. 링크가 존재하지만 주장과 무관하거나, 출처의 문장을 과장해 해석할 수 있습니다. 따라서 검색 성공, 문맥 사용, 주장 생성, 인용 연결을 따로 평가해야 합니다. 답을 문장 단위의 주장으로 나누고 각 주장이 어느 근거 구간에서 나왔는지 확인하면 실패 위치가 보입니다. 자료가 서로 다르면 하나를 임의로 선택하지 말고 충돌과 확인 시점을 표시해야 합니다. 근거가 비어 있을 때는 추정으로 이어 쓰지 않고 정보 부족을 반환하는 경로가 필요합니다.
완화는 정답 보장이 아니라 실패 영향의 관리다
프롬프트에 ‘환각하지 마’라고 쓰는 것만으로는 생성 구조가 바뀌지 않습니다. 완화는 과업 범위를 좁히고, 신뢰 가능한 근거를 제공하고, 불확실성을 표현하게 하고, 결과를 독립 검증하는 여러 층으로 설계해야 합니다. 사실 주장이 필요 없는 부분은 해석이나 제안으로 명확히 표시하고, 날짜·수치·고유명사처럼 오류 비용이 큰 항목은 원문 대조를 요구합니다. 검색을 붙였다면 정답 문서가 실제로 검색되는지 먼저 측정하고, 생성 답의 충실성은 별도로 봅니다. 사용자가 결과를 바로 행동으로 옮기는 환경에서는 사람 승인과 도구 권한을 제한합니다. 모든 답을 무조건 거절하게 하면 유용성이 사라지므로, 위험 수준에 따라 자유 생성, 근거 표시, 사람 검토, 자동 중단을 나눕니다. 환각률 하나로 시스템 전체를 평가하기보다 오류 유형과 피해 가능성을 연결해야 합니다. 목표는 틀린 문장이 절대 나오지 않는다는 약속이 아니라, 중요한 오류를 조기에 발견하고 실제 피해로 이어지지 않게 만드는 것입니다.
판단 체크리스트
- 출력을 사실·해석·제안·창작으로 구분했는가
- 고유명사·날짜·수치 주장에 확인 가능한 원문이 있는가
- 검색 품질과 생성 충실성을 별도 지표로 보는가
- 근거 부족과 고위험 행동에 중단·승인 경로가 있는가
자주 생기는 오해
- 모델이 자신 있게 말하면 알고 있는 것이다 — 표현의 유창성과 생성 확률은 사실의 진실성을 직접 측정하지 않습니다.
- 검색을 붙이면 환각이 사라진다 — 검색 누락, 잘못된 문맥 선택, 근거 밖 생성과 인용 오류가 각각 남습니다.
오류 위치에 따른 대응
| 상황 | 해석 | 다음 행동 |
|---|---|---|
| 근거 문서가 검색되지 않았다 | 검색 단계 실패 | 생성을 고치기 전에 질의와 색인을 점검한다 |
| 근거는 있으나 답이 벗어났다 | 문맥 사용·생성 실패 | 주장과 근거 구간을 문장별로 대조한다 |
| 인용은 있으나 결론을 지지하지 않는다 | 인용 연결 실패 | 출처 존재가 아니라 함의 관계를 검토한다 |
자주 묻는 질문
온도를 낮추면 환각이 없어지나요?
출력 변동을 줄일 수 있지만 잘못된 정보가 가장 높은 확률을 가지면 일관되게 틀릴 수 있습니다.
긴 설명은 더 정확한가요?
길이는 근거가 아닙니다. 오히려 검증할 사실 주장이 늘어날 수 있어 주장 단위 점검이 필요합니다.
출처 링크를 달게 하면 충분한가요?
링크가 실제로 존재하고 해당 주장을 지지하는지 확인해야 합니다. 출처 형식만 맞는 가짜 인용도 가능합니다.
환각을 완전히 없앨 수 있나요?
일반 생성 시스템에서 완전 제거를 약속하기 어렵습니다. 과업·근거·검증·권한을 설계해 빈도와 영향을 관리합니다.
관련 좌표
작성·검증 정보
- 작성·검토: AI좌표 편집부
- 원문 확인일: 2026-07-27
- 다음 재검토일: 2027-07-27
- 재검토 조건: 원 논문의 정정·철회, 표준 정의 변경, 장기 평가에서 핵심 반례가 확인될 때