GPT

Prompt Engineering

Zoo_10th 2024. 5. 1.

1. 프롬프트(Prompt)

1-1. 프롬프트란?

프롬프트는 컴퓨터와 대화하는 방식 중 하나로, 명령어를 통해 컴퓨터에게 작업을 시키는 메시지를 의미한다. 초기에는 명령어를 통해 정해진 결과를 얻는 방식이었다. 하지만 최근에는 Generative AI의 발전으로 컴퓨터가 우리의 자연어를 이해하게 되면서 프롬프트는 더 다양하고 자유로운 방식으로 사용되고 있다.

1-2. 프롬프트 엔지니어링, Prompt Engineering 이란?

프롬프트 엔지니어링은 최근에 발전한 자연어 처리 기술을 활용하여 AI 모델에게 명령을 내리는 기술이다. ChatGPT 및 GPT-4와 같은 강력한 언어 모델을 사용할 때, 프롬프트의 품질이 모델의 답변에 큰 영향을 미친다. 따라서 프롬프트를 신중하게 설계하고 최적화함으로써 모델을 보다 효과적으로 활용할 수 있다. 이는 데이터 사이언티스트나 콘텐츠 제작자, 자연어 처리에 관심 있는 학생들에게 특히 유용한 스킬이다.

프롬프트 엔지니어링을 통해 모델을 올바르게 활용하는 방법을 배우면, 여러분은 보다 효과적으로 원하는 결과물을 얻을 수 있을 것이다. 예를 들어, 동일한 목표를 가진 두 가지 다른 프롬프트가 있다면 어떻게 설계해야 하는지에 대한 학습도 가능하다. 이러한 스킬은 자연어 처리 분야에서의 학습을 더욱 흥미롭게 만들어줄 것이다.

1-3. 프롬프트 엔지니어링 예시

프롬프트(명령)는 생성 모델에게 특정 작업을 수행하도록 지시하는 문구나 질문이다. 이는 언어 모델이 원하는 결과를 생성하도록 유도하는 열쇠 역할을 한다. 여러 플랫폼과 가이드에서는 프롬프트를 최적화하고 효과적으로 활용하는 방법에 대한 다양한 정보를 제공하고 있다.

1) PromptBase의 템플릿

PromptBase는 프롬프트 템플릿을 판매하는 플랫폼으로, 여기서는 특정 주제나 작업에 대한 생성 모델의 응답을 유도하는데 사용되는 템플릿을 구매할 수 있다. 이를 통해 사용자는 보다 구체적이고 원하는 방향으로 모델의 출력을 조절할 수 있다.

2) ChatGPT Cheat Sheet

ChatGPT Cheat Sheet는 ChatGPT와 상호작용하며 원하는 답변을 얻기 위한 프롬프트 기술에 관한 유용한 정보를 담은 자료이다. 이는 몇 가지 트릭과 템플릿을 제공하여 사용자가 더 효과적인 프롬프트를 만들 수 있도록 돕는다.

3) Prompt Engineering Guide

Prompt Engineering Guide는 생성 언어 모델과의 상호작용을 최적화하기 위한 방법을 안내하는 문서이다. 이 가이드를 통해 모델의 연관성을 개선하고, 새로운 기능을 추가하며, 도메인 지식을 모델에 통합하는 방법에 대한 기술적인 통찰력을 얻을 수 있다.

2. Prompt Engineering

2-1. 프롬프트의 구성

1) 문맥(Context)

문맥은 프롬프트에 대한 배경을 설정하고 LLM이 과제를 이해하는 데 필요한 필수 배경 정보를 제공한다. 문제에 대한 간단한 설명이나 관련 정보의 요약일 수 있다.

 - "소프트웨어 개발 회사에서 근무하고 있으며, 음식 배달 서비스용 모바일 앱을 디자인하는 과제를 맡았습니다."

2) 과제(Task)

과제는 프롬프트의 구체적인 목표나 목적을 정의한다. 명확하게 정의되어야 하며 LLM에서 필요한 특정 정보나 동작에 중점을 둬야 한다.

 - "새 제품 출시를 발표하는 트윗(최대 280자)을 작성하세요. 해당 제품의 주요 기능을 강조하고 사용자 참여를 촉구하세요."

3) 제한사항(Constraints)

제한사항은 프롬프트에 대한 경계나 제약 사항을 제공한다. 응답 길이나 복잡성에 대한 특정 요구사항, 제한 사항 등이 포함될 수 있다.

 - "트윗은 280자를 초과하지 않아야 하며 주요 기능에 중점을 두어야 합니다."

4) 추가 정보(Extra Information)

이 섹션에서는 추가 문맥이나 출력 형식을 지정할 수 있다. 출력 형식 옵션으로는 마크다운, JSON, 또는 프로그래밍 언어 등이 있을 수 있다.

 - "응답은 마크다운 테이블로 작성되어야 합니다."

2-2. 좋은 프롬프트 만들기

1)  6가지 프롬프트 작성 전략(Six strategies for getting better results)

① 더 관련성 높은 답변을 얻기 위해 쿼리에 세부 사항 포함하기

 - 나쁜 예: "과일은 어떤 종류가 있나요?"
 - 좋은 예: "과일 중에서 특히 비타민 C가 풍부한 과일에 대해 설명해주세요."

②   모델에게 특정 인격을 취하도록 요청하기

 - 시스템 메시지를 통해 모델에게 특정한 스타일이나 톤을 가지고 응답하도록 지시할 수 있다.

③  입력의 명확한 부분을 나타내기 위해 구분자 사용하기

 - 구분자를 사용하여 모델에게 특정 섹션을 구별하여 처리하도록 지시할 수 있다.

④  작업을 완료하는 데 필요한 단계 명시하기

 -   명확한 단계를 지시하여 모델이 작업을 이해하고 따를 수 있도록 돕는다.

⑤  예시 제공하기

 - 일반적인 지침 대신 모델이 따라야 하는 특정 스타일이나 작업을 보여주는 예시를 제공할 수 있다.

⑥ 출력의 원하는 길이 명시하기

 - 모델에게 특정한 길이의 출력을 생성하도록 지시하여 원하는 형식에 맞는 응답을 받을 수 있다.

⑦ 참조 텍스트 제공하기

 - 가짜 답변을 만들 가능성이 있는 경우 참조 텍스트를 제공하여 모델이 더 정확한 응답을 생성하도록 할 수 있다.

2) Chain of thought, 순차적 추론

모델의 결론을 성급하게 도출하게되면 추론에 오류가 발생하기 쉽다. 이러한 현상을 줄이기위해서는 순차적 추론을 하도록 요구해야한다. 즉, LLM이 단계별로 생각하고 문제를 해결하도록 유도하는 방법을 사용하는 것이 효과적이다.

GPT-3에 의해 많이 사용되는 표준 프롬프트를 사용하면 모델에 input-output pair의 답변 예시를 제공한 후 답변을 주도록 요청받게 된다. (이미지 왼쪽). Chain of thought를 이용한 prompt (이미지 오른쪽)에서는 모델에게 중간 추론 단계를 출력하라는 메시지를 표시한다.

Chain of thought 이전에는 Fine tuning을 통해 이러한 답변이 가능했지만, 대규모 학습 데이터 세트나 언어 모델의 가중치를 수정할 필요 없이 프롬프트만으로 이러한 사고 과정을 유도할 수 있게 되었다.

3) 프롬프트를 활용한 환각 증상 극복 방법

① 환각 증상과 Overfitting 이해

환각은 Generative AI에서 흔한 문제로, 모델이 특정 관점이나 정보에 지나치게 치우쳐 결과를 생성하는 것을 의미한다. Overfitting으로 인해 모델이 부정확한 정보에 의존하거나 집착할 수 있다.

② 다양한 관점 요청을 통한 방지

프롬프트를 통해 다양한 관점에서의 정보를 요청하여 Overfitting을 방지한다. 단일 명령 대신 여러 측면에서 분석하고 평가하도록 프롬프트를 구성한다.

③ 명확한 문맥 제공

모델에게 명확한 문맥을 제공하여 일관된 결과를 유도한다. 이전 대화나 문장에서 언급된 정보를 프롬프트에 포함하여 모델이 상황을 이해하고 일관된 답변을 생성할 수 있도록 한다.

④ 정기적인 모델 평가와 피드백

모델이 환각 증상에 빠지지 않도록 정기적으로 모델의 출력을 평가하고, 필요한 경우 피드백을 통해 모델을 개선한다.

4) ChatGPT 프롬프트 템플릿 활용 가이드

잘 만들어진 프롬프트는 다양한 상황에서 유용하게 사용할 수 있다. 예를 들어, 이 문서에서는 ChatGPT로 영어 그림책을 만드는 방법에 대해 설명하고 있다. ChatGPT에게 영어 동화 작가라는 역할을 먼저 부여합니다. 이후 원하는 주제와 내용을 가지고 영어 동화책을 작성해달라고 요청한다.

위 사례처럼 프롬프트를 이해하고, 제대로 사용할 수 있다면 생성형 AI를 200% 활용할 수 있다.

2-3. 프롬프트 엔지니어링 vs 파인 튜닝

1) 프롬프트 엔지니어링과 파인 튜닝 비교

① 파인 튜닝

 - 사전 훈련된 언어 모델의 가중치를 특정 작업이나 도메인에 맞게 조정하는 방법.

 - 추가 데이터 세트 및 레이블을 사용하여 작업 특화.

 - 기존 모델에 대한 변경 사항을 학습하여 성능 개선.

 - 복잡하고 전문화된 작업에서 주로 사용.

② 프롬프트 엔지니어링

 - 사전 훈련된 언어 모델 입력 인터페이스를 변경하여 원하는 결과를 얻는 것에 초점.

 - 입력 문장(프롬프트) 구조와 형식 등의 요소를 최적화.

 - 추가 학습 데이터가 필요 없음. 주로 간단하거나 일상적인 상황에서 사용.

2) Parameter-efficient Fine-tuning (PEFT)

 - PEFT는 파인 튜닝의 한 형태로, 사전 훈련된 언어 모델의 일부 가중치만 업데이트하여 성능을 개선하는 방법.

 - 공통 상위 계층에 있는 모델 구조만 파인 튜닝함으로써 효율적인 가중치 업데이트를 실현.

 - 파라미터 개수를 줄여 훈련 시간과 메모리 비용을 최소화.

3) Fine-tuning 시 필요한 데이터 세트의 구조 및 유형

 - Fine-tuning은 사전 훈련된 언어 모델을 추가 데이터셋을 사용하여 세부 조정하는 과정.

 - 데이터셋은 다양하고 충분한 양의 도메인 특정 데이터를 제공해야 함.

 - 입력과 출력 예시의 형식과 구조가 일관성 있게 유지돼야 하며, 정확한 레이블이 필요.

4) Conclusion

 - 파인 튜닝은 주로 복잡하고 전문화된 작업에서 사용되며, 모델을 특정 도메인에 민감하게 조정함.

 - 프롬프트 엔지니어링은 간단하거나 일상적인 상황에서 최소한의 리소스와 시간으로 원하는 결과를 얻기에 유용함.

 - PEFT는 효율적인 파인 튜닝의 한 예로, 가중치 업데이트를 최소화하여 자원을 절약하면서도 성능을 유지함.

728x90

'GPT' 카테고리의 다른 글

Chat GPT  (1) 2024.05.01

댓글