생각하는 아져씨

[Coursera] Prompt Engineering 본문

Machine & Deep Learning/Generative AI

[Coursera] Prompt Engineering

azeomi 2023. 8. 9. 22:11

앤드류 응 교수님의 강의를 듣고 정리 및 공부한 글임을 알려드립니다.

Generative AI with LLMs
In Generative AI with Large Language Models (LLMs), created in partnership with AWS, you’ll learn the fundamentals of how generative AI works, and how to deploy it in real-world applications.

 

💡 대화 요약 예제를 활용해 LLM에 대해서 Prompt Engineering의 첫 번째 스텝을 배워본다. 파인튜닝 전 생성 퀄리티를 높일 수 있는 In-context Inference 도 배워본다.

👀 Prompt Engineering

복습해봅시다.

  • In context learning
    • zero shot
    • one shot
    • few shot inference

Large Language Model(이하 LLM)에 Input으로 들어가는 문장&텍스트를 Prompt라고 합니다. 그리고 LLM을 거쳐 output이 생성되는 과정을 Inference라고 부릅니다. 이때 Prompt로 들어가는 선행 텍스트의 양을 Context Window(문맥창)이라고 합니다.

ChatGPT의 대화에서 문맥을 쥐어주면 대화가 더 잘되는 것처럼, Context Window(문맥창)은 언어모델이 응답을 생성할 때 대화의 맥락을 잘 고려할 수 있게 합니다.

가장 처음 LLM에게 질문을 던졌을 때 원하는 답을 쉽게 얻을 수 있었나요? 대부분 첫 번째 시도에서는 그렇지 않았죠 🤣

그래서 우리는 원하는 답을 얻기 위해서 질문의 형태도 바꿔보고 예시도 넣어보는 등 다양한 시도를 하게 됩니다. 바로 이렇게 수정과 수정을 거치는 작업을 Prompt Engineering이라고 합니다. ☺️

Prompt Engineering의 여러 전략 중 가장 쉬운 방법에는 예시를 넣어주는 방법이 있습니다. Context Window에 예시를 넣어줌으로써 더 나은 생성을 할 수 있도록 하는 것이 바로 In-Context Learning입니다. In-Context Learning 에는 Zero-shot, One-shot, Few-shot 이 있습니다. 이름에서도 알 수 있듯이 동작과정은 동일하고 주어지는 숫자만 다릅니다.

 

Zero-shot Inference

Zero-shot은 모델에게 Prompt를 던질 때 어떠한 예시(examples)도 없이 Input에 대한 Output을 생성하도록 하는 것입니다. 위 그림처럼 문장에 대한 감정을 분류하라고 바로 물어보는 것처럼요! 여기에서 Zero-shot에 대해 더 자세하게 볼 수 있습니다.

헷갈리지 말아야 할 것은 prompt로 Text만을 넣는 것과 동일하지 않다는 것입니다!

  • 질문을 주고 → empty string
  • 질문을 주고 → ‘Summary : ‘

보통 2번째를 Zero-shot이라고 부를 수 있습니다.

요즘 LLM은 Zero-shot에 대해서도 잘 동작하지만 모델이 작아질 경우 우리가 원하는 대답이 나오지 않을 수도 있습니다. 감정을 분류하라고 텍스트를 던졌는데 감정 분류는 커녕 전혀 상관없는 output을 출력할 수도 있습니다. 🥹

이때 Example을 제공해서 성능을 개선시킬 수 있습니다. 바로 one-shot & few-shot 전략을 이용해서요!

 

One-shot Inference

One-shot은 1개의 example인 single example을 제공하는 방법으로, 위 그림처럼 한 문장에 대한 감정 분류 예시를 보여주고 다음 문장에 대해 결과를 생성할 때 영향을 주는 방법입니다. 이런 예제를 다양하게 주는 것이 few-shot inference입니다.

 

Few-shot Inference

Few-shot은 여러 개의 example인 multiple example을 제공하는 방법입니다.

이렇게 In-Context Learning으로 모델로부터 우리가 원하는 답을 얻을 수 있었습니다. 하지만 무한정으로 예시를 넣어줌으로써 계속해서 성능 향상을 할 수 있을까요? 🧐

아닙니다! In-Context Learning의 양에 한계가 있기 때문입니다. 그래서 5~6개의 예제를 넣어주었는데도 모델이 잘 동작하지 않는다면, Fine-tuning을 시도해봐야 합니다. 😉

 

다음 포스팅 :  코드와 함께 Prompt Engineering 도전