Prompt Engineering은 AI 애플리케이션의 효율성과 효과를 높입니다. 애플리케이션 개발자는 일반적으로 개방형 사용자 입력을 AI 모델로 전달하기 전에 Prompt 내에 캡슐화합니다.
모델이 더 나은 결과를 도출하도록 하는 한 가지 강력한 전략은 모델이 수행하기를 원하는 작업의 예시를 Prompt에 포함시키는 것입니다.
컨텍스트 창 내에서 예제를 제공하는 것을 ICL이라고 합니다.
Prompt
Classify this review :
"I Love this movie!"
Sentiment :
여기에 표시된 프롬프트에서 모델에게 리뷰의 감정을 분류하도록 요청해보았습니다.
따라서 이 영화에 대한 리뷰가긍정적이든 부정적이든 관계없이 프롬프트는 “Classify this review” 라는 명령과 함께 일부 컨텍스트 (이 경우 리뷰 텍스트 자체), 그리고 마지막에 감정을 표현하기 위한 명령으로 구성됩니다. (Sentiment)
프롬프트에 입력 데이터를 포함하는 이 방법을 ZeroShot이라고 하고 또한 아무런 사전 자료 없이 기존에 언어모델이 가지 역량 만으로 문제를 해결하는 것이라고 말할 수 있습니다.
하지만 Zero Shot Prompting은 리소스가 작은 모델에서도 잘 작동할까요?
리소스가 작은 모델에서 사용자가 원하는 대답을 얻기 위해서는 One Shot Prompting을 통해 문제를 해결 해 볼 수 있습니다.
프롬프트 내에 예제를 제공하면 성능을 개선할 수 있습니다.
Prompt
####Example######
Classify this review :
"I Love this movie!"
Sentiment : Positive
#################
Classify this review :
"I Don't Like this chair!"
Sentiment :
여기서 Prompt 텍스트가 더 길어지고 이제 모델에게 수행할 작업을 보여 주는 완성된 예제로 시작하는 것을 확인할 수 있습니다.
위에서 설명 한 Zero Shot Prompt와는 다르게 단일 예제를 포함하는 것을 One Shot Prompt 이라고 합니다.
때로는 하나의 예시만으로는 모델이 원하는 작업을 학습하기에 충분하지 않을 수 있습니다.
따라서 하나의 예제를 제공하는 방식을 확장하여 여러 예제를 포함할 수 있습니다.
이것을 Few Shot Prompt라고 힙니다.
Prompt
####Example1######
Classify this review :
"I Love this movie!"
Sentiment : Positive
#################
####Example2######
Classify this review :
"I Don't Like this chair!"
Sentiment : Negative
#################
Classify this review :
"This is not Great."
Sentiment :
출력 클래스가 서로 다른 예제를 혼합하여 포함하는 부정적인 리뷰를 통해 모델은 수행해야 할 작업을 이해하는 데 도움이 될 수 있습니다.
프롬프트를 설계하여 모델이 예제를 통해 학습하도록 유도할 수 있는것이죠.
리소스가 큰 모델은 예제 없이 Zero Shot을 잘 하는 반면, 리소스가 작은 모델은 원하는 동작의 예가 포함된 One Shot 또는 Few Shot을 활용하면 유용할 수 있습니다.
하지만 모델에 전달할 수 있는 ICL의 양에는 제한이 있기 때문에 컨텍스트 창을 잘 활용해야 합니다.