정확한 출력 생성

기초 모델은 때때로 사실과 다른 결과를 생성하기도 합니다. 프로젝트에서 사실의 정확성이 중요하다면, 이러한 모델이 때때로 사실을 잘못 파악하는 방법과 이유, 생성된 결과물을 정확한 사실에 근거할 수 있는 방법을 학습하여 성공을 위한 준비를 하세요.

재단 모델이 사실을 잘못 파악하는 이유

재단 모델은 몇 가지 이유로 사실을 잘못 파악할 수 있습니다:

  • 사전 교육은 사실이 아닌 단어 연상을 구축합니다
  • 사전 교육 데이터 세트에 오래된 사실이 포함되어 있습니다
  • 사전 학습 데이터 세트에는 난해하거나 도메인별 사실 및 전문 용어가 포함되어 있지 않습니다
  • 샘플링 디코딩은 사실에서 벗어날 가능성이 높습니다

사전 교육은 사실이 아닌 단어 연상을 구축합니다

사전 학습 중에 기초 모델은 사전 학습 데이터 세트에서 접한 단어(토큰)의 어휘를 구축합니다. 또한 사전 학습 중에 이러한 단어 간의 통계적 관계가 모델 가중치에 인코딩됩니다.

예를 들어, 많은 기사, 책, 연설문 및 기타 일반적인 사전 교육 자료에서 '세계에서 가장 높은 산' 근처에 '에베레스트 산'이 자주 등장합니다. 그 결과 사전 학습된 모델은 "세계에서 가장 높은 산은 " 이라는 프롬프트에 "에베레스트 산"이라는 출력으로 올바르게 완성할 수 있습니다

이러한 단어 연관성을 통해 사실도 이러한 모델에 인코딩된 것처럼 보일 수 있습니다. 매우 일반적인 지식과 불변하는 사실의 경우, 가장 높은 산 예시와 같이 간단한 프롬프트와 함께 사전 학습된 기초 모델을 사용하여 사실적으로 정확한 결과물을 생성하는 데 성공할 수 있습니다. 그러나 정확성이 중요한 애플리케이션에서 기초 모델을 사용할 때 사전 학습된 단어 연관성에만 의존하는 것은 위험한 전략입니다.

사전 교육 데이터 세트에 오래된 사실이 포함되어 있습니다

사전 학습 데이터 세트를 수집하고 사전 학습을 실행하는 데는 상당한 시간, 때로는 몇 달이 걸릴 수 있습니다. 모델이 몇 년 전의 데이터 세트에 대해 사전 학습된 경우, 모델 가중치로 인코딩된 모델 어휘와 단어 연관성은 현재의 세계 이슈나 새로 인기 있는 테마를 반영하지 못합니다. 따라서 몇 년 전의 정보로 사전 학습된 모델에 "가장 최근의 축구 월드컵(축구) 우승자는 " 이라는 프롬프트를 제출하면 생성된 출력은 최신 정보가 아닐 수 있습니다.

사전 학습 데이터 세트에는 난해하거나 도메인별 사실 및 전문 용어가 포함되어 있지 않습니다

더 파일(위키백과)과 같은 일반적인 기초 모델 사전 학습 데이터 세트에는 수억 개의 문서가 포함되어 있습니다. 에베레스트 산이 얼마나 유명한 산인지 고려할 때, 기초 모델에서 '세계에서 가장 높은 산'과 '에베레스트 산'의 관계를 인코딩했을 것으로 예상하는 것이 합리적입니다. 그러나 현상, 인물 또는 개념이 소수의 기사에서만 언급되는 경우, 기초 모델에 해당 주제에 대한 단어 연관성이 가중치로 인코딩되어 있을 가능성은 희박합니다. 사전 학습된 모델에 사전 학습 데이터 세트에 없는 정보를 묻는 메시지를 표시하면 실제로 정확한 결과물이 생성되지 않을 수 있습니다.

샘플링 디코딩은 사실에서 벗어날 가능성이 높습니다

디코딩은 모델이 생성된 출력에서 단어(토큰)를 선택하는 데 사용하는 프로세스입니다:

  • 욕심 디코딩은 항상 가장 높은 확률을 가진 토큰을 선택합니다
  • 샘플링 디코딩은 확률 분포에서 의사 무작위로 토큰을 선택합니다

욕심 많은 디코딩은 더 예측 가능하고 더 반복적인 출력을 생성합니다. 샘플링 디코딩은 더 무작위로 이루어지므로 "창의적"이라는 느낌이 듭니다. 사전 학습 데이터 세트에 따라 "가장 높은 산은 " 다음에 나올 가능성이 가장 높은 단어가 "에베레스트 산"인 경우, 욕심 디코딩은 사실에 맞는 출력을 안정적으로 생성할 수 있지만 샘플링 디코딩은 다른 산의 이름이나 산이 아닌 다른 것을 생성할 수 있는 경우도 있습니다.

생성된 결과물을 정확한 사실에 근거하는 방법

사실의 정확성을 위해 미리 학습된 단어 연관성에만 의존하지 말고 프롬프트 텍스트에 문맥을 제공하세요.

프롬프트 텍스트에 문맥을 사용하여 사실 확인

기초 모델에 출력을 생성하도록 프롬프트하면 생성된 출력의 단어(토큰)는 모델 어휘의 단어와 프롬프트 텍스트의 단어에 영향을 받습니다. 프롬프트 텍스트를 사용하여 사실에 입각한 정확한 단어 연상을 강화할 수 있습니다.

예 1

다음은 모델이 좋아하는 색상을 선언하는 문장을 완성하도록 하는 프롬프트입니다:

My favorite color is 

자신이 좋아하는 색상이 무엇인지 본인만 알기 때문에 모델이 정확한 결과물을 안정적으로 생성할 수 있는 방법은 없습니다.

대신 모델의 사전 학습 데이터에 언급된 색상 중에서 색상이 선택됩니다:

  • 욕심 디코딩을 사용하는 경우, 사전 교육 콘텐츠에서 선호하는 색에 대한 설명과 함께 가장 자주 나타나는 색이 선택됩니다.
  • 샘플링 디코딩을 사용하는 경우 사전 교육 콘텐츠에서 가장 자주 언급된 색상 중에서 무작위로 색상이 선택됩니다.

예 2

다음은 사실 확인을 위한 문맥이 포함된 프롬프트입니다:

I recently painted my kitchen yellow, which is my favorite color.

My favorite color is 

이와 같이 사실적으로 정확한 문맥이 포함된 텍스트로 모델에 메시지를 표시하면 모델에서 생성하는 출력이 정확할 가능성이 높아집니다.

프롬프트에 컨텍스트를 포함하는 더 많은 예는 다음 샘플을 참조하세요:

덜 '창의적인' 디코딩 사용

프롬프트에 필요한 사실과 함께 컨텍스트를 포함하면 욕심 많은 디코딩을 사용하면 정확한 출력을 생성할 수 있습니다. 출력에 약간의 다양성이 필요한 경우 ' Temperature, ' Top P' , ' Top K' 와 같은 파라미터의 값이 낮은 샘플링 디코딩을 실험해 볼 수 있습니다. 그러나 샘플링 디코딩을 사용하면 부정확한 출력의 위험이 높아집니다.

검색 기반 생성

검색 증강 생성 패턴은 컨텍스트를 프롬프트로 가져오는 기술을 확장합니다. 웹 페이지의 프로세스 문서, PDF 파일의 법률 계약서, 판매용 제품 데이터베이스, C++ 코드 파일의 GitHub 리포지토리 또는 기타 정보 모음과 같은 지식창고가 있는 경우 검색 증강 생성 패턴을 사용하여 해당 지식창고의 정보를 기반으로 사실적으로 정확한 결과물을 생성할 수 있습니다.

검색 증강 생성에는 세 가지 기본 단계가 포함됩니다:

  1. 지식창고에서 관련 콘텐츠 검색
  2. 가장 관련성이 높은 콘텐츠를 프롬프트의 컨텍스트로 가져옵니다
  3. 결합된 프롬프트 텍스트를 모델에 전송하여 출력을 생성합니다

자세한 내용은 검색 증강 생성을 참조하세요