다음을 통해 공유


제로샷 학습 및 퓨샷 학습

이 문서에서는 .NET 프롬프트 엔지니어링의 제로샷 학습 및 퓨샷 학습과 기본 사용 사례를 설명합니다.

GPT 모델 성능은 모델에 지침과 예를 제공하여 출력을 개선하는 프롬프트 엔지니어링 방식식의 혜택을 누립니다. 제로샷 학습과 퓨샷 학습은 예를 제공할 때 사용할 수 있는 기술입니다.

제로샷 학습을 사용할 때는 프롬프트는 포함하지만 축어적 완성은 포함하지 않습니다. 큐로만 구성된 완성을 포함할 수 있습니다. 제로샷 학습은 전적으로 모델의 기존 지식에 의존하여 응답을 생성하므로 만들어지는 토큰 수를 줄이고 비용을 제어하는 데 도움이 됩니다. 하지만 제로샷 학습은 모델의 지식에 추가되지 않습니다.

다음은 제로샷 학습에서 사용자 입력을 평가하여 네 가지 가능한 의도 중 입력이 어떤 것을 나타내는지 확인한 다음, 응답 앞에 "의도: "라고 표시하도록 모델에 지시하는 프롬프트의 예입니다.

prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: {request}
Intent: 
""";

퓨샷 학습을 사용할 때는 축어적 완성과 쌍을 이룬 프롬프트를 포함합니다. 즉, 제로샷 학습에 비해 퓨샷 학습은 더 많은 토큰을 생성하고 모델이 지식을 업데이트하게 되므로 리소스 집약적일 수 있습니다. 하지만 또한 동일한 이유로 퓨샷 학습은 모델이 더 관련성 있는 응답을 생성하는 데 도움이 될 수 있습니다.

prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.

User Input: Can you send a very quick approval to the marketing team?
Intent: SendMessage

User Input: Can you send the full update to the marketing team?
Intent: SendEmail

User Input: {request}
Intent:
""";

제로샷 학습 사용 사례

제로샷 학습은 큐와 쌍을 이룰 수는 있지만, 축어적 완성과 쌍을 이루지 않는 프롬프트를 전달하는 방식입니다. 제로샷 학습의 두 가지 기본 사용 사례는 다음과 같습니다.

  • 미세 조정된 LLM과 함께 작동 - 제로샷 학습은 모델의 기존 지식에 의존하기 때문에 퓨샷 학습만큼 리소스 집약적이지 않으며 지침 데이터 세트에서 이미 미세 조정된 LLM과 함께 잘 작동합니다. 제로샷 학습에만 의존함으로써 비용을 상대적으로 낮게 유지할 수 있습니다.
  • 성능 기준 설정 - 제로샷 학습은 앱이 실제 사용자를 위해 수행하는 방식을 시뮬레이션하는 데 도움이 될 수 있습니다. 모델의 정확도 또는 정밀도와 같은 현재 성능의 다양한 측면을 평가할 수 있습니다. 이 경우 일반적으로 제로샷 학습을 사용하여 성능 기준을 설정한 다음 퓨샷 학습으로 실험하여 성능을 향상합니다.

퓨삿 학습의 사용 사례

퓨샷 학습은 축자적 완성과 쌍을 이루는 프롬프트(퓨샷 프롬프트)를 전달하여 모델에 응답하는 방법을 보여주는 방식입니다. 제로샷 학습과 달리 퓨샷 학습은 모델의 지식에 추가할 수 있습니다. 심지어 검색 증강 생성을 통해 사용자 고유의 데이터 세트를 사용하여 퓨삿 프롬프트를 자동으로 생성할 수도 있습니다.

퓨샷 학습의 두 가지 기본 사용 사례는 다음과 같습니다.

  • LLM 튜닝 - 퓨샷 학습은 모델의 지식에 추가할 수 있으므로 모델의 성능을 높일 수 있습니다. 또한 모델이 제로샷 학습에서보다 더 많은 토큰을 생성하게 되므로 결국 막대한 비용이 들거나 심지어 실행 불가능해질 수 있습니다. 하지만 LLM이 아직 미세 조정되지 않은 경우, 제로샷 프롬프트로는 좋은 성능을 얻지 못하며 퓨샷 학습이 정당화됩니다.
  • 성능 문제 해결 - 퓨샷 학습은 제로샷 학습의 후속 수단으로 사용할 수 있습니다. 이 경우 제로샷 학습을 사용하여 성능 기준을 설정한 다음, 사용한 제로샷 프롬프트를 기반으로 퓨샷 학습으로 실험합니다. 이렇게 하면 현재 응답하는 방식을 확인한 후에 모델의 지식에 추가할 수 있으므로 도입하는 토큰 수를 최소화하면서 성능을 반복하고 개선할 수 있습니다.

제한 사항

  • 예 기반 학습은 복잡한 추론 작업에 적합하지 않습니다. 그러나 지침을 추가하면 이 문제를 해결하는 데 도움이 될 수 있습니다.
  • 퓨샷 학습을 수행하려면 긴 프롬프트를 만들어야 합니다. 토큰 수가 많은 프롬프트는 계산과 대기 시간이 늘어날 수 있습니다. 이는 일반적으로 비용 증가를 의미합니다. 또한 프롬프트 길이에 제한이 있습니다.
  • 여러 예를 사용하는 경우 모델은 "감정은 부정적이기보다 긍정적일 확률이 두 배 높습니다"와 같은 거짓 패턴을 학습할 수 있습니다.