가짜 정보를 줄이는 프롬프팅

August 1, 2024
Tech

부제: Hallucination 방지 전략

출처: Dall-E 3 (https://openai.com/index/dall-e-3/)

최근 몇 개월 동안, ChatGPT와 같은 대형 언어 모델(LLM)의 발전은 우리의 일상과 업무에 많은 변화를 가져왔습니다. 이러한 모델들은 복잡한 문제 해결, 정보 검색, 창의적인 글쓰기 등 다양한 분야에서 유용하게 활용되고 있습니다. 그러나 이러한 기술을 사용할 때 맞닥뜨리는 가장 큰 문제 중 하나는 바로 '환각(hallucination)'입니다. 환각이란 LLM이 사실과 다른 정보를 생성하거나, 근거 없는 내용을 마치 사실인 것처럼 말하는 현상을 의미합니다. 이는 사용자에게 큰 혼란을 줄 수 있으며, 특히 중요한 의사결정을 할 때 큰 리스크가 될 수 있습니다.

이 문제는 쉽게 알아챌 수 있는 경우도 있지만, 때로는 진위를 파악하기 어려운 경우도 많아 더 큰 문제가 됩니다. 예를 들어, 역사적인 사실이나 과학적 데이터와 같은 정확한 정보가 필요한 상황에서는 LLM의 환각이 심각한 오류를 초래할 수 있습니다. 환각 문제는 사용자에게 잘못된 정보를 제공하여 오해를 불러일으킬 수 있고, 이는 신뢰도 저하로 이어질 수 있습니다. 이러한 환각 문제를 완전히 없애는 것은 기술적으로 어려운 과제입니다. LLM의 구조적 특성상, 모든 문장을 완벽하게 사실에 기반하여 생성하는 것은 현재로서는 불가능에 가깝습니다.

하지만 프롬프트를 잘 작성하는 것만으로도 환각 발생 빈도를 크게 줄일 수 있습니다. 이번 블로그에서는 효과적인 프롬프트 작성법을 통해 LLM의 환각 문제를 어떻게 줄일 수 있는지에 대해 살펴보겠습니다.

환각?

환각은 LLM이 사실과 다른 정보를 생성하거나, 근거 없는 내용을 마치 사실인 것처럼 제시하는 현상을 의미합니다. 이러한 환각은 크게 두 가지 유형으로 나눌 수 있습니다: 사실성 환각(factuality hallucination)과 충실성 환각(faithfulness hallucination)입니다.

사실성 환각

사실성 환각은 모델이 생성한 내용이 실제 세계의 사실과 일치하지 않는 경우를 말합니다.

  • 사실 불일치(Factual Inconsistency): 모델의 출력이 실제 정보와 모순되는 경우입니다. 예를 들어, "최초로 달에 착륙한 사람"에 대한 질문에 모델이 "유리 가가린"이라고 잘못 답변하는 경우입니다.
  • 사실 날조(Factual Fabrication): 예를 들어, 유니콘의 기원에 대한 이야기를 모델이 역사적 사실처럼 만들어내는 경우입니다. 이는 모델이 상상력을 동원하여 근거 없는 정보를 생성하는 경우입니다.

충실성 환각

충실성 환각은 모델이 사용자 지시나 문맥과 일치하지 않는 내용을 생성하는 경우를 말하며, 세 가지 하위 유형으로 나뉩니다:

  • 지시 불일치(Instruction Inconsistency): 모델의 출력이 사용자의 지시와 일치하지 않는 경우입니다. 예를 들어, 사용자가 번역을 요청했지만 모델이 질문에 대한 답변을 생성하는 경우입니다. 이는 모델이 사용자의 의도를 제대로 이해하지 못했을 때 발생합니다.
  • 문맥 불일치(Context Inconsistency): 모델의 출력이 사용자가 제공한 문맥 정보와 일치하지 않는 경우입니다. 예를 들어, 나일강의 출처가 중앙 아프리카의 대호수 지역이라고 언급했음에도 모델이 이를 반박하는 경우입니다. 이는 모델이 문맥을 제대로 반영하지 못한 경우입니다.
  • 논리 불일치(Logical Inconsistency): 모델의 출력이 내부적으로 논리적 모순을 포함하는 경우입니다. 예를 들어, 수학적 추론 과정에서 올바른 단계들을 밟았지만 최종 답이 잘못된 경우입니다. 이는 모델의 논리적 사고 과정에서 오류가 발생한 경우입니다.

환각 문제 완화하기

이제 환각이 무엇인지 알았으니, 이를 해결할 방법에 대해 살펴보겠습니다. LLM의 환각 문제를 완전히 없애는 것은 어렵지만, 효과적인 프롬프트 작성법을 통해 환각 발생 빈도를 크게 줄일 수 있습니다. 특히, 사용자가 프롬프트를 작성할 때 주의해야 할 몇 가지 중요한 점들이 있습니다. 이를 통해 LLM의 응답의 정확성과 신뢰성을 높일 수 있습니다.

1. 모호할 수 있는 부분을 더 명확하게

프롬프트 작성 시, 모호하거나 여러 가지 해석이 가능한 부분을 명확하게 지정하는 것이 중요합니다. 구체적인 질문을 하고, 필요한 정보를 명확히 지시하면 모델이 올바른 정보를 제공하는 데 도움이 됩니다. 예를 들어, "좋은 책을 추천해줘"보다는 "최근 5년 내 출간된 베스트셀러 소설을 추천해줘"와 같이 구체적인 요청을 하는 것이 좋습니다.

2. 항상 이유를 물어보기

모델에게 정보를 제공할 때 이유를 물어보는 것도 효과적입니다. 모델이 응답의 근거를 제시하도록 하면, 잘못된 정보가 포함될 가능성을 줄일 수 있습니다. 이는 또한 모델이 왜 그렇게 생각했는지 파악할 수 있는 단서가 되기 때문에 또한 유용합니다.

  • 예시: "각 주장에 대한 출처를 제공해주세요."
  • 예시: "응답하기 전에 <thinking> 태그를 사용하여 주장이 될 수 있는 부분에 대한 근거를 정리한 후 답변해주세요."

3. 문제를 잘게 쪼개기

복잡한 문제는 작은 단위로 쪼개어 모델에게 질문하는 것이 좋습니다. 이를 통해 모델이 각 부분에 대해 더 정확한 정보를 제공할 수 있습니다. 예를 들어, "한국의 경제 상황을 설명해줘"보다는 "한국의 최근 GDP 성장률과 주요 산업에 대해 설명해줘"와 같이 세분화된 질문을 하는 것이 좋습니다.

4. Chain-of-thought 사용하기

Chain-of-thought는 모델이 생각의 과정을 단계별로 설명하도록 하는 기법입니다. 이를 통해 모델의 추론 과정을 명확히 하고, 오류를 줄일 수 있습니다. 조금 더 자세한 설명은 이전 블로그 글을 참조해주세요!

5. 질문을 구조화하기

구조화된 형식을 사용하여 질문하면 모델이 더 명확하게 이해하고 응답할 수 있습니다. JSON 포맷이나 XML 포맷을 사용하여 질문을 구조화하는 것도 좋은 방법입니다. LLM 모델마다 선호하는 데이터 형식이 다른 경우도 있는데, 예를 들어 Claude.ai는 XML 포맷을 선호합니다.

6. 영어로 쓰기

사소해보일수도 있지만 경험적으로는 이것 또한 꽤 유용했습니다. 프롬프트를 영어로 작성하면 모델이 더 잘 이해하고 응답할 수 있습니다. 영문으로 작성해야 한다니 조금 답답함을 느끼실 분도 계시겠지만, 한글 초안을 쓴 뒤 가공해달라고 하거나, Claude.ai의 prompt generator와 같은 기능을 이용하여 영어를 직접 입력하지 않고도 쉽게 영문 프롬프트를 작성할 수 있습니다.

또 다른 자잘한 테크닉이긴 하지만, 강조하고 싶은 부분을 대문자로 쓰는 방법도 효과적입니다.

결론

LLM의 환각 문제를 완전히 없앨 수 있다는 것은 거짓말입니다 (심지어 사람도 여러가지 요인으로 인해 환각 문제를 발생시킵니다). 그러나 다양한 노력을 통해 이러한 환각 문제를 최소화하는 것은 가능합니다. 이번 시간에는 프롬프트 작성이 LLM의 환각 현상을 어떻게 줄일 수 있는지 탐구해봤습니다.

환각 문제를 완전히 없앨 수는 없지만, 프롬프트 작성법을 개선함으로써 이를 최소화할 수 있습니다. 이를 통해 LLM을 더욱 신뢰할 수 있고 유용한 도구로 활용할 수 있으며, 중요한 의사결정 과정에서 더 나은 지원을 받을 수 있습니다. 앞으로도 이러한 기법들을 지속적으로 연구하고 적용함으로써, LLM의 활용도를 높이고, 우리의 일상과 업무에서 그 잠재력을 최대한 활용하기를 기대합니다.

참고문헌

  1. Tonmoy, S. M. T., Zaman, S. M. M., Jain, V., Rani, A., Rawte, V., Chadha, A., & Das, A. (2024). A comprehensive survey of hallucination mitigation techniques in large language models. arXiv preprint arXiv:2401.01313.
  2. Huang, L., Yu, W., Ma, W., Zhong, W., Feng, Z., Wang, H., ... & Liu, T. (2023). A survey on hallucination in large language models: Principles, taxonomy, challenges, and open questions. arXiv preprint arXiv:2311.05232.
  3. Lei, D., Li, Y., Wang, M., Yun, V., Ching, E., & Kamal, E. (2023). Chain of natural language inference for reducing large language model ungrounded hallucinations. arXiv preprint arXiv:2310.03951.
  4. OpenAI. (n.d.). Prompt Engineering. Link

Interested in solving your
problems with Enhans?

  • 01.
    Tell us about yourself
  • 02.
    Which company or organization do you belong to?
  • 03.
    Which company or organization do you belong to?
Next
Next

Please see our Privacy Policy regarding how we will handle this information.

Thank you for your interest
in solving your problems with Enhans!
We'll contact you shortly!
Oops! Something went wrong while submitting the form.