인공지능 이야기

왜 인공지능은 허상(hallucination)을 만들어낼까?

빈이름 2025. 1. 16. 15:47

인공지능을 활용하는 사람들이 많아지면서 인공지능의 문제점에 대한 인식도 커지고 있습니다. 그 중 하나는 바로 인공지능이 만들어내는 hallucination(허상, 잘못된 정보)입니다.

 

Hallucination이란 AI가 거짓 정보를 진짜인 것처럼 그럴 듯하게 지어내어 말하는 현상을 말합니다. 오직 객관적인 팩트와 데이터에 의거해서 말할 것만 같은 인공지능이 왜 이런 거짓말을 하게 되는 걸까요?

 

이번 글에서는 인공지능, 특히 챗봇이 어떤 식으로 학습되는지 살펴보면서 왜 인공지능이 허상을 만들어내게 되는지에 대해서 알아 보도록 하겠습니다.

인공지능이 학습하는 방법

지금부터 챗봇 인공지능이 학습되는 단계를 하나씩 살펴보면서 각 단계에서 어떤 문제가 발생할 수 있는지 알아보겠습니다.

데이터 수집

인공지능 모델에 있어 가장 중요한 것은 데이터입니다. 모델 구조가 아무리 뛰어나고 아무리 많이 학습을 하더라도 결국 학습 데이터에 존재하지 않는 정보를 모델이 학습할 수는 없으니까요. 그런만큼 모델이 만들어내는 오류들 역시 대부분 데이터에서 비롯되는 경우가 많습니다. 데이터가 편향되어 있거나 잘못된 정보를 담고 있다면 모델도 똑같은 실수를 범하게 되는 것이죠.

 

그럼 ChatGPT나 BARD와 같은 챗봇들은 어디서 데이터를 수집해서 학습할까요? 그리고 수집한 데이터들에 어떤 문제가 발생할 수 있을까요?

 

구글 BARD의 모체가 되는 거대 언어 모델 PaLM은 인터넷에서 아래와 같은 데이터들을 수집했다고 합니다.

  • 소셜 미디어 대화 내용
  • 웹 페이지 문서
  • 인터넷 책
  • 깃허브
  • 위키피디아 문서
  • 뉴스

이 중에 어떤 데이터에서 편향이나 잘못된 정보가 담겨 있을 수 있을까요?

 

소셜 미디어 대화 내용은 사람들이 직접 대화를 주고 받은 내용인만큼 가장 잘못된 정보나 편향이 담기기 쉬울 것으로 생각됩니다. 웹 페이지 문서의 경우에도 일반인들이 마음대로 사용할 수 있는 공간인만큼 편향되고 잘못된 정보가 많을 것으로 생각됩니다.

 

'그러면 이 데이터들을 안 쓰면 되지 않나요?' 라고 생각할 수 있습니다. 개발자들도 이런 데이터보다 더 안전하고 신뢰성 높은 데이터로만 학습하고 싶지만 성능 좋은 챗봇을 만들기 위해선 엄청난 양의 데이터가 필요합니다. PaLM 모델의 학습에 사용된 단어의 수는 7800억 개입니다. 이 중에서 소셜 미디어 대화내용과 웹 페이지 문서가 차지하는 비율은 77%라고 합니다. 현재로썬 위키피디아나 뉴스와 같은 정확한 데이터만 쓰고 싶어도 그 수가 너무 적어 거대 언어 모델을 학습하는 것이 불가능합니다.

 

개발자들도 이런 데이터들을 그대로 사용하는 것은 위험하다는 것을 알기 때문에 최대한 필터링을 수행합니다. 사람이 모든 문서를 보고 일일이 필터링 하면 좋겠지만 아까 말했듯 7800억 개의 단어를 봐야 하기 때문에 (1,000명의 사람이 모여도 인당 약 8억개의 단어를 봐야 합니다...) 사실상 불가능합니다. 그래서 컴퓨터를 이용해 자동으로 필터링을 하죠. 하지만 이렇게 필터링을 해도 모든 잘못된 데이터를 정확히 필터링하는 것은 불가능하기 때문에 문제는 여전히 남아 있는 상태입니다. 물론 개발자들은 계속해서 더 정교한 필터링 시스템을 구축하고 더 안전한 데이터셋을 필터링하기 위해 계속해서 노력하는 중입니다.

인공지능 모델이 학습하는 데이터는 인터넷에서 많이 수집됩니다. 따라서 데이터에 편향이나 오류가 존재합니다. 개발자들은 이런 요소들을 최대한 줄이기 위해 필터링 개발에 힘 쓰고 있습니다.

데이터 처리

이렇게 수집한 데이터를 어떻게 모델에 학습시킬까요? 컴퓨터는 모든 데이터를 숫자로 처리한다는 것은 알고 계실 겁니다. 따라서 저희가 사용하는 글자도 컴퓨터가 이해할 수 있는 숫자로 바꿔줘야 합니다. 이를 '토큰화' 한다고 합니다.

데이터 처리 단계에선 단어들을 숫자로 바꿔주는 토큰화를 수행합니다.

이런 토큰화 역시 사람이 직접 나눠주는 것이 아니라 규칙에 기반해서 컴퓨터를 이용해 자동으로 토큰화를 수행합니다. 자주 사용되는 단어일수록 잘 묶이고 자주 사용되지 않는 단어일수록 더 작은 단위의 단어로 나눠지게 되죠. 예를 들어 '눈사람'과 같이 '눈'과 '사람'으로 나눠질 수 있는 단어도 자주 사용되는 단어라면 '눈사람' 이라는 단어로 묶여서 토큰화 됩니다.

 

여기에선 어떤 문제들이 발생할 수 있을까요?

 

우선 자주 사용되지 않는 단어라면 올바르게 토큰화되지 않는 문제가 있습니다. 예를 들어 '미토콘드리아'와 같은 전문적인 단어는 데이터에 자주 등장하지 않는 단어겠죠? 그러면 '미토콘드리아'라는 단어 토큰이 존재하지 않아 '미/토/콘드/리아'와 같이 단어가 나눠질 수 있습니다. 이러면 컴퓨터가 이해할 때 문제가 발생할 수 있겠죠?

 

또, 동음이의어를 구분하지 못한다는 문제점도 있습니다. 토큰화를 하게 되면 하늘에서 내리는 '눈'과 사람의 '눈' 모두 같은 단어 토큰을 사용합니다. '눈'은 자주 사용되는 단어이기 때문에 모델이 학습을 통해 구분할 수 있게 되지만 자주 사용되지 않는 어려운 단어라면 컴퓨터가 구분하기 어려울 수도 있습니다.

 

다행히 위의 문제점들은 모델 학습을 통해 어느정도 극복이 가능합니다. 하지만 자주 사용되지 않는 단어는 그만큼 학습이 덜 되기 때문에 모델이 그 단어를 완벽히 이해하기 힘들 수 있습니다.

단어를 컴퓨터가 이해할 수 있도록 바꿔주는 '토큰화' 과정에서 자주 사용되지 않는 어려운 단어들은 컴퓨터에게 그 의미가 제대로 전달되지 않을 수도 있습니다.

모델 학습

챗봇이 처음부터 사람의 질문에 대답하는 식으로 학습되진 않습니다. 모델의 성능을 끌어올리기 위해선 방대한 양의 데이터 (PaLM과 같이 7800억 개 정도의 단어)를 사용해야 하지만 그 정도 양질의 질문-답변 쌍으로 구성된 데이터가 충분하지 않기 때문입니다. 앞서 살펴본 PaLM의 학습에 사용 되었다는 단어도 대부분 인터넷에서 수집한 데이터라는 것을 알 수 있습니다.

 

그러면 모델을 어떻게 학습할까요? 언어 모델은 보통 "사전 학습 - 미세 조정" 2단계에 걸쳐 학습됩니다. "사전 학습" 단계에서는 대규모 텍스트를 이용해 모델이 언어의 맥락과 패턴을 학습하고, "미세 조정" 단계에서는 모델이 원하는 목적에 맞게 작동하도록 조정하는 학습을 수행합니다.

 

사전 학습 단계에서는 문장의 앞부분을 보고 뒷 부분을 생성해내는 식으로 학습합니다. 예를 들면, 아래와 같은 문장이 주어졌을 때 그 뒤의 글자들을 그대로 예측하는 방식으로 모델이 학습되는 것이죠.

  • 원본 문장 : "미국의 첫 대통령은 조지 워싱턴으로 ... "
  • 입력 : "미국의 첫 대통령은"
  • 출력 : "조지 워싱턴으로 ... "

놀랍게도 모델이 질문에 대한 답변을 하도록 명시적으로 학습되지 않았음에도 불구하고 질문에 답변을 할 수 있는 능력이 생긴다고 합니다. GPT-1 모델 연구 논문에 의하면, 위와 같은 사전학습만을 수행했음에도 각종 언어 관련 task들(문장 감정 분류, 질문과 답변, 문장 문법 판별 등)의 성능이 좋아지는 것을 확인했다고 합니다. (링크)

사전학습을 수행할수록(x축) 각종 언어 task들에 대한 점수(y축)들이 높아지는 것을 볼 수 있습니다.

이 연구를 시작으로 데이터의 양을 증가시키고 모델의 크기를 증가시키면서 점점 언어 모델의 성능이 좋아졌고, 지금의 chatGPT와 같은 모델들이 탄생할 수 있게 되었습니다.

 

문제는 "성능이 왜 좋아지는가?"에 대한 정확한 답을 할 수가 없다는 것입니다. 이에 대해 연구자들이 "모델이 대량의 텍스트에서 자연스럽게 문맥과 패턴을 학습한 결과"라는 가설을 제시하기도 하고, 모델 내부의 메커니즘의 시각화를 통해 이에 대한 설명을 시도하기도 했지만 아직까지도 확실하게 이 비밀을 밝히진 못했습니다.

 

그렇다면 사전학습을 왜 하는 걸까요? 목적에 부합하는 대량의 데이터를 구하는 것이 쉽지 않기 때문입니다. 인터넷에 굉장히 많은 텍스트 데이터들이 있지만 그 중 채팅 형식으로 작성되어 있는 텍스트는 극히 일부일 것입니다. 하지만 이 적은 양의 채팅 데이터로는 저희가 보는 chatGPT와 같은 성능의 챗봇을 만들 수 없습니다. 따라서 채팅 형식이 아닌 다른 데이터들도 학습에 활용할 방법을 찾다가 이런 사전학습 방식을 찾게 된 것입니다. 그래서 현재 챗봇들은 대규모 데이터셋을 이용해 사전학습을 한 뒤, 채팅 형식의 데이터를 이용해 미세조정을 하여 챗봇을 학습하는 식으로 설계됩니다.

 

또 다른 문제점은 모델의 평가지표입니다. 현재 언어 모델에 가장 많이 사용되는 지표는 모델이 예측한 단어 토큰과 실제 문장의 단어 토큰 사이의 정확도를 비교하는 방식입니다. 하지만 이 정확도만으로는 모델이 정확한 정보를 생성했는지, 부적절한 말을 했는지를 평가하지 못합니다. 이런 '사실성'이나 '적절성'을 평가 지표에 추가하지 못하는 이유는 이들을 자동화하기 어렵기 때문입니다.

 

chatGPT나 BARD 모두 챗봇이 허상을 만들어내지 않도록 하기 위해 사람이 직접 챗봇이 만들어낸 텍스트를 평가하도록 했습니다. 그리고 이를 자동화하기 위해 사람이 직접 평가한 텍스트들을 모델이 다시 학습하여 모델이 스스로 자신의 텍스트를 검열할 수 있도록 합니다.

 

또, perplexity나 최신 버전의 chatGPT는 모델이 질문에 답변할 때 어떤 글을 참고했는지 출처를 표시하는 기능을 추가하여 모델의 답변 내용의 신뢰성을 높이는 방식을 사용하고 있습니다.

챗봇은 사람의 평가를 학습해 스스로 텍스트를 평가하기도 하고, 직접 웹문서를 탐색해서 답변의 출처를 제공하는 등의 방법으로 신뢰도를 높이고 있습니다.

언어 모델은 사전학습을 통해 언어의 패턴과 맥락을 학습하게 되지만 '모델이 왜 언어를 이해하게 되는가'에 대한 이유를 정확히 파악하기가 어렵습니다. 또, 이 과정에서 사용되는 정확도 지표 만으로는 모델의 허상 문제를 방지할 수 없습니다.
그래서 보다 설명 가능한 모델을 만듦과 동시에 텍스트의 '사실성'을 평가하기 위해 미세 조정 단계를 거칩니다. 사람이 직접 텍스트를 평가하고 그 데이터를 모델이 학습하여, 스스로 텍스트를 평가할 수 있도록 합니다. 또, 모델이 답변의 출처를 같이 출력하도록 학습하여 답변의 신뢰성을 높일 수 있도록 하기도 합니다.

모델 사용

사용자가 모델을 실사용하는 단계에서도 모델이 허상을 만들어내도록 하는 문제가 발생할 수 있습니다. 이 단계에서 발생 가능한 문제와 해결 방법을 알아보겠습니다.

  1. 사용자가 고의적으로 거짓말을 하거나 부적절한 말을 하도록 유도함.

    실제로 마이크로소프트의 '테이'라는 트위터 챗봇이나 한국의 '이루다'라는 챗봇들은 사람들이 부적절한 말을 유도하는 방법이 공유되면서 사회적인 문제가 발생해 서비스를 중단하는 사건이 벌어진 적이 있습니다. chatGPT와 같은 챗봇도 틀린 정보를 말하도록 다그치거나 화를 낸다면 잘못된 답변을 만들어낼 수 있습니다.

    >> 개발자들은 지속적인 모니터링을 통해 모델이 잘못된 답변을 하게 되는 사례를 수집한 뒤, 추가 학습을 통해 이런 유도에 말리지 않도록 해야 합니다. 또 서비스 시작 전에 이런 공격을 막을 수 있도록 직접 모델이 잘못된 말을 하도록 유도해보고 이를 수정한 뒤에 서비스를 개시하는 방법도 많이 사용합니다.

  2. 사용자의 질문이 자세하지 않거나 너무 추상적임.

    질문이 명확하지 않을 경우 모델이 질문을 잘못 이해할 수 있습니다. 그러면 답변도 제대로 나오지 않겠죠. 또, 인공지능은 사람과 달리 오직 텍스트의 패턴에 기반해서 학습하기 때문에 사람과 달리 기본적인 상식이나 맥락을 알지 못할 수도 있습니다. 그래서 당연하다고 생각해 특정 정보를 생략하고 질문을 한다면 모델이 잘못 대답할 수도 있습니다.

    >> 최대한 명확하고 자세하게 질문하여 모델이 원하는 답변을 정확히 할 수 있도록 해야 합니다.

  3. 전문적인 내용에 대한 지식이 부족해 답변을 잘 못함.

    전문성이 높은 내용일 수록 모델이 틀리게 답변할 가능성이 높습니다. chatGPT와 같이 범용성이 높은 모델일수록 전문적인 내용에 약한 모습을 보일 수 있습니다. 이는 전문적인 내용을 담고 있는 데이터가 다른 데이터에 비해 양이 부족해 학습이 덜 되어 발생하는 문제입니다.

    >> 전문적인 내용은 해당 분야에 특화된 챗봇을 사용하는 것이 좋습니다. 가장 좋은 것은 본인이 직접 해당 정보가 정확한지 한 번 더 확인하는 절차를 거쳐야 합니다. 또는 사용자가 직접 정보들을 찾은 뒤 해당 정보들을 정리하거나 요약해 달라고 하는 식으로 사용하는 것이 더 좋습니다.
모델의 사용 단계에서도 사용자가 어떻게 모델을 사용하냐에 따라 모델이 잘못된 대답을 내놓을 수도 있습니다. 사용자는 모델이 부적절한 말을 하도록 유도하지 않아야 하고, 질문은 최대한 자세하고 명확하게 하는 것이 좋습니다. 또 너무 전문적인 내용은 틀리기 쉽기 때문에 본인이 직접 내용을 한번 더 검토하는 것이 좋습니다.

 

글을 마치며

이렇게 모델이 허상을 만들어내는 이유를 챗봇 AI가 학습하는 과정과 함께 알아보았습니다. 저는 인공지능이 사람이 만들어낸 데이터를 사용해 학습하는 이상 저희가 상상하던 완벽하게 객관적이고 정확한 정보만을 말하는 것은 어렵다고 생각합니다. 그래서 현재 이런 챗봇 AI가 어떤 식으로 학습되는지 대강 살펴봤습니다.

 

하지만 여전히 인공지능이 사람보다 훨씬 많은 정보를 더 빠르게 처리할 수 있는 것은 사실입니다. 그렇기 때문에 인공지능을 활용하되, 완전히 인공지능에만 의존하는 것이 아니라 저희도 계속 공부를 해야 하며, 항상 인공지능이 생성한 답변 내용을 직접 검토할 수 있어야 합니다. 이런 챗봇 AI를 활용하려는 분들에게 도움이 되었으면 좋겠습니다. 감사합니다.