AI 환각 설명: 언어 모델이 사물을 구성하는 이유와 이를 줄이는 방법

  1. 홈
  2. 블로그
  3. 인공지능

인공지능

AI 환각 설명: 언어 모델이 사물을 구성하는 이유와 이를 줄이는 방법

언어 모델은 단순히 거짓이지만 자신감 있고 잘 작성된 답변을 제공할 수 있습니다. 이런 일이 발생하는 이유, 발생하는 형태, 자체 AI 기능에서 이를 줄이고 감지하는 실용적인 방법을 알아보세요.

읽는 시간 8분
AI 환각 설명: 언어 모델이 사물을 구성하는 이유와 이를 줄이는 방법

핵심 요약

  • AI 환각은 그럴듯하게 들리지만 거짓이거나 지원되지 않는 출력입니다.
  • 모델은 가능한 텍스트를 예측합니다. 그들은 무엇이 진실인지 알 수 있는 내장된 방법이 없습니다.
  • 접근 신뢰할 수 있는 출처의 답변, 명확한 프롬프트 및 자동화된 확인으로 환각이 줄어듭니다.
  • 현재 기술로는 이를 완전히 제거할 수 없으므로 중요한 출력에는 여전히 검증이 필요합니다.

지원 챗봇은 고객에게 환불에 14일이 걸린다고 알려줍니다. 실제 정책은 7이라고 합니다. 대답은 유창하고 정중하며 틀렸습니다. 이는 AI 환각이며 AI 기능에 신중한 설계와 테스트가 필요한 주요 이유 중 하나입니다.

본 가이드에서는 원인을 알기 쉽게 설명하고 실질적인 예방에 중점을 두고 있습니다. 마지막 부분의 자동 확인은 우리가 직접 작성한 예제 답변에 대해 실행한 작은 Python 스크립트입니다. 실제 AI 모델에 대해 실행되지 않았습니다.

AI 환각이란 무엇입니까?

환각은 생성 AI 시스템이 사실적으로 잘못되었거나, 구성되었거나, 제공된 정보에 의해 뒷받침되지 않는 콘텐츠를 생성하면서 이를 사실인 것처럼 제시하는 경우를 말합니다. 이 용어는 은유입니다. 모델은 사물을 보지 못합니다. 사실에 얽매이지 않고 좋은 답변의 패턴에 맞는 텍스트를 생성하는 것입니다.

위험한 부분은 자신감이다. 환각적인 답변은 일반적으로 동일한 어조, 구조 및 세부 사항을 지닌 올바른 답변과 똑같아 보입니다.

언어 모델이 환각을 느끼는 이유

대규모 언어 모델은 엄청난 양의 훈련 데이터의 패턴을 기반으로 다음 텍스트인 토큰을 예측하도록 훈련됩니다. 그로부터 몇 가지 사항이 이어집니다.

  • 그럴듯한 것은 사실과 다릅니다. 모델은 답변이 어떤 경향이 있는지 학습합니다. 사실이 부족하더라도 가장 그럴듯해 보이는 연속이 만들어질 수 있습니다.
  • 간격과 컷오프. 훈련 데이터에는 공백이 있고 특정 날짜에 끝납니다. 모델은 모른다고 말하기보다는 누락된 사실을 채울 수도 있습니다.
  • 훈련 보상 응답. 모델이 환각을 느끼는 이유에 대한 2025년 OpenAI 논문을 포함한 연구에서는 일반적인 훈련 및 평가 방법이 잘못된 답에 대한 불이익이 없는 객관식 테스트와 마찬가지로 불확실성을 인정하는 것보다 추측을 보상한다고 주장합니다.
  • 모호한 프롬프트. 모호한 질문은 모델이 세부 사항을 가정하도록 유도합니다.
  • 길거나 지저분한 맥락. 긴 입력에 묻혀 있으면 중요한 사실이 간과될 수 있습니다.

일반적인 유형의 환각

유형 예
꾸며낸 사실 잘못된 날짜, 숫자 또는 통계
가짜 소스 존재하지 않는 인용, 논문 또는 URL
불성실한 요약 문서에 없는 주장을 추가한 요약
만들어진 코드 존재하지 않는 함수나 패키지에 대한 호출
잘못된 추론 각 단계는 괜찮아 보이지만 결론은 따르지 않습니다.
거짓된 자신감 신뢰할 수 있는 답변이 없는 질문에 답변하기

연구자들은 종종 이러한 오류를 현실 세계와 모순되는 사실성 오류와 모델에 제공된 원본 자료와 모순되는 신실성 오류로 나눕니다. 자신의 문서를 기반으로 구축된 비즈니스 앱의 경우 일반적으로 가장 직접적으로 테스트할 수 있는 것이 충실성입니다.

조작된 코드에는 특별한 경고가 필요합니다. 보조자가 존재하지 않는 패키지 설치를 제안하면 공격자는 해당 이름으로 악성 패키지를 게시할 수 있습니다. 제안된 모든 종속성을 설치하기 전에 실제적이고 신뢰할 수 있는지 확인하세요.

가장 중요한 곳

환각에 빠진 영화 사실은 무해합니다. 환각 약물 복용량, 법적 인용, 환불 정책 또는 재무 수치는 그렇지 않습니다. 변호사가 AI 도구로 발명된 사건 인용을 통해 법원 서류를 제출하는 사례가 잘 보고되어 있습니다. 오답으로 인한 비용을 기준으로 사용 사례의 순위를 매기고 해당 비용이 높은 곳에 가장 강력한 제어 기능을 적용하세요.

환각을 줄이는 방법

  1. 신뢰할 수 있는 데이터를 바탕으로 답을 찾아보세요. 기억에 의존하기보다는 모델에 관련 사실을 제공하세요.
  2. “모름”을 허용합니다. 정보를 사용할 수 없는 경우 모델에 명시적으로 알려주고 이를 좋은 결과로 처리합니다.
  3. 구체적으로 설명하세요. 명확하고 좁은 질문은 발명할 여지가 적습니다. 우리의 신속한 엔지니어링 가이드에서 이에 대해 자세히 다루고 있습니다.
  4. 제공된 출처에서 인용이나 인용을 요청한 다음 자동으로 확인하세요.
  5. 고정 필드가 있는 JSON과 같은 구조화된 출력을 사용하면 답변을 더 쉽게 검증할 수 있습니다.
  6. 계산, 날짜, 실시간 데이터 조회 등 모델이 취약한 작업에는 도구를 사용하세요.
  7. 사람이 중요한 결정을 내리도록 하세요.

자체 데이터 기반

RAG(Retrieval-Augmented Generation)는 가장 일반적인 접지 패턴입니다. 시스템은 문서에서 질문과 관련된 구절을 검색하고 해당 구절에서만 대답하라는 지침과 함께 이를 프롬프트에 포함시킵니다. 허위 사실을 대폭 줄여주지만 치료법은 아니다. 모델은 여전히 ​​문구를 잘못 읽거나, 문구를 잘못 결합하거나, 자체 지식에 의존할 수 있으며, 검색 단계에서 잘못된 문서를 반환할 수 있습니다. 따라서 접지된 시스템에는 여전히 점검이 필요합니다.

팁: 각 답변과 함께 검색된 구절을 기록하세요. 오답이 보고되면 검색이 실패했는지 또는 모델이 좋은 컨텍스트를 무시했는지 빠르게 알 수 있습니다. 수정 방법은 각각 다릅니다.

간단한 자동 확인

여기에 우리가 만든 저렴한 가드가 있습니다. 원본 텍스트에 나타나지 않는 답변의 숫자에 플래그를 지정하세요. 조잡하지만 가격, 날짜, 한도와 같은 숫자는 비용이 많이 드는 환각이 나타나는 곳입니다.

import re

SOURCE = """Refunds are paid within 7 days to the original payment method.
Orders over 1000 rupees ship free. Standard delivery takes 3 to 5 working days."""

def unsupported_numbers(answer, source):
    found = set(re.findall(r"\d+", answer))
    allowed = set(re.findall(r"\d+", source))
    return sorted(found - allowed, key=int)

일반적인 모델 출력을 모방하기 위해 작성된 세 가지 답변을 테스트했습니다.

grounded     -> no unsupported numbers
hallucinated -> ['14', '500']
partly       -> ['1']

‘환각’ 답변에는 14일 환불과 500루피 이상 무료 배송을 요구했는데, 두 숫자 모두 적발됐다. “일부” 답변에는 정확한 배송 시간이 있었지만 “또는 특급 배송 시 1일”이 추가되었는데, 이는 정책에서 언급되지 않았으며 그 역시 적발되었습니다. 두 번째 검사에서는 인용된 문구가 실제로 소스에 나타나는지 확인합니다.

{'paid within 7 days': True, 'no questions asked': False}

이러한 검사에는 분명한 한계가 있습니다. 숫자가 없으면 잘못된 단어, 단위, 뒷받침되지 않는 주장을 놓치고 올바른 계산을 잘못 표시하게 됩니다. 많은 팀에서는 두 번째 모델이 소스와 비교하여 각 주장을 확인하는 “판사로서의 LLM” 단계를 추가합니다. 더 많은 것을 잡을 수 있지만 잘못될 수도 있으므로 측정하세요.

환각 테스트

환각률을 감정이 아닌 측정하는 품질 지표로 간주하세요. 실용적인 접근 방식:

  • 알려진 정답과 소스를 사용하여 실제 질문의 테스트 세트를 구축하세요.
  • 답이 데이터에 없기 때문에 시스템이 거부해야 하는 질문을 포함하세요.
  • 정확성, 출처에 대한 충실성, 적절한 거부에 대한 답변에 점수를 매기세요.
  • 프롬프트, 모델 또는 검색 설정이 변경될 때마다 세트를 실행합니다.
  • 인적 검토를 위한 샘플 제작 대화입니다.

회귀 테스트 원칙이 여기에도 적용됩니다. 즉, 고정된 사례 집합이 모든 변경 사항에 대해 실행되고 시간 경과에 따른 결과가 비교됩니다. 시스템 접지 방법을 선택할 때 RAG, 미세 조정 및 신속한 엔지니어링 비교를 통해 장단점을 설명할 수 있습니다.

일반 사용자를 위한 조언

  • 원본 출처에서 사실, 수치, 인용문 및 인용을 확인하세요.
  • 의료, 법률, 금융 정보에 특히 주의하십시오.
  • 원본 텍스트를 붙여넣고 보조자에게 그 텍스트에서만 답변하도록 요청하세요.
  • “당신은 얼마나 자신감이 있고, 이것은 무엇에 근거한 것인가요?”라고 질문하세요. 하지만 대답이 틀릴 수도 있다는 점을 기억하세요.

환각을 없앨 수 있나요?

현재 기술로는 그렇지 않습니다. 최신 모델과 더 나은 교육으로 인해 많은 벤치마크에서 환각 비율이 감소했으며 접지가 큰 도움이 되었지만 모든 시스템은 여전히 ​​실수를 범합니다. 현실적인 목표는 시스템 설계, 테스트 및 사용자에게 명확한 신호를 통해 오류를 드물게 만들고 감지하기 쉽게 하며 영향을 최소화하는 것입니다.

AI 코딩 도구의 환각

개발자는 클래스에 존재하지 않는 방법, 오래된 구성 옵션 또는 실제로 다른 원인으로 인해 발생하는 오류에 대한 자신 있는 설명 등 코딩 도우미에서 매일 환각을 경험합니다. 방어는 이미 휴먼 코드에 사용하고 있는 방어입니다. 결과를 컴파일하거나 유형을 확인하고, 테스트를 실행하고, 이전에 사용하지 않은 API에 대한 공식 문서를 읽어보세요. 그럴듯해 보이는 코드가 미묘하게 안전하지 않을 수 있는 인증, 암호화, 입력 유효성 검사 등 보안에 민감한 코드에는 각별히 주의하세요. AI 제안을 빠르지만 신뢰할 수 없는 동료의 초안으로 취급하십시오. 종종 유용하지만 자동으로 수정되지는 않습니다.

마무리

환각은 언어 모델이 작동하는 방식에서 비롯됩니다. 확인된 사실이 아니라 가능성 있는 텍스트를 생성합니다. 끌 수는 없지만 주변에 디자인할 수는 있습니다. 신뢰할 수 있는 데이터에 대한 답을 찾고, 모델이 “모르겠어요”라고 말하게 하고, 중요한 세부 사항에 대한 자동 검사를 추가하고, 결과를 지속적으로 측정합니다.

자주 묻는 질문

AI 환각이란 무엇입니까?

AI 시스템이 허위이거나 지원되지 않는 정보를 생성하고 이를 허위 통계, 인용 또는 정책 세부 사항과 같이 사실인 것처럼 제시하는 경우입니다.

AI 모델이 환각을 느끼는 이유는 무엇입니까?

언어 모델은 확인된 사실이 아닌 패턴을 기반으로 가능한 텍스트를 예측합니다. 훈련 데이터의 격차, 모호한 프롬프트, 추측에 대한 보상을 제공하는 훈련 등이 모두 환각을 일으킬 가능성을 높입니다.

RAG는 ​​환각을 멈추나요?

모델에 신뢰할 수 있는 정보를 제공하여 이러한 문제를 줄이지만 이를 막지는 않습니다. 모델은 여전히 ​​소스를 잘못 읽을 수 있으며 검색 시 잘못된 문서가 반환될 수 있습니다.

AI 환각을 어떻게 감지할 수 있나요?

답변을 원본 문서와 비교하고, 숫자와 인용문을 자동으로 확인하고, 두 번째 모델을 사용하여 주장을 확인하고, 사람들과 함께 샘플을 검토하세요.

AI 환각은 사라질 수 있을까?

모델이 개선됨에 따라 비율은 낮아지고 있지만 현재의 방법으로는 이를 완전히 제거할 수 없습니다. 중요한 결과에는 여전히 확인과 사람의 검토가 필요합니다.

계속 학습하세요

Stack Quora와 작업

테스트, WordPress 또는 SEO에 도움이 필요하십니까?

우리는 팀이 더 나은 소프트웨어를 출시하고 사이트를 성장시킬 수 있도록 돕습니다. 현재 진행 중인 작업을 알려주시면 명확한 다음 단계를 제안해 드리겠습니다.

계속 읽으세요

추가 가이드 테스트, AI 및 최신 개발

이 기사가 마음에 드셨나요? 주제를 선택하고 최신 튜토리얼로 바로 이동하세요.

인공지능

AI 환각 설명: 언어 모델이 사물을 구성하는 이유와 이를 줄이는 방법

AI 환각은 그것이 무엇인지, 언어 모델이 환각을 생성하는 이유, 일반적인 유형, 접지 및 프롬프트를 통해 환각을 줄이는 방법, 그리고 우리가 실행한 간단한 점검에 대해 설명했습니다.

기사 읽기 →
DevOps

환경 변수 설명: .env 파일, 비밀 및 구성이 올바르게 완료되었습니다.

우리가 실행한 Python 예제를 통해 설명된 환경 변수: 읽기 및 설정, 모든 값이 문자열인 이유, .env 파일, 프로세스 상속, 비밀 및 유효성 검사.

기사 읽기 →
소프트웨어 개발

API 속도 제한 설명: 알고리즘, 헤더 및 429 오류 처리

우리가 실행한 시뮬레이션을 통해 설명된 API 속도 제한: 토큰 버킷, 고정 창, 슬라이딩 창, 429 응답, 속도 제한 헤더, 백오프를 사용한 재시도 및 테스트 제한.

기사 읽기 →
테스트 자동화

Python에서 조롱: unittest.mock, 패치 및 테스트를 거짓말로 만드는 실수

Unittest.mock을 사용하여 Python에서 모의, 테스트됨: 모의 및 return_value, 부작용, 이름이 사용되는 패치, 사양 및 자동 사양, 모의 날짜 및 일반적인 실수.

기사 읽기 →
소프트웨어 테스트

코드 커버리지 설명: 회선 커버리지와 분기 커버리지 및 100%의 실제 의미

실제 Coverage.py 실행을 통해 설명되는 코드 적용 범위: 라인, 분기 및 조건 적용 범위, 보고서 읽기, 100% 적용 범위가 여전히 버그를 놓칠 수 있는 이유 및 합리적인 대상.

기사 읽기 →
데이터베이스 및 SQL

SQL의 DELETE vs TRUNCATE vs DROP: 차이점, 롤백 및 사용 시기

테스트된 SQL을 통해 DELETE 대 TRUNCATE 대 DROP에 대해 설명합니다. 각각의 제거, 롤백, 트리거, ID 재설정, 속도 및 PostgreSQL, MySQL, SQL Server 및 SQLite의 차이점.

기사 읽기 →
데이터베이스 및 SQL

SQL 뷰 설명: 예제를 통해 함정 생성, 사용 및 방지

우리가 실행한 쿼리로 설명된 SQL 뷰: 뷰 생성, 실시간 결과, 열 숨기기, 성능, 업데이트 가능하고 구체화된 뷰, 손상된 종속성 및 모범 사례.

기사 읽기 →
소프트웨어 개발

TypeScript 인터페이스와 유형: 실제 차이점, 컴파일러로 테스트

TypeScript 인터페이스 대 유형, 실제 컴파일러로 확인: 둘 다 할 수 있는 것, 하나만 할 수 있는 것, 선언 병합, 확장 대 교차점 및 따라야 할 간단한 규칙.

기사 읽기 →
소프트웨어 개발

Python *args 및 **kwargs 설명: 명확한 예가 포함된 유연한 함수

Python *args 및 **kwargs는 우리가 실행한 코드(패킹 및 언패킹, 매개변수 순서, 키워드 전용 및 위치 전용 인수, 데코레이터 및 일반적인 오류)를 설명했습니다.

기사 읽기 →
소프트웨어 개발

Python Lambda 함수: 구문, 실제 사용 및 사용하지 말아야 할 경우

Python 람다 함수는 구문, 키를 사용한 정렬, 맵 및 필터, 클로저, 후기 바인딩 트랩, 일반 def가 더 나은 선택인 경우 등 우리가 실행한 코드로 설명되었습니다.

기사 읽기 →
인공지능

AI 에이전트란 ​​무엇입니까? 작동 방식, 간단한 에이전트 루프를 사용하여 실행할 수 있음

AI 에이전트란 무엇입니까? 우리가 실행한 작은 Python 루프, 실제 위험 및 간단한 챗봇이 더 나은 선택일 때 에이전트 루프, 도구, 메모리 및 가드레일에 대한 일반 가이드입니다.

기사 읽기 →
DevOps

모니터링과 관찰 가능성: 로그, 지표, 추적을 통한 실제 차이점

모니터링과 관찰 가능성 설명: 알려진 오류와 알려지지 않은 오류, 로그, 지표 및 추적, 결제 사건 안내, 골든 신호, OpenTelemetry 및 유용한 경고.

기사 읽기 →
DevOps

Docker 볼륨과 바인딩 마운트: 컨테이너 데이터를 올바른 방식으로 유지

Docker 볼륨과 바인드 마운트 설명: 컨테이너 데이터가 사라지는 이유, 명명된 볼륨, 바인드 마운트, tmpfs, Compose 예제, 백업, 권한 및 각 사용 시기.

기사 읽기 →
테스트 자동화

TDD와 BDD: 주요 차이점, 두 가지 방식으로 구축된 하나의 기능 및 각 사용 시기

TDD와 BDD는 두 가지 방식으로 구축된 하나의 할인 기능, 즉 우리가 실행한 코드를 사용한 적록 리팩토링, 주어진 시점 시나리오, 도구, 장단점 및 각 사용 시기를 설명합니다.

기사 읽기 →
소프트웨어 개발

Git merge vs rebase: 차이점, 예제, 언제 무엇을 쓸까

Git merge vs rebase를 실제 로그 출력, 비교표, rebase의 황금률, 안전한 팀 워크플로로 설명합니다.

기사 읽기 →
소프트웨어 개발

파이썬 리스트 컴프리헨션: 문법, 예제, 피해야 할 때

파이썬 리스트 컴프리헨션 설명: 문법, 필터링, if-else, 중첩 반복문, 실제 측정 시간, 그리고 일반 for 반복문이 더 나은 경우.

기사 읽기 →
데이터베이스 및 SQL

예제로 쉽게 배우는 SQL JOIN (Inner, Left, Right, Full)

샘플 테이블과 쿼리로 SQL JOIN을 단계별로 이해하세요. INNER, LEFT, RIGHT, FULL, CROSS, SELF와 흔한 실수, 성능 팁까지 정리했습니다.

기사 읽기 →