Instruction : input에 대한 설명
Context : input
Prompt = instruction + context
Prompt -> model -> output
Prompt 엔지니어링 == 모델을 다양한 분야에 적용하기 위해
Chat GPT는 오픈 도메인으로 instructions를 잘 작성해야 한다.
좋은 prompt 작성을 위해선 상황을 가정해주고, 무슨 일을 할지 명령해주며, 원하는 대답의 형태 등 넣어줄 것이 많다.
step을 정해주는건 안해주는 것과 큰 차이가 난다.
few-shot Prompts : 예시 남겨주기
Zero shot CoT : "Let's think step by step"을 활용하여 순차적으로 문장 하나 하나에 대응할 수 있게 해준다. 문제도 step by step으로 주는 것이 중요하다.
Self-Consistency : 순차적으로 해결하는 예시를 보여줘서 CoT와 비슷한 과정으로 풀이하게 된다.
예시를 계속 넣으면서 일관적으로 만드는 것이다.
Generate Knowledge Prompting : 사전지식을 prompt에 집어 넣는다.
넣는 사전 지식이 좋을 수록 결과도 좋게 나온다.
Program-aided Language Model (PAL) : 코드 형식으로 명확하게 전달하는 것이다.
ReAct : 근거와 상황을 미리 전달한다.
피드백 및 설명
- Few-shot Prompts:
- 정확한 정의: 모델이 몇 가지 예제(샷)를 포함한 프롬프트를 제공받아 작업을 수행하도록 하는 것입니다. 이 방식은 모델이 주어진 작업을 더 잘 이해하도록 돕습니다.
- 예시:
Translate English to French: See otter => loutre de mer; Plush giraffe => girafe peluche; Cheese => ?
- Zero-shot CoT:
- 정확한 정의: "Let's think step by step"과 같은 문구를 사용하여 모델이 주어진 문제를 단계별로 해결하도록 유도하는 것입니다. 예제를 제공하지 않아도 됩니다.
- 예시:
Q: If there are 3 apples and you take away 2, how many do you have? A: Let's think step by step. If you have 3 apples and take away 2, you will have 1 apple left.
- Self-Consistency:
- 정확한 정의: 다양한 사고 경로를 통해 여러 답변을 생성하고, 그 중 가장 일관된 답변을 선택하는 것입니다. 이는 특히 수학적 및 상식적 추론 작업에서 유용합니다.
- 예시:
Q: What is the sum of 15 and 27? A: Let's think step by step. 15 + 27 is calculated as follows: Step 1: Add 15 and 27. 15 + 27 = 42. Step 2: Verify the result by considering different ways of addition. Most consistent answer: 42.
- Generate Knowledge Prompting:
- 정확한 정의: 모델이 작업을 수행하기 전에 추가적인 지식을 생성하고 이를 프롬프트에 포함시켜 예측의 정확도를 높이는 것입니다.
- 예시:
Generated knowledge: The Eiffel Tower is located in Paris. Q: Where is the Eiffel Tower located? A: Based on the knowledge, the Eiffel Tower is located in Paris.
- Program-aided Language Model (PAL):
- 정확한 정의: 모델이 문제를 해결하기 위해 코드나 프로그램을 생성하고, 이를 실행하여 최종 답변을 얻는 방식입니다.
- 예시:
Q: Calculate the factorial of 5. A: Let's write a Python program to calculate the factorial of 5. def factorial(n): if n == 0: return 1 else: return n * factorial(n-1) factorial(5) => 120
- ReAct:
- 정확한 정의: 모델이 추론(trace)과 작업별 행동(action)을 교차 생성하여 더 신뢰할 수 있는 응답을 생성하는 방식입니다. 이는 외부 도구와 상호 작용하여 추가 정보를 수집하고 활용할 수 있게 합니다.
- 예시:
Q: What is the capital of France? A: To determine the capital of France, I will look it up using an external knowledge base. Action: Search for "capital of France". Result: The capital of France is Paris.
이렇게 정리된 내용을 바탕으로 각 기법의 정의와 예시를 통해 더 명확히 이해하실 수 있습니다. Prompt engineering 기법들은 모델의 성능을 높이고 다양한 작업을 수행할 수 있게 하는 데 중요한 역할을 합니다.
LLM의 단점을 보안하기 위해 RAG 등 다양한 application을 사용하였고, 다른 툴과의 협업을 통해 수식이나 수학에 약한 점을 커버한다.
LLM을 향한 다양한 공격도 지속되고 있다.
Prompt Engineering 개요
Prompt Engineering:
- 언어 모델(Language Models, LMs)에 원하는 작업을 수행하게 하기 위해 지시사항(instructions)과 문맥(context)을 전달하는 기술.
- 다양한 애플리케이션에서 효율적으로 언어 모델을 사용하기 위해 프롬프트를 개발하고 최적화하는 것을 의미함.
- AI 엔지니어와 연구자들이 언어 모델의 성능을 개선하고 효율적으로 사용할 수 있게 하는 유용한 기술.
프롬프트의 구성 요소
- Instructions (지시사항): 모델에게 수행할 작업을 명확히 지시.
- Context (문맥): 모델이 이해해야 할 배경 정보.
- Input data (입력 데이터): 모델이 처리할 실제 데이터.
- Output indicator (출력 지시자): 모델의 출력 형식을 안내.
왜 Prompt Engineering이 중요한가?
- 연구, 발견 및 발전에 중요.
- 대형 언어 모델(LLMs)의 한계를 테스트하고 평가하는 데 도움.
- LLMs를 기반으로 한 혁신적인 애플리케이션을 가능하게 함.
프롬프트 엔지니어링의 주요 기술
- Few-shot Prompts:
- 예제 몇 개를 프롬프트에 제공하여 모델의 성능을 향상시킴.
- Zero-shot Chain-of-Thought (CoT):
- 모델에게 작업에 대해 단계별로 사고하도록 지시하여 성능을 향상시킴.
- 예제 없이 "Let's think step by step"을 추가하여 작업 수행.
- Self-Consistency:
- 다양한 사고 경로를 샘플링하여 가장 일관된 답변을 선택.
- 수학적 및 상식적 추론 작업에서 성능 향상.
- Knowledge Generation Prompting:
- 문맥에 추가 지식을 제공하여 복잡한 작업의 성능을 향상시킴.
- 생성된 지식을 사용하여 예측을 개선.
- Program-aided Language Model (PAL):
- 문제를 읽고 중간 추론 단계를 생성하는 프로그램을 생성함.
- Python 인터프리터와 같은 런타임을 활용하여 솔루션을 오프로드.
- ReAct:
- 모델이 추론 흔적과 작업별 행동을 교차 생성.
- 외부 소스와 상호 작용하여 더 신뢰할 수 있는 응답 생성.
프롬프트 설계 팁
- 명확성: 원하는 형식이나 출력을 명확히 지정.
- 문맥 제공: 모델의 이해를 돕기 위해 관련 정보나 배경 제공.
- 출력 길이 제어: 모델이 특정 길이의 응답을 생성하도록 지시.
- 응답 제한: 온도 조정 등의 기법을 사용하여 출력 품질을 개선.
- 실험 및 반복: 프롬프트를 실험하고 피드백을 통해 개선.
다양한 작업에 대한 프롬프트 설계
- Text Summarization (텍스트 요약):
- 텍스트를 간결하게 요약하도록 프롬프트 설계.
- Question Answering (질문 응답):
- 질문에 답하도록 문맥과 질문을 제공.
- Text Classification (텍스트 분류):
- 텍스트를 주어진 클래스(예: 긍정, 부정, 중립)로 분류하도록 프롬프트 설계.
- Role Playing (역할 놀이):
- 모델이 특정 역할을 수행하도록 지시.
- Code Generation (코드 생성):
- 주어진 설명을 바탕으로 코드를 생성하도록 프롬프트 설계.
- Reasoning (추론):
- 복잡한 추론 작업을 수행하도록 프롬프트 설계.
모델 안전성 및 취약성
- 모델 안전성: 프롬프트 엔지니어링을 통해 응답의 신뢰성과 안전성을 개선.
- Prompt Injection (프롬프트 주입): 악의적인 명령을 주입하여 모델의 출력을 조작.
- Prompt Leaking (프롬프트 누출): 모델이 자신의 프롬프트 정보를 누출하도록 강제.
- Jailbreaking (탈옥): 안전 및 중재 기능을 우회하도록 모델을 조작.
RLHF (Reinforcement Learning from Human Feedback)
- RLHF: 인간의 피드백을 통해 LLMs를 훈련시켜 인간의 선호에 맞도록 함.
- 주요 사례: Claude(Anthropic), ChatGPT(OpenAI).
미래 방향
- Augmented LMs: 외부 도구와 결합하여 성능을 향상.
- Emergent ability of LMs: 모델의 새로운 능력을 탐구.
- Acting / Planning - Reinforcement Learning: 계획 및 행동을 위한 강화 학습.
- Multimodal Prompting: 텍스트 외의 다른 데이터 유형을 포함하는 프롬프트.
- Graph Prompting: 그래프 기반 데이터와 결합된 프롬프트.
이 문서는 프롬프트 엔지니어링의 기본 개념, 주요 기술, 설계 팁 및 다양한 작업에 대한 응용 사례를 다루고 있습니다. 프롬프트 엔지니어링을 통해 언어 모델의 성능을 최적화하고 다양한 실제 응용 프로그램에 활용할 수 있는 방법을 제공합니다.
O, X 문제 (10문제)
- Prompt engineering은 언어 모델을 효율적으로 사용하기 위해 프롬프트를 개발하고 최적화하는 기술이다. (O)
- 해설: Prompt engineering은 언어 모델을 최적화하기 위한 프롬프트 개발과 관련된 기술입니다.
- Prompt engineering은 사용자 경험을 개선하는 데 중요한 역할을 한다. (O)
- 해설: Prompt engineering은 사용자가 시스템과 상호작용하는 방식을 개선하는 데 중요한 역할을 합니다.
- Temperature와 top_p는 프롬프트의 출력을 제어하는 중요한 매개변수이다. (O)
- 해설: Temperature와 top_p는 모델이 생성하는 출력의 다양성과 결정성을 제어하는 매개변수입니다.
- Zero-shot Chain-of-Thought(CoT) 프롬프트는 예제 없이 모델에 추론하도록 지시하는 기법이다. (O)
- 해설: Zero-shot CoT는 예제 없이 모델에 단계별 추론을 지시하는 기법입니다.
- Self-consistency 기법은 여러 다양한 추론 경로를 샘플링하고 가장 일관된 답변을 선택하는 방법이다. (O)
- 해설: Self-consistency는 여러 추론 경로를 샘플링하여 일관된 답변을 선택하는 기법입니다.
- Generate Knowledge Prompting은 모델이 자체적으로 지식을 생성하여 예측에 활용하는 기법이다. (O)
- 해설: Generate Knowledge Prompting은 모델이 자체적으로 지식을 생성하여 예측을 개선하는 기법입니다.
ReAct 프레임워크는 언어 모델이 외부 도구와 상호작용하여 정보를 수집하는 방법이다. (O)해설: ReAct 프레임워크는 언어 모델이 외부 도구와 상호작용하여 정보를 수집하고 더 정확한 응답을 제공하는 방법입니다.
- Prompt engineering에서 prompt injection은 모델의 출력을 안전하게 만드는 방법이다. (X)
- 해설: Prompt injection은 모델의 출력을 조작하기 위해 프롬프트를 악용하는 공격 기법입니다.
- RLHF는 인간 피드백을 사용하여 언어 모델을 훈련하는 기법이다. (O)
- 해설: RLHF는 인간 피드백을 활용하여 언어 모델의 출력을 개선하는 강화 학습 기법입니다.
- Prompt engineering은 언어 모델의 성능을 평가하고 한계를 테스트하는 데 중요하다. (O)
- 해설: Prompt engineering은 언어 모델의 성능을 평가하고 한계를 이해하는 데 중요한 역할을 합니다.
빈칸 문제 (10문제)
- Prompt engineering은 언어 모델을 효율적으로 사용하기 위해 프롬프트를 __하고 최적화하는 기술이다. (개발)
- 해설: Prompt engineering은 언어 모델을 효율적으로 사용하기 위해 프롬프트를 개발하고 최적화하는 기술입니다.
- Temperature와 top_p는 프롬프트의 출력을 __하는 중요한 매개변수이다. (제어)
- 해설: Temperature와 top_p는 출력의 다양성과 결정성을 제어하는 매개변수입니다.
- Zero-shot Chain-of-Thought(CoT) 프롬프트는 예제 없이 모델에 __하도록 지시하는 기법이다. (추론)
- 해설: Zero-shot CoT는 예제 없이 모델에 단계별 추론을 지시하는 기법입니다.
- Self-consistency 기법은 여러 다양한 추론 경로를 __하고 가장 일관된 답변을 선택하는 방법이다. (샘플링)
- 해설: Self-consistency는 다양한 추론 경로를 샘플링하여 일관된 답변을 선택합니다.
Generate Knowledge Prompting은 모델이 자체적으로 __을 생성하여 예측에 활용하는 기법이다. (지식)해설: Generate Knowledge Prompting은 모델이 자체적으로 지식을 생성하여 예측을 개선하는 기법입니다.- 자체적 생산 지식이 아니지 않았나...? GPT도 다른 말을 하는거 같은데 강의 자료라면 prompt에 지식을 제공해서 그 지식을 기반으로 정답을 내줌으로 자체적 지식 생성은 애초에 말이 안됩니다.
-
더보기
네, 문제와 해설이 다소 혼동을 줄 수 있습니다. Generate Knowledge Prompting은 실제로 모델이 자체적으로 지식을 생성하여 예측을 개선하는 것과 관련이 있습니다. 하지만 문제의 표현이 명확하지 않기 때문에 혼동을 줄 수 있습니다.
정확한 설명
Generate Knowledge Prompting은 일반적으로 추가적인 지식을 제공하는 것이 아니라, 모델이 학습된 지식을 활용하여 더 나은 예측을 수행할 수 있도록 유도하는 기법입니다. 모델이 이미 학습한 지식을 기반으로 예측을 개선하는 것을 목표로 합니다.
문제와 해설의 재구성
문제:
Generate Knowledge Prompting은 모델이 자체적으로 지식을 생성하여 예측에 활용하는 기법이다. (X)
해설:
Generate Knowledge Prompting은 모델이 학습된 지식을 활용하여 예측을 개선하는 기법입니다. 이는 모델이 이미 알고 있는 정보를 바탕으로 더 정확한 예측을 할 수 있도록 유도합니다.
추가 설명
- Generate Knowledge Prompting:
- 목표: 모델이 학습한 지식을 최대한 활용하여 예측의 정확성을 높이는 것.
- 방법: 특정 질문에 대해 모델이 알고 있는 관련 정보를 최대한 활용하도록 프롬프트를 구성하여, 모델이 더 풍부한 답변을 생성할 수 있도록 유도합니다.
예를 들어, "Who is the president of the United States?"라는 질문에 대해, 모델이 "Joe Biden"이라고 답변할 수 있도록, "As of 2021, who is the president of the United States?"와 같이 추가적인 정보를 제공하여 예측을 개선할 수 있습니다.
결론
문제와 해설이 약간 혼동을 줄 수 있습니다. 정확하게는, Generate Knowledge Prompting은 모델이 학습된 지식을 활용하여 예측을 개선하는 기법이며, 모델이 자체적으로 새로운 지식을 생성하는 것과는 차이가 있습니다. 따라서 문제를 명확히 하기 위해서는 "학습된 지식을 활용하는" 부분을 강조하는 것이 좋습니다.
- Generate Knowledge Prompting:
ReAct 프레임워크는 언어 모델이 외부 __와 상호작용하여 정보를 수집하는 방법이다. (도구)해설: ReAct 프레임워크는 언어 모델이 외부 도구와 상호작용하여 정보를 수집하는 방법입니다.
- Prompt engineering에서 prompt injection은 모델의 출력을 __하기 위해 프롬프트를 악용하는 공격 기법이다. (조작)
- 해설: Prompt injection은 모델의 출력을 조작하기 위해 프롬프트를 악용하는 공격 기법입니다.
- RLHF는 인간 __을 사용하여 언어 모델을 훈련하는 기법이다. (피드백)
- 해설: RLHF는 인간 피드백을 사용하여 언어 모델을 훈련하는 기법입니다.
- Prompt engineering은 언어 모델의 성능을 __하고 한계를 테스트하는 데 중요하다. (평가)
- 해설: Prompt engineering은 언어 모델의 성능을 평가하고 한계를 이해하는 데 중요합니다.
- Prompt engineering은 연구, 발견 및 __에 중요하다. (발전)
- 해설: Prompt engineering은 연구, 발견 및 발전에 중요합니다.
서술형 문제 (10문제)
- Prompt engineering이 중요한 이유를 설명하시오.
- 정답: Prompt engineering은 언어 모델의 성능을 최적화하고 다양한 응용에서 효율적으로 사용할 수 있게 해주며, 사용자 경험을 개선하고 모델의 한계를 평가하는 데 중요한 역할을 합니다.
- 해설: Prompt engineering은 언어 모델을 다양한 응용에서 최적화하고, 사용자에게 더 나은 경험을 제공하며, 연구 및 발전에 기여할 수 있습니다.
- Temperature와 top_p의 역할과 그 중요성을 설명하시오.
- 정답: Temperature는 모델의 출력 확률 분포의 평탄화를 조절하며, top_p는 출력 확률의 상위 p%를 선택하여 출력을 생성합니다. 이들은 모델의 다양성과 결정성을 제어하는 데 중요합니다.
- 해설: Temperature와 top_p는 모델의 출력 결과의 다양성과 정확성을 조절하는 중요한 매개변수입니다.
- Zero-shot Chain-of-Thought(CoT) 프롬프트의 개념과 그 효과를 설명하시오.
- 정답: Zero-shot CoT 프롬프트는 예제 없이 모델에 단계별 추론을 지시하는 기법으로, 모델이 복잡한 추론 작업을 더 잘 수행할 수 있게 합니다.
- 해설: Zero-shot CoT는 모델이 복잡한 문제를 해결하는 데 도움을 주며, 더 정확한 결과를 도출할 수 있게 합니다.
- Self-consistency 기법이 Chain-of-Thought(CoT) 프롬프트의 성능을 어떻게 향상시키는지 설명하시오.
- 정답: Self-consistency는 다양한 추론 경로를 샘플링하고, 가장 일관된 답변을 선택함으로써 CoT 프롬프트의 성능을 향상시킵니다.
- 해설: Self-consistency는 모델이 더 안정적이고 정확한 추론을 할 수 있도록 돕습니다.
Generate Knowledge Prompting의 절차와 그 효과를 설명하시오.정답: Generate Knowledge Prompting은 모델이 자체적으로 지식을 생성하고, 이를 활용하여 예측의 정확성을 높이는 기법입니다. 이는 복잡한 문제 해결에 유용합니다.해설: Generate Knowledge Prompting은 모델이 더 깊이 있는 지식을 활용하여 더 정확한 예측을 할 수 있게 합니다.
ReAct 프레임워크의 개념과 그 장점을 설명하시오.정답: ReAct 프레임워크는 언어 모델이 외부 도구와 상호작용하여 정보를 수집하고, 이를 통해 더 정확한 응답을 제공하는 방법입니다. 이는 모델의 유연성과 신뢰성을 높입니다.해설: ReAct는 모델이 외부 정보를 활용하여 더 신뢰할 수 있는 결과를 제공할 수 있게 합니다.- ????????????????????????????????????????????????? 이건 진짜 리엑트가 나온거 같은데
- RLHF의 훈련 절차와 그 효과를 설명하시오.
- 정답: RLHF는 인간 피드백을 기반으로 모델을 훈련하여, 모델의 출력을 인간의 기대에 맞게 조정합니다. 이는 모델의 유용성과 신뢰성을 높이는 데 기여합니다.
- 해설: RLHF는 모델이 사용자에게 더 유용하고 신뢰할 수 있는 출력을 제공할 수 있게 합니다.
- Prompt engineering에서 prompt injection의 위험성과 이를 방지하는 방법을 설명하시오.
- 정답: Prompt injection은 모델의 출력을 조작하기 위해 프롬프트를 악용하는 공격 기법으로, 모델의 신뢰성을 저해할 수 있습니다. 이를 방지하기 위해 입력 검증과 안전한 프롬프트 설계가 필요합니다.
- 해설: Prompt injection은 모델의 안전성을 저해할 수 있으며, 이를 방지하기 위해 철저한 입력 검증과 안전한 프롬프트 설계가 중요합니다.
- Prompt engineering이 모델 안전성에 미치는 영향을 설명하시오.
- 정답: Prompt engineering은 모델의 응답을 안전하게 만들고, 위험한 행동을 식별하여 모델의 안전성을 높이는 데 기여할 수 있습니다.
- 해설: Prompt engineering은 모델의 신뢰성과 안전성을 높이는 중요한 도구입니다.
- 미래의 Prompt engineering 연구 방향을 설명하시오.
- 정답: 미래의 Prompt engineering 연구는 모델 안전성, RLHF, 멀티모달 프롬프트, 그래프 프롬프트 등 다양한 방향에서 발전할 것입니다. 이는 언어 모델의 적용 범위를 넓히고, 성능을 더욱 향상시킬 것입니다.
- 해설: Prompt engineering의 미래 연구는 모델의 유연성과 적용 범위를 넓히는 데 중점을 둘 것입니다.
단답형 문제 (10문제)
- Prompt engineering이란?
- 정답: 언어 모델을 효율적으로 사용하기 위해 프롬프트를 개발하고 최적화하는 기술
- 해설: Prompt engineering은 언어 모델을 최적화하기 위한 기술입니다.
- Temperature와 top_p의 역할은?
- 정답: 모델 출력의 다양성과 결정성을 제어함
- 해설: Temperature와 top_p는 모델 출력의 다양성과 결정성을 조절합니다.
- Zero-shot CoT 프롬프트는 무엇을 지시하는가?
- 정답: 단계별 추론
- 해설: Zero-shot CoT는 단계별 추론을 지시합니다.
- Self-consistency 기법의 목적은?
- 정답: 일관된 답변 선택
- 해설: Self-consistency는 일관된 답변을 선택하는 기법입니다.
Generate Knowledge Prompting의 역할은?정답: 모델이 자체적으로 지식을 생성하여 예측에 활용해설: Generate Knowledge Prompting은 모델이 지식을 생성하여 예측을 개선합니다.
ReAct 프레임워크의 장점은?정답: 외부 도구와 상호작용하여 더 정확한 응답 제공해설: ReAct는 외부 도구와 상호작용하여 더 정확한 응답을 제공합니다.
- RLHF의 훈련 방법은?
- 정답: 인간 피드백을 기반으로 한 강화 학습
- 해설: RLHF는 인간 피드백을 사용한 강화 학습입니다.
- Prompt injection의 위험성은?
- 정답: 모델의 출력을 조작
- 해설: Prompt injection은 모델의 출력을 조작하는 위험이 있습니다.
- Prompt engineering이 모델 안전성에 미치는 영향은?
- 정답: 응답을 안전하게 만들고 위험한 행동을 식별
- 해설: Prompt engineering은 모델의 응답을 안전하게 하고 위험한 행동을 식별합니다.
- Prompt engineering의 미래 연구 방향은?
- 정답: 모델 안전성, RLHF, 멀티모달 프롬프트, 그래프 프롬프트
- 해설: 미래 연구는 모델의 유연성과 적용 범위를 넓히는 방향으로 진행될 것입니다.
'인공지능 > 자연어 처리' 카테고리의 다른 글
자연어 처리 기말고사 정리 (0) | 2024.06.11 |
---|---|
자연어 처리 17강 - Parameter efficient Tuning (1) | 2024.06.05 |
자연어 처리 15강 - Large Language Model (0) | 2024.06.05 |
자연어 처리 14강 - Self supervised Learning 2 (0) | 2024.06.05 |
자연어 처리 13강 - Self Supervised Learning 1 (1) | 2024.06.04 |