안전

환각

Hallucination

AI가 사실이 아닌 정보를 확신 있게 생성하는 현상. 모델이 "모른다"고 하지 않고 그럴듯하게 지어내는 구조적 한계에서 비롯된다.

환각이란

AI에게 잘 모르는 걸 물어보면 "모르겠는데요"라고 하는 대신 그럴듯한 답을 지어내는 경우가 있다. 존재하지도 않는 논문을 인용하고, 실제로는 없는 함수를 코드에 끼워 넣고, 틀린 날짜나 숫자를 아주 자신 있게 말한다. 이걸 환각이라고 부른다.

중요한 건 AI가 거짓말을 하려는 게 아니라는 점이다. LLM은 앞의 문맥을 보고 다음에 올 단어를 확률적으로 이어 붙이는 방식으로 문장을 만든다. 그래서 사실을 아는지 모르는지를 스스로 판단하는 능력이 없고, 그냥 "가장 그럴듯하게 이어지는 말"을 만들어낼 뿐이다. 근거가 부족한 상황에서도 문장은 매끄럽게 완성되기 때문에, 틀린 내용이 오히려 더 자연스러워 보이는 일이 벌어진다.

왜 지어내는 쪽을 택할까

최근 연구에서 흥미로운 관점이 나왔다. 환각이 순전히 모델 구조나 데이터 부족 때문만은 아니고, 우리가 AI를 훈련하고 평가하는 방식이 지어내기를 부추긴다는 것이다. 시험을 떠올리면 쉽다. 객관식 시험에서 모르는 문제를 빈칸으로 두면 0점이지만 찍으면 맞을 확률이라도 생긴다. AI 평가도 대부분 맞다/틀리다로만 채점하다 보니, "모른다"고 답하면 무조건 감점이고 일단 그럴듯하게 찍으면 이득인 구조가 된다. 그래서 모델은 불확실할 때도 침묵하기보다 자신 있게 지어내도록 학습된다.

이 관점이 중요한 이유는, 환각을 줄이려면 "모른다"고 말하는 걸 벌하지 말고 오히려 인정하도록 만들어야 한다는 방향을 알려주기 때문이다. 완전히 없앨 수 있는 문제는 아니지만, 왜 생기는지를 알면 대응이 달라진다.

실제로 마주치는 환각과 대응

개발할 때 가장 흔한 건 없는 라이브러리나 함수를 쓰는 경우다. AI가 짜준 코드가 타입 에러 하나 없이 깔끔해 보이는데 막상 돌리면 "module not found"가 뜬다. 그 밖에도 있지도 않은 참고문헌을 만들어내는 인용 날조, 통계나 금액 같은 숫자를 그럴듯하게 틀리게 대는 경우, 그리고 여러 단계를 거치는 에이전트 작업에서 처음 지시와 조금씩 어긋나며 없는 중간 단계를 꾸며내는 경우가 자주 문제가 된다.

대응은 한 방에 끝내지 않고 여러 겹으로 쌓는다. RAG로 실제 문서를 찾아서 그 내용을 근거로 답하게 하면 지어낼 여지가 줄어든다. 시스템 프롬프트에 "확실하지 않으면 모른다고 말해"를 넣어 인정하는 답을 허용해 주고, 코드라면 실제로 실행해 보거나 테스트를 돌려 검증하고, 금액이나 규정처럼 틀리면 곤란한 정보는 사람이 최종 확인한다. Claude Code에서 AI가 준 코드를 바로 믿지 않고 test를 돌려 확인하는 것도 같은 맥락이다. 없앨 수는 없지만 발생 확률과 피해를 크게 줄이는 게 현실적인 목표다.

#신뢰성#오류
참고 자료
관련 영상
← AI Wiki에서 더 보기
updated at 2026-07-12