인공지능/자연어 처리

자연어 처리 16강 - Prompt Engineering

이게될까 2024. 6. 5. 20:32
728x90
728x90

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 : 근거와 상황을 미리 전달한다. 

더보기

 

피드백 및 설명

  1. Few-shot Prompts:
    • 정확한 정의: 모델이 몇 가지 예제(샷)를 포함한 프롬프트를 제공받아 작업을 수행하도록 하는 것입니다. 이 방식은 모델이 주어진 작업을 더 잘 이해하도록 돕습니다.
    • 예시:
      Translate English to French: See otter => loutre de mer; Plush giraffe => girafe peluche; Cheese => ?
  2. 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.
  3. 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.
  4. 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.
  5. 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
  6. 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을 사용하였고, 다른 툴과의 협업을 통해 수식이나 수학에 약한 점을 커버한다.

RAG

 

LLM을 향한 다양한 공격도 지속되고 있다.

 

 

더보기

Prompt Engineering 개요

Prompt Engineering:

  • 언어 모델(Language Models, LMs)에 원하는 작업을 수행하게 하기 위해 지시사항(instructions)과 문맥(context)을 전달하는 기술.
  • 다양한 애플리케이션에서 효율적으로 언어 모델을 사용하기 위해 프롬프트를 개발하고 최적화하는 것을 의미함.
  • AI 엔지니어와 연구자들이 언어 모델의 성능을 개선하고 효율적으로 사용할 수 있게 하는 유용한 기술.

프롬프트의 구성 요소

  • Instructions (지시사항): 모델에게 수행할 작업을 명확히 지시.
  • Context (문맥): 모델이 이해해야 할 배경 정보.
  • Input data (입력 데이터): 모델이 처리할 실제 데이터.
  • Output indicator (출력 지시자): 모델의 출력 형식을 안내.

왜 Prompt Engineering이 중요한가?

  • 연구, 발견 및 발전에 중요.
  • 대형 언어 모델(LLMs)의 한계를 테스트하고 평가하는 데 도움.
  • LLMs를 기반으로 한 혁신적인 애플리케이션을 가능하게 함.

프롬프트 엔지니어링의 주요 기술

  1. Few-shot Prompts:
    • 예제 몇 개를 프롬프트에 제공하여 모델의 성능을 향상시킴.
  2. Zero-shot Chain-of-Thought (CoT):
    • 모델에게 작업에 대해 단계별로 사고하도록 지시하여 성능을 향상시킴.
    • 예제 없이 "Let's think step by step"을 추가하여 작업 수행.
  3. Self-Consistency:
    • 다양한 사고 경로를 샘플링하여 가장 일관된 답변을 선택.
    • 수학적 및 상식적 추론 작업에서 성능 향상.
  4. Knowledge Generation Prompting:
    • 문맥에 추가 지식을 제공하여 복잡한 작업의 성능을 향상시킴.
    • 생성된 지식을 사용하여 예측을 개선.
  5. Program-aided Language Model (PAL):
    • 문제를 읽고 중간 추론 단계를 생성하는 프로그램을 생성함.
    • Python 인터프리터와 같은 런타임을 활용하여 솔루션을 오프로드.
  6. ReAct:
    • 모델이 추론 흔적과 작업별 행동을 교차 생성.
    • 외부 소스와 상호 작용하여 더 신뢰할 수 있는 응답 생성.

프롬프트 설계 팁

  • 명확성: 원하는 형식이나 출력을 명확히 지정.
  • 문맥 제공: 모델의 이해를 돕기 위해 관련 정보나 배경 제공.
  • 출력 길이 제어: 모델이 특정 길이의 응답을 생성하도록 지시.
  • 응답 제한: 온도 조정 등의 기법을 사용하여 출력 품질을 개선.
  • 실험 및 반복: 프롬프트를 실험하고 피드백을 통해 개선.

다양한 작업에 대한 프롬프트 설계

  1. Text Summarization (텍스트 요약):
    • 텍스트를 간결하게 요약하도록 프롬프트 설계.
  2. Question Answering (질문 응답):
    • 질문에 답하도록 문맥과 질문을 제공.
  3. Text Classification (텍스트 분류):
    • 텍스트를 주어진 클래스(예: 긍정, 부정, 중립)로 분류하도록 프롬프트 설계.
  4. Role Playing (역할 놀이):
    • 모델이 특정 역할을 수행하도록 지시.
  5. Code Generation (코드 생성):
    • 주어진 설명을 바탕으로 코드를 생성하도록 프롬프트 설계.
  6. 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문제)

  1. Prompt engineering은 언어 모델을 효율적으로 사용하기 위해 프롬프트를 개발하고 최적화하는 기술이다. (O)
    • 해설: Prompt engineering은 언어 모델을 최적화하기 위한 프롬프트 개발과 관련된 기술입니다.
  2. Prompt engineering은 사용자 경험을 개선하는 데 중요한 역할을 한다. (O)
    • 해설: Prompt engineering은 사용자가 시스템과 상호작용하는 방식을 개선하는 데 중요한 역할을 합니다.
  3. Temperature와 top_p는 프롬프트의 출력을 제어하는 중요한 매개변수이다. (O)
    • 해설: Temperature와 top_p는 모델이 생성하는 출력의 다양성과 결정성을 제어하는 매개변수입니다.
  4. Zero-shot Chain-of-Thought(CoT) 프롬프트는 예제 없이 모델에 추론하도록 지시하는 기법이다. (O)
    • 해설: Zero-shot CoT는 예제 없이 모델에 단계별 추론을 지시하는 기법입니다.
  5. Self-consistency 기법은 여러 다양한 추론 경로를 샘플링하고 가장 일관된 답변을 선택하는 방법이다. (O)
    • 해설: Self-consistency는 여러 추론 경로를 샘플링하여 일관된 답변을 선택하는 기법입니다.
  6. Generate Knowledge Prompting은 모델이 자체적으로 지식을 생성하여 예측에 활용하는 기법이다. (O)
    • 해설: Generate Knowledge Prompting은 모델이 자체적으로 지식을 생성하여 예측을 개선하는 기법입니다.
  7. ReAct 프레임워크는 언어 모델이 외부 도구와 상호작용하여 정보를 수집하는 방법이다. (O)
    • 해설: ReAct 프레임워크는 언어 모델이 외부 도구와 상호작용하여 정보를 수집하고 더 정확한 응답을 제공하는 방법입니다.
  8. Prompt engineering에서 prompt injection은 모델의 출력을 안전하게 만드는 방법이다. (X)
    • 해설: Prompt injection은 모델의 출력을 조작하기 위해 프롬프트를 악용하는 공격 기법입니다.
  9. RLHF는 인간 피드백을 사용하여 언어 모델을 훈련하는 기법이다. (O)
    • 해설: RLHF는 인간 피드백을 활용하여 언어 모델의 출력을 개선하는 강화 학습 기법입니다.
  10. Prompt engineering은 언어 모델의 성능을 평가하고 한계를 테스트하는 데 중요하다. (O)
    • 해설: Prompt engineering은 언어 모델의 성능을 평가하고 한계를 이해하는 데 중요한 역할을 합니다.

빈칸 문제 (10문제)

  1. Prompt engineering은 언어 모델을 효율적으로 사용하기 위해 프롬프트를 __하고 최적화하는 기술이다. (개발)
    • 해설: Prompt engineering은 언어 모델을 효율적으로 사용하기 위해 프롬프트를 개발하고 최적화하는 기술입니다.
  2. Temperature와 top_p는 프롬프트의 출력을 __하는 중요한 매개변수이다. (제어)
    • 해설: Temperature와 top_p는 출력의 다양성과 결정성을 제어하는 매개변수입니다.
  3. Zero-shot Chain-of-Thought(CoT) 프롬프트는 예제 없이 모델에 __하도록 지시하는 기법이다. (추론)
    • 해설: Zero-shot CoT는 예제 없이 모델에 단계별 추론을 지시하는 기법입니다.
  4. Self-consistency 기법은 여러 다양한 추론 경로를 __하고 가장 일관된 답변을 선택하는 방법이다. (샘플링)
    • 해설: Self-consistency는 다양한 추론 경로를 샘플링하여 일관된 답변을 선택합니다.
  5. 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은 모델이 학습된 지식을 활용하여 예측을 개선하는 기법이며, 모델이 자체적으로 새로운 지식을 생성하는 것과는 차이가 있습니다. 따라서 문제를 명확히 하기 위해서는 "학습된 지식을 활용하는" 부분을 강조하는 것이 좋습니다.

  6. ReAct 프레임워크는 언어 모델이 외부 __와 상호작용하여 정보를 수집하는 방법이다. (도구)
    • 해설: ReAct 프레임워크는 언어 모델이 외부 도구와 상호작용하여 정보를 수집하는 방법입니다.
  7. Prompt engineering에서 prompt injection은 모델의 출력을 __하기 위해 프롬프트를 악용하는 공격 기법이다. (조작)
    • 해설: Prompt injection은 모델의 출력을 조작하기 위해 프롬프트를 악용하는 공격 기법입니다.
  8. RLHF는 인간 __을 사용하여 언어 모델을 훈련하는 기법이다. (피드백)
    • 해설: RLHF는 인간 피드백을 사용하여 언어 모델을 훈련하는 기법입니다.
  9. Prompt engineering은 언어 모델의 성능을 __하고 한계를 테스트하는 데 중요하다. (평가)
    • 해설: Prompt engineering은 언어 모델의 성능을 평가하고 한계를 이해하는 데 중요합니다.
  10. Prompt engineering은 연구, 발견 및 __에 중요하다. (발전)
    • 해설: Prompt engineering은 연구, 발견 및 발전에 중요합니다.

서술형 문제 (10문제)

  1. Prompt engineering이 중요한 이유를 설명하시오.
    • 정답: Prompt engineering은 언어 모델의 성능을 최적화하고 다양한 응용에서 효율적으로 사용할 수 있게 해주며, 사용자 경험을 개선하고 모델의 한계를 평가하는 데 중요한 역할을 합니다.
    • 해설: Prompt engineering은 언어 모델을 다양한 응용에서 최적화하고, 사용자에게 더 나은 경험을 제공하며, 연구 및 발전에 기여할 수 있습니다.
  2. Temperature와 top_p의 역할과 그 중요성을 설명하시오.
    • 정답: Temperature는 모델의 출력 확률 분포의 평탄화를 조절하며, top_p는 출력 확률의 상위 p%를 선택하여 출력을 생성합니다. 이들은 모델의 다양성과 결정성을 제어하는 데 중요합니다.
    • 해설: Temperature와 top_p는 모델의 출력 결과의 다양성과 정확성을 조절하는 중요한 매개변수입니다.
  3. Zero-shot Chain-of-Thought(CoT) 프롬프트의 개념과 그 효과를 설명하시오.
    • 정답: Zero-shot CoT 프롬프트는 예제 없이 모델에 단계별 추론을 지시하는 기법으로, 모델이 복잡한 추론 작업을 더 잘 수행할 수 있게 합니다.
    • 해설: Zero-shot CoT는 모델이 복잡한 문제를 해결하는 데 도움을 주며, 더 정확한 결과를 도출할 수 있게 합니다.
  4. Self-consistency 기법이 Chain-of-Thought(CoT) 프롬프트의 성능을 어떻게 향상시키는지 설명하시오.
    • 정답: Self-consistency는 다양한 추론 경로를 샘플링하고, 가장 일관된 답변을 선택함으로써 CoT 프롬프트의 성능을 향상시킵니다.
    • 해설: Self-consistency는 모델이 더 안정적이고 정확한 추론을 할 수 있도록 돕습니다.
  5. Generate Knowledge Prompting의 절차와 그 효과를 설명하시오.
    • 정답: Generate Knowledge Prompting은 모델이 자체적으로 지식을 생성하고, 이를 활용하여 예측의 정확성을 높이는 기법입니다. 이는 복잡한 문제 해결에 유용합니다.
    • 해설: Generate Knowledge Prompting은 모델이 더 깊이 있는 지식을 활용하여 더 정확한 예측을 할 수 있게 합니다.
  6. ReAct 프레임워크의 개념과 그 장점을 설명하시오.
    • 정답: ReAct 프레임워크는 언어 모델이 외부 도구와 상호작용하여 정보를 수집하고, 이를 통해 더 정확한 응답을 제공하는 방법입니다. 이는 모델의 유연성과 신뢰성을 높입니다.
    • 해설: ReAct는 모델이 외부 정보를 활용하여 더 신뢰할 수 있는 결과를 제공할 수 있게 합니다.
    • ????????????????????????????????????????????????? 이건 진짜 리엑트가 나온거 같은데 
  7. RLHF의 훈련 절차와 그 효과를 설명하시오.
    • 정답: RLHF는 인간 피드백을 기반으로 모델을 훈련하여, 모델의 출력을 인간의 기대에 맞게 조정합니다. 이는 모델의 유용성과 신뢰성을 높이는 데 기여합니다.
    • 해설: RLHF는 모델이 사용자에게 더 유용하고 신뢰할 수 있는 출력을 제공할 수 있게 합니다.
  8. Prompt engineering에서 prompt injection의 위험성과 이를 방지하는 방법을 설명하시오.
    • 정답: Prompt injection은 모델의 출력을 조작하기 위해 프롬프트를 악용하는 공격 기법으로, 모델의 신뢰성을 저해할 수 있습니다. 이를 방지하기 위해 입력 검증과 안전한 프롬프트 설계가 필요합니다.
    • 해설: Prompt injection은 모델의 안전성을 저해할 수 있으며, 이를 방지하기 위해 철저한 입력 검증과 안전한 프롬프트 설계가 중요합니다.
  9. Prompt engineering이 모델 안전성에 미치는 영향을 설명하시오.
    • 정답: Prompt engineering은 모델의 응답을 안전하게 만들고, 위험한 행동을 식별하여 모델의 안전성을 높이는 데 기여할 수 있습니다.
    • 해설: Prompt engineering은 모델의 신뢰성과 안전성을 높이는 중요한 도구입니다.
  10. 미래의 Prompt engineering 연구 방향을 설명하시오.
    • 정답: 미래의 Prompt engineering 연구는 모델 안전성, RLHF, 멀티모달 프롬프트, 그래프 프롬프트 등 다양한 방향에서 발전할 것입니다. 이는 언어 모델의 적용 범위를 넓히고, 성능을 더욱 향상시킬 것입니다.
    • 해설: Prompt engineering의 미래 연구는 모델의 유연성과 적용 범위를 넓히는 데 중점을 둘 것입니다.

단답형 문제 (10문제)

  1. Prompt engineering이란?
    • 정답: 언어 모델을 효율적으로 사용하기 위해 프롬프트를 개발하고 최적화하는 기술
    • 해설: Prompt engineering은 언어 모델을 최적화하기 위한 기술입니다.
  2. Temperature와 top_p의 역할은?
    • 정답: 모델 출력의 다양성과 결정성을 제어함
    • 해설: Temperature와 top_p는 모델 출력의 다양성과 결정성을 조절합니다.
  3. Zero-shot CoT 프롬프트는 무엇을 지시하는가?
    • 정답: 단계별 추론
    • 해설: Zero-shot CoT는 단계별 추론을 지시합니다.
  4. Self-consistency 기법의 목적은?
    • 정답: 일관된 답변 선택
    • 해설: Self-consistency는 일관된 답변을 선택하는 기법입니다.
  5. Generate Knowledge Prompting의 역할은?
    • 정답: 모델이 자체적으로 지식을 생성하여 예측에 활용
    • 해설: Generate Knowledge Prompting은 모델이 지식을 생성하여 예측을 개선합니다.
  6. ReAct 프레임워크의 장점은?
    • 정답: 외부 도구와 상호작용하여 더 정확한 응답 제공
    • 해설: ReAct는 외부 도구와 상호작용하여 더 정확한 응답을 제공합니다.
  7. RLHF의 훈련 방법은?
    • 정답: 인간 피드백을 기반으로 한 강화 학습
    • 해설: RLHF는 인간 피드백을 사용한 강화 학습입니다.
  8. Prompt injection의 위험성은?
    • 정답: 모델의 출력을 조작
    • 해설: Prompt injection은 모델의 출력을 조작하는 위험이 있습니다.
  9. Prompt engineering이 모델 안전성에 미치는 영향은?
    • 정답: 응답을 안전하게 만들고 위험한 행동을 식별
    • 해설: Prompt engineering은 모델의 응답을 안전하게 하고 위험한 행동을 식별합니다.
  10. Prompt engineering의 미래 연구 방향은?
    • 정답: 모델 안전성, RLHF, 멀티모달 프롬프트, 그래프 프롬프트
    • 해설: 미래 연구는 모델의 유연성과 적용 범위를 넓히는 방향으로 진행될 것입니다.

 

728x90