학습 자료

왜 그럴듯한 거짓말을 하나 — 환각과 컨텍스트 윈도우


Article

14강 끝에서 파인튜닝이 새 지식을 넣어주는 마법이 아니라고 했다. 학습 데이터에 없던 정보는 모델이 저절로 알 수 없다는 뜻이었다. 그런데 실제로 써보면 더 이상한 일이 벌어진다. 모델이 모른다고 하지 않고, 모르는 걸 아는 것처럼 자신 있게 답한다. 이게 이번 강의의 첫 번째 주제, **환각(hallucination)**이다.

두 번째 주제는 따로 떨어진 이야기가 아니다. 모델이 한 번에 붙잡고 볼 수 있는 글의 길이 — 컨텍스트 윈도우 — 가 왜 유한한지, 그 한계가 왜 이 편 후반부(17강부터)를 통째로 끌고 가는 문제인지를 본다.

환각은 버그가 아니라 작동 방식의 그림자다

12강에서 LLM 이 하는 일을 정리했다. 다음에 올 토큰을 확률로 고르는 것, 그게 전부였다. 이 사실 하나로 환각이 왜 생기는지 대부분 설명된다.

환각이 생기는 자리
  1. 질문을 받는다"OO 회사의 창립 연도는?" 같은, 답이 확실한 질문
  2. 학습 데이터에 답이 있었는가?있었다면 그 사실 쪽으로 확률이 쏠려 있다
  3. 없거나 흐릿해도, 그럴듯한 다음 토큰은 고를 수 있다"모르겠다"보다 "1998년입니다"가 문법적으로 더 자연스러운 다음 토큰일 수 있다
  4. 확률상 그럴듯한 문장이 나온다 — 사실인지는 별개다모델에게 '그럴듯함'과 '사실'은 애초에 같은 축이 아니다
모델은 사실 검증기가 아니라 다음 토큰 예측기다. 이 둘을 헷갈리는 순간 환각이 신비한 오류처럼 보인다.

모델 안에는 "이건 확인된 사실, 이건 추측"을 가르는 스위치가 따로 없다. 확신에 찬 어조로 답하는 것과, 그 답이 맞는 것은 모델 입장에서 전혀 다른 층위의 문제다. 문장을 그럴듯하게 잇는 능력은 뛰어나지만, 그 문장이 참인지 검증하는 절차는 애초에 이 구조 안에 없다.

왜 특히 자기가 모르는 걸 모른다고 못 하나

사람은 "그건 잘 모르겠는데요"라고 쉽게 말한다. 모델은 왜 이게 잘 안 될까. 이유는 학습 데이터 자체의 성격에 있다.

인터넷 글 대부분은 확신에 찬 문장으로 쓰여 있다. "잘 모르지만 대충 이럴 것 같다"고 얼버무리며 끝나는 글은 드물다. 사전학습(14강)이 이런 글을 수없이 흡수했으니, 모델이 자연스럽게 익히는 어조도 확신에 찬 쪽으로 쏠린다. "모른다"고 답하는 습관은 저절로 생기지 않고, 파인튜닝 단계에서 따로 가르쳐야 한다.

확신과 정확함은 다른 축이다

확신에 찬 어조

모델이 잘하는 것

  • 문법적으로 매끄럽고 자연스럽다
  • 학습 데이터의 흔한 문체를 그대로 반영한다
  • 질문에 곧바로 답하는 형태를 취한다

사실적으로 정확함

별도로 확인해야 하는 것

  • 학습 데이터에 그 정보가 실제로 있었는지에 달렸다
  • 근거 문서를 붙여주면 크게 개선된다 (17강)
  • 모델 스스로는 이 둘을 구분해 표시하지 않는다
확신에 찬 문장을 보고 정확하다고 착각하는 게 환각을 위험하게 만드는 진짜 이유다.

두 번째 주제 — 모델이 한 번에 보는 글의 길이는 유한하다

관점을 바꿔본다. 환각과 별개로, 모델에게는 또 다른 근본적인 한계가 있다. 한 번의 대화에서 모델이 동시에 붙잡고 볼 수 있는 토큰(1강·12강에서 본 그 단위)의 수가 정해져 있다. 이걸 **컨텍스트 윈도우(context window)**라 부른다.

지금 이 순간 모델이 "보는" 것
  • 컨텍스트 윈도우이번 대화에서 모델이 한 번에 참고할 수 있는 전체 토큰
    • 시스템 지시문"너는 친절한 상담원이다" 같은 설정
    • 지금까지의 대화 기록앞서 주고받은 질문과 답 전부
    • 지금 이 질문방금 사용자가 입력한 문장

이 셋을 합친 토큰 수가 모델마다 정해진 한도를 넘으면, 가장 오래된 대화부터 창 밖으로 밀려나 모델이 더는 보지 못한다. 사람으로 치면 아주 긴 대화 초반에 뭘 물었는지 까먹는 것과 비슷하다. 실제로는 기억을 "잊는" 게 아니라, 애초에 그 부분이 이번 계산에 입력으로 들어가지 못하는 것이다.

컨텍스트 윈도우가 좁으면 벌어지는 일
상황결과
긴 대화를 계속 이어간다초반 내용이 창 밖으로 밀려나 모델이 더는 참고하지 못한다
아주 긴 문서를 통째로 붙여넣는다문서 전체가 한도를 넘으면 뒷부분이 잘리거나 아예 안 들어간다
회사 내부 문서, 매뉴얼 전체를 물어본다애초에 그 문서가 모델 안에 들어 있지 않으니 창에 넣어줘야만 답할 수 있다
마지막 줄이 다음 강의부터 이어질 문제다. 모델은 학습 안 된 문서는 원래 모르고, 컨텍스트 윈도우는 한 번에 넣어줄 수 있는 양마저 제한한다.

컨텍스트 윈도우가 클수록 한 번에 더 많은 대화·문서를 참고할 수 있어 유리하다. 다만 정확한 크기는 모델과 버전마다 계속 바뀌므로 여기서 숫자를 못 박지는 않는다. 채용공고나 모델 소개 페이지에서 "컨텍스트 길이"라는 말이 나오면 바로 이 창의 크기를 가리킨다는 것만 기억하면 된다.

정리하면

환각은 모델이 '그럴듯함'과 '사실'을 구분하지 않아서 생기고, 컨텍스트 윈도우는 모델이 한 번에 참고할 수 있는 글의 양이 유한해서 생기는 한계다. 서로 다른 문제 같지만, 둘 다 "모델이 자기 바깥의 정보를 확실히 붙잡지 못한다"는 같은 뿌리에서 나온다.

다시 짚어보기
  1. 01

    환각은 다음 토큰 확률이 만드는 부산물이다

    모델에게 확신에 찬 어조와 사실적 정확함은 같은 축이 아니다.

  2. 02

    "모른다"는 답은 저절로 생기지 않는다

    학습 데이터 대부분이 확신에 찬 문체라, 얼버무리는 습관은 따로 가르쳐야 한다.

  3. 03

    컨텍스트 윈도우는 모델이 한 번에 보는 토큰의 한도다

    시스템 지시문 · 대화 기록 · 지금 질문을 합친 크기가 한도를 넘으면 오래된 것부터 밀려난다.

  4. 04

    둘 다 "모델은 자기 바깥을 모른다"는 문제로 이어진다

    17강부터 이 문제를 정면으로 다룬다 — 검색해서 필요한 조각만 붙여주는 방식이다.

지금까지 본 두 한계 — 학습 데이터에 없는 건 모르고, 한 번에 볼 수 있는 양도 제한된다 — 를 어떻게 다루는지가 프롬프트를 쓰는 방식에도 그대로 영향을 준다. 다음 강의에서는 같은 모델에게 어떻게 말을 거느냐에 따라 답의 질이 왜 이렇게 달라지는지를 본다.

왜 그럴듯한 거짓말을 하나 — 환각과 컨텍스트 윈도우 — 디코드랩(DCODELAB)