[ai] 환각 vs 환각

@codemaru · June 10, 2026 · 14 min read

#0

생성형 인공지능의 가장 큰 문제로 환각을 꼽는다. 말 그대로 생성형?! 이기에 뭐든지 던지기만 하면 생성을 해내는 것이다. 초창기 세종대왕 맥북 사건으로 gpt는 조롱의 대상이 되었다. 지금은 많이 괜찮아졌지만 여전히 환각은 존재한다. 그리고 llm을 실무에 도입할 때 가장 큰 어려움이 환각을 어떻게 없앨까 이기도 하다. 왜냐하면 실상 통제를 할 수 없기 때문이다. 그렇다고 코드로 강제하기도 어려운 게 결국 코드로 안 되는 부분에 llm을 도입하는 문제라 해결이 쉽지 않다.

그렇다면 인간은 환각이 없을까? 내가 보기엔 더하면 더했지, 절대 덜하지는 않다. 최근 사내 코딩 에이전트를 만들면서 겪게 된 몇 가지 사례를 살펴보면 이렇다.

#1

최근 가장 충격적이었던 한 사례는 생성형 인공지능이 수정한 코드에 있었다. 해킹툴 코드에서 시작된 사람이 제출한 pr을 보던 중 에이전트가 더 나은 방법이라고 코드를 다른 방법으로 새로 작성한 것이다. 사람이 작성한 코드는 표면적인 문제를 땜빵하는 형식이었고, 인공지능이 작성한 코드는 보다 근본적인 부분을 해결하는 코드였다. 여기서 내가 놀란 건 이건 표준적인 메커니즘이 아닌 우리 내부에서만 사용되는 방법인데 인공지능이 그 메커니즘을 다 이해해서 알맞게 구현했다는 점이었다. 실로 놀랍기 그지없었다.

아무튼 문제는 그다음에 있었다. 인공지능이 사람에게 수정한 코드의 테스트를 요청했고, 사람은 테스트를 거부했다. 이유인즉슨 그렇게 해서는 동작하지 않는다는 이유였다. 하지만 여기서도 인공지능은 인내심이 있었다. 나라면 버럭 화라도 냈을 상황이지만 전체 호출 체인이 어떻게 돌아가는지를 일일이 다 설명해 준 것이다. 하지만 사람도 굴하지 않았다. 결국 인공지능이 요청한 테스트를 엉뚱하게 수행해서 잘못된 결과를 얻게 되었고, 그걸로 인공지능에게 그렇게 수정한 건 동작하지 않는다고 뭐라고 한 것이다. 이쯤 되면 인공지능이 이기긴 어렵다. 네 수정하겠습니다, 라면서 삼천포로 빠지는 것이다.

여기서 이제 삼천포로 빠지기 시작하면 인공지능의 시작은 창대했지만 그 결말은 아주 시궁창인 코드가 된다.

#2

정반대 사례도 있다. 이건 사람이 인공지능에 너무 주눅 든 상태거나 인공지능의 결과물을 판단할 능력이 되지 않을 때 주로 발생한다. 요즘 에이전트는 대체로 문제 해결을 요청하는 경우 해당 문제를 직접적으로 해결하기 위한 가장 좁은 선택을 취하는 경우가 많다. 이건 카파시가 말한 것처럼 수정 범위를 좁게 잡는 것과 연관이 있어 보인다. 즉, 근원적인 부분에 문제가 있고, 그걸 알더라도 그 부분을 광범위하게 수정하기보다는 문제 표면만 작게 수정해서 해결하려는 경향이 강하다는 의미다. 몰라서 그렇다기보다는 시스템에 그런 식으로 가이드가 된 것으로 보여진다. 그리고 그게 많은 경우에 상당히 유용하다. 하지만 물론 그렇지 않을 때도 있는 법이다.

구조적 문제를 해결해야 하는 부분에 인공지능이 땜빵식으로 수정을 한 경우에는 사람이 적절하게 가이드를 해줘야 한다. 이 방식은 좋지 않은 것 같으니 다른 식으로 시도하라거나, 이렇게 한 이유가 뭐냐고 물어보고 근본적인 문제를 따져보거나 하는 식으로 말이다. 하지만 사람이 그걸 판단할 능력이 되지 않으면 어쨌든 문제는 해결되었고, 테스트는 통과했으니 머지를 요청한다. 하지만 이런 식의 나쁜 코드가 쌓이면 결국 엄청난 기술 부채 부메랑을 마주하게 될 것이 자명하다.

#3

물론 나도 예외는 아니다. 회사 제품의 아주 심장부 코드가 있었다. 인터페이스 부분인데 나는 주로 이 코드를 정보가 있는 곳에서, 정보가 없는 곳으로 정보를 전달하는 형식으로 사용했었다. 이걸 이해하고 사용한 인공지능도 대단한데, 내 생각의 흐름과는 정반대로 작성한 것이다. 걘 정보를 전달한 게 아니라, 정보가 없는 쪽에서 있는 쪽으로 채워달라고 요청하는 형태로 작성을 했다.

인간의 에고가 어디 가겠는가? 코드를 보면서 당장 내 생각과 다르게 전개되는 걸 보면서 몹시 호통쳤다. 왜 이따위로 잘못 작성했냐고 따져 물은 것이다. 인간의 에고가 이렇게 무섭다. 멀쩡하게 동작하는데도 코드를 읽으면서 내 생각과 다르면 일단 틀렸다고 생각하고 보는 것이다. 막 뭐라고 하자 인공지능은 당연하게 자기가 잘못 생각했다면서 내 생각의 틀에 맞춰서 코드를 고치겠다며 주섬주섬 수정을 시작했다. 그런데 웃긴 건 걔가 고치는 부분 부분을 보다가 깨달았다. 아 이건 잘못 작성한 게 아니라 생각을 완전히 다르게 한 거구나. 그제야 나의 환각을 알게 됐다. 완전 잘못 작성했다면 돌아갈 리도 없었을 텐데 테스트를 다 통과한 코드를 보면서 그런 어이없는 호통을 친 것이다.

결국 나처럼 수정하지 않아도 되니까 원래 코드로 롤백하라고 하고는 다시 코드를 찬찬히 살펴봤다. 진지하게 다시 보자 그 코드가 더 괜찮은 장점이 많았다. 왜냐하면 내가 생각하는 정보가 있는 곳에서 없는 곳으로 전달을 하는 구조는 일방적으로 전달을 하는 것이라서 의존성이 생긴다. 초기화 단계라 받는 쪽이 준비가 안 됐을 수도 있는 상황인데 막무가내로 정보를 던질 수도 있는 것이다. 인공지능이 작성한 코드는 반대로 필요할 때 요청하는 식이라 그런 문제가 없는 것이었다. 사과조차도 토큰 낭비니 하지는 않았지만 내심 사람이란 에고와 환각에서 자유롭기는 참 어렵다는 생각을 했다.

#4

이런 사례들을 겪다 보면, 나는 인간의 뇌 구조 자체도 근본적으로 생성형이 아닌가 싶은 생각이 든다. 왜냐하면 좌우뇌를 분리한 실험들을 보면 그런 직감이 들기 때문이다. 유명한 분리뇌 실험으로 닭발 실험이 있다. 좌우뇌가 분리된 환자에게 오른쪽 시야에는 닭발을, 왼쪽 시야에는 눈 덮인 풍경을 보여준다. 오른쪽 시야의 정보는 좌뇌가 처리하고, 왼쪽 시야의 정보는 우뇌가 처리한다. 그다음 여러 그림 중 관련 있는 것을 고르게 하면 오른손은 닭을, 왼손은 삽을 고른다. 좌뇌는 닭발 정보를 처리했기 때문에 닭을 고른 것이고, 우뇌는 눈밭 정보를 처리했기 때문에 삽을 고른 것이다. 하지만 여기서 환자에게 왜 삽을 골랐냐고 질문하면, 언어를 담당하는 좌뇌의 지독한 환각이 시작된다. 좌뇌는 우뇌가 눈밭을 봤다는 사실을 모르기 때문에 삽을 고른 진짜 이유를 알 수 없다. 그런데도 모른다고 하지 않고, "닭장을 치우려면 삽이 필요하니까요" 같은 그럴듯한 설명을 만들어낸다.

결국 여기서 우리가 알 수 있는 건 좌뇌는 llm 그잡채가 아닌가 싶다는 점이다. 그러니 인공지능의 환각으로 너무 뭐라 하지는 말자. 내가 봤을 땐 인간의 환각도 도긴개긴이다.

인간 환각의 화룡점정은 이런 경우가 아닌가 싶다. 고객 A가 문제를 질의한다. B가 내부에 그걸 토스한다. C가 틀린 답을 말한다. D가 칭찬한다. B가 그걸 보고한다. A는 별로 중요하지 않은 문제라 그러려니 넘긴다. 이런 일들은 부지기수로 발생한다. B, C, D가 즐거워하는데 굳이 산통을 깰 필요도 없기에 중요하지 않은 문제는 그냥 넘어가는 편이 정신 건강과 삶에 이롭다. 인간의 환각 또한 늘상 있고, 대체로는 여러 명이 모여도 환각이 있는지조차도 모르는 경우가 다반사다. 인공지능의 환각 또한 알아차리지 못하는 경우도 부지기수다. 하지만 인간의 위대한 에고는 어쩌다 알아차린 인공지능의 환각 하나를 대서특필하는 게 일상다반사다.

2026년 6월 기준, 코딩 한정, 내 생각에 인공지능의 환각보다 인간의 환각이 훨씬 더 큰 문제가 되는 지점이 되지 않았나 싶다. 아무튼 요는 환각에 있어서는 인간이나 인공지능이나 다 마찬가지라는 점이다. 테스형의 일침처럼 우리는 자신을 모른다. 그리고 뭘 모르는지도 모른다. 실상은 뭘 모르는지 안다는 것, 그게 제일 어려운 일인지도 모르겠다.

덧) 인간의 환각 문제에 진지한 관심이 있는 독자라면 조던 엘렌버그의 "틀리지 않는 법"을 일독하길 추천한다.

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중