인공지능

프롬프트 엔지니어링(Basic)

원담 2025. 6. 5. 15:47
728x90

Zero-Shot Prompting

  • 예시(demonstration)를 주지 않고, 지시문만으로 작업을 수행
  • 기존에 학습된 지식을 바탕으로 응답 생성
  • Instruction Tuning + RLHF(인간 피드백 기반 강화학습)에 의해 효과적으로 작동

특징

  • 입력: 단순한 자연어 지시문만 제공
  • 출력: 모델이 스스로 작업을 유추해 수행
  • 학습 데이터가 부족한 상황에서도 간단한 작업 처리에 유리

작업 Prompt 예시
텍스트 분류 "다음 문장에서 감정을 분류해줘: 나는 마라탕 맛이 그저 그랬어."
번역 "다음 한국어 단어를 영어로 번역해줘: 인공 눈물"
폐쇄형 질문 "대한민국의 수도는 서울이야?"
 
연구 논문

1. Language Models are Few-Shot Learners (2020, OpenAI)

  • GPT-3의 Zero-shot/One-shot/Few-shot 능력 최초 실험
  • Zero-shot 도 꽤 잘 작동함을 보여줌
  • 그러나 few-shot이 일반적으로 더 성능이 우수

2. Finetuned Language Models Are Zero-Shot Learners (2022)

  • 연구 개요: 대형 언어 모델의 제로 샷 학습 능력을 개선법 연구 + 자연어 지시로 60개 이상의 NLP 데이터셋에 대해 파라미터 모델을 미세 조정
  • FLAN 137B 모델: Instruction Tuning을 통해 Zero-shot 성능을 대폭 개선
  • 다양한 태스크(추론, 독해, 번역, QA 등)에서 SOTA 성능 달성

Instruction Tuning

  • 모델이 지시문을 잘 이해하도록 사전 학습 단계에서 미세 조정하는 기술
  • 다양한 작업 지침(instruction)을 반영하여 모델의 범용성 향상
  • 언어 모델의 제로 샷 능력을 향상하기 위한 기술
  • 모델 크기가 충분할떄 효과적이며 대형 언어 모델이 다양한 작업을 수행할 수 있도록 함
  • 다수의 작업 클러스터에서 instruction tuning 시 모델이 해보지 않은 작업에 대한 성능 향상

장점

  • 다양한 작업을 단일 모델에서 수행 가능
  • 지시문의 형식이 바뀌어도 적응 가능
  • ChatGPT도 Instruction Tuning + RLHF 조합으로 학습됨

RLHF (Reinforcement Learning from Human Feedback)

  • 사람의 피드백을 받아 모델의 응답 품질을 강화학습 방식으로 조정
  • 보상 예측 모델(reward predictor)을 만들어 좋은 응답을 유도
  • 모델의 유용성, 정중함, 안전성 향상
  • Instruction Tuning과 함께 적용되면 효과 극대화
  • ChatGPT의 응답 품질의 핵심 기술 중 하나

Few-Shot Prompting

  • 지시문 + 예시(demonstrations)를 함께 제공하여 작업을 수행
  • Zero-shot보다 복잡한 문제 해결에 유리(Zero-shot 은 복잡한 문제 수행에 한계가 있음)
  • 예시) Translate English to French! peppermint => menthe, poivrée cheese => fromage, cheese =>?
Prompt:
“”” 오늘의 일기를 작성해줘.
 아침, 점심, 저녁, 취침 전 시간에 해당하는 문장을 써줘.
 아래 예시를 참고해서 네 줄 만 써줘””” 

예시:
아침: "나는 오늘 날씨가 좋아서 산책을 했다. 그리고  친구를 만났다.”

점심:
저녁:
취침 전:

연구 논문

OpenAI (2020): Language Models are Few-Shot Learners (2020, OpenAI)

  • 모델의 파라미터 수가 충분히 많을수록, Few-shot 성능이 좋아짐
  • 175B 모델에서 극적인 개선 관찰

What Makes In-Context Learning Work? (2022)

  • 예시를 주면 항상 성능이 향상됨
  • 정답 레이블(Gold Label)이 있는 예시가 가장 좋지만, 랜덤 예시도 도움이 됨
  • 프롬프트 포맷: 입력-레이블 포맷 유지가 매우 중요

유형 설명
Format 없음 성능 급락
Format 있음 일관된 입력-출력 구조 유지 시 성능 상승
랜덤 레이블 사용 성능은 떨어지지만 예시 없는 것보다는 나음
  • Gold labels: 정답 라벨이 있는 예시를 사용한 경우 모델 성능이 가장 높음
    • Prompt: 와 대박이다. → 긍정  아 진짜 별로. → 부정  그 영화 그냥 그랬어. → 긍정  
      아우 끔찍해? → Output: 부정 (랜덤 라벨 예시라도 모델이 분류 맥락을 이해함)
  • Random labels: 랜덤 라벨이 있는 예시를 사용해도 예시가 없는 경우보다는 성능이 좋음
    • Prompt: 부정 아 이거 대박이다!, 와 정말 별로네 긍정, 그 영화 진짜 대박이네긍정,
      아우 끔찍해? → Output: 부정 (랜덤 라벨 예시라도 모델이 분류 맥락을 이해함)
  • No input-label format: 입력-라벨 형식을 유지하지 않은 경우 성능이 크게 저하
    • Prompt: 이 영화 어땠어? → Output: "부정"
      ※ 단순 질문만으로는 맥락이 부족해 잘못된 추론이 많음

한계

  • 마찬가지로 복잡한 추론 문제를 잘 하지 못함
zero-shot prompting: 

Q: 이 그룹의 홀수를 더하면 짝수가 된다. 
 15, 32, 5, 13, 82, 7, 1. 
A: 네, 이 그룹의 홀수들을 더하면 107이 되는데, 이는 짝수입니다. 

Few-shot prompting: 
이 그룹의 홀수들을 더하면 짝수가 됩니다: 4, 8, 9, 15, 12, 2, 1. 
답: 거짓입니다.
이 그룹의 홀수들을 더하면 짝수가 됩니다: 17, 10, 19, 4, 8, 12, 24. 
답: 참입니다. 
이 그룹의 홀수들을 더하면 짝수가 됩니다: 16, 11, 14, 4, 8, 13, 24. 
답: 참입니다. 
이 그룹의 홀수들을 더하면 짝수가 됩니다: 17, 9, 10, 12, 13, 4, 2. 
답: 거짓입니다. 
이 그룹의 홀수들을 더하면 짝수가 됩니다: 15, 32, 5, 13, 82, 7, 1. 
답:

Chain-of-Thought Prompting (CoT)

  • 모델이 복잡한 추론 과제를 수행할 수 있도록 단계별 사고 절차를 문장으로 유도하는 프롬프트
  • 산술, 논리, 상식, 씸볼릭 추론 등의 과제에 유리
  • 답이 나오는 과정에 대해 설명한 예시를 보여준다
  • 예: "Let's think step by step"

Standard Prompting -> Q: 사과가 23개 있고, 점심에 20개를 썼다. 남은 사과는? A: 정답은 3개입니다.

Chain-of-Thought Prompting -> Q: 사과가 23개 있다. 점심에 20개를 사용했다. 남은 사과는 23 - 20 = 3 정답은 3개입니다.

Prompt: 
이 그룹의 홀수의 합이 짝수가 된다: 4, 8, 9, 15, 12, 2, 1.
 A: 모든 홀수(9, 15, 1)를 더하면 25입니다. 
정답은 "거짓"입니다. 
이 그룹의 홀수의 합이 짝수가 된다: 17, 10, 19, 4, 8, 12, 24. 
A: 모든 홀수(17, 19)를 더하면 36입니다. 
정답은 "참"입니다. 
이 그룹의 홀수의 합이 짝수가 된다: 16, 11, 14, 4, 8, 13, 24. 
A: 모든 홀수(11, 13)를 더하면 24입니다. 
정답은 "참"입니다. 
이 그룹의 홀수의 합이 짝수가 된다: 17, 9, 10, 12, 13, 4, 2. 
A: 모든 홀수(17, 9, 13)를 더하면 39입니다. 
정답은 "거짓"입니다.
 이 그룹의 홀수의 합이 짝수가 된다: 15, 32, 5, 13, 82, 7, 1. 
A:
Standard Prompting 

모델 입력 (Model Input) 
Q: Roger는 테니스공 5개를 가지고 있습니다. 그는 테니스공 3개가 들어있는 캔을 2개 더 삽니다. Roger는 이제 테니스공을 몇 개 가지고 있습니까?
 A: 정답은 11입니다.
Q: 카페테리아에 사과가 23개 있었습니다. 그들은 20개를 점심을 만드는 데 사용했고 6개를 더 샀습니다. 이제 사과가 몇 개 있습니까?
 A: 정답은 27입니다. ❌

Chain-of-thought prompting 

Q: Roger는 테니스공 5개를 가지고 있습니다. 그는 테니스공 3개가 들어있는 캔을 2개 더 삽니다. Roger는 이제 테니스공을 몇 개 가지고 있습니까? 
A: Roger는 5개의 공으로 시작했습니다. 테니스공 3개가 들어있는 캔 2개를 더 샀습니다. 5 + 6 = 11개. 정답은 11입니다.
Q: 카페테리아에 사과가 23개 있었습니다. 그들은 20개를 점심을 만드는 데 사용했고 6개를 더 샀습니다. 이제 사과가 몇 개 있습니까?
Model Output 
A: 카페테리아에 원래 사과가 23개 있었습니다. 그들은 20개를 점심을 만드는 데 사용했습니다. 그래서 23 - 20 = 3개가 남았습니다. 그들은 6개를 더 샀기 때문에, 이제 3 + 6 = 9개가 있습니다. 정답은 9입니다.

연구결과 (Google, 2022)

  • GPT-3, PaLM 540B 등 대형 모델에서 CoT 사용 시 성능 급상승
  • PaLM 540B 기준:
    • Standard prompting: 18%
    • Chain-of-Thought: 57%

CoT의 한계

  • 파라미터 수가 적은 모델에서는 효과 미미
  • 사람처럼 사고 과정을 직접 프롬프트로 써줘야 하는 번거로움
  • 프롬프트 완성도가 낮으면 오히려 성능 저하

Zero-Shot Chain-of-Thought (Zero-Shot-CoT)

  • 예시 없이 단순히 “단계적으로 생각해 봐”라고 지시하여 추론을 유도 → Chain-of-Thought 스타일의 추론을 Zero-shot 방식으로 구현
  • Q: A jogger has 10 golf balls. Half of the balls are golf balls. "Let's think step by step."... ...

 연구 (2022, Kojima et al.)

  • Zero-shot-CoT 프롬프트만으로도 몇몇 태스크에서 few-shot 수준에 가까운 성능 도달
  • 주요 문장 템플릿 예시:
    • "Let's think step by step."
    • "First, "
    • "Let’s break this down"
  • 단순 지시문 하나로 모델의 추론 방식 전환 유도 가능

lets' think step by step

이 그룹의 홀수의 합이 짝수가 된다: 4, 8, 9, 15, 12, 2, 1.
 A: 모든 홀수(9, 15, 1)를 더하면 25입니다. 
정답은 "거짓"입니다. 
이 그룹의 홀수의 합이 짝수가 된다: 17, 10, 19, 4, 8, 12, 24. 
A: 모든 홀수(17, 19)를 더하면 36입니다. 
정답은 "참"입니다. 
이 그룹의 홀수의 합이 짝수가 된다: 16, 11, 14, 4, 8, 13, 24. 
A: 모든 홀수(11, 13)를 더하면 24입니다. 
정답은 "참"입니다. 
이 그룹의 홀수의 합이 짝수가 된다: 17, 9, 10, 12, 13, 4, 2. 
A: 모든 홀수(17, 9, 13)를 더하면 39입니다. 
정답은 "거짓"입니다.
 이 그룹의 홀수의 합이 짝수가 된다: 15, 32, 5, 13, 82, 7, 1. 
A:   

-- Let's think step by step.  
-- Answer in Korean.

Self-Consistency

  • CoT 방식에서 모델이 다르게 추론한 결과들 중에서 가장 많이 등장한 결과를 정답으로 선택하는 방식
  • 복잡한 산술 문제나 논리 문제에 효과적

적용 방식

  1. 동일 프롬프트를 여러 번 실행 (sampling)
  2. 추론 과정별로 다른 답 생성
  3. 가장 많이 등장한 결과를 최종 정답으로 선택

연구 결과 (Wang et al. 2022)

  • 수학 문제와 같이 논리성이 중요한 과제에서 정답률 대폭 향상
  • PaLM 540B 기준:
    • Greedy decode: 55.6%
    • Self-Consistency: 74.4% (majority voting 방식)
방식
설명
Greedy decode 한 번만 추론하여 즉시 결과 생성
Self-Consistency 여러 추론 결과 중 가장 일관된 것 선택 (투표)
Weighted sum 확률 기반으로 답안 가중합
 
실제 적용할 때는?
  1. Chain-of-Thought 프롬프트로 문제를 제시한다
  2. 동일 프롬프트를 5~10번 정도 반복 실행하여 다양한 추론 수집
  3. 가장 자주 등장한 응답을 최종 정답으로 사용한
아래 이메일 내용을 읽고 비즈니스와 관련하여 중요한 내용과 중요하지 않은 내용을 "IMPORTANT" or "NOT IMPORTANT" 를 구분해줘.  그리고 아래처럼 대답해줘. 

Response template:
{Important} : {            }
{Not Important} :  {                               } 
Let's think step by step. 

##이메일 

안녕하세요, 귀사의 시스템에서 중요한 보안 취약점을 발견하게 되어 이와 관련된 사항을 공유하고자 합니다. 이 취약점은 악용이 쉽지 않지만, 이를 통해 모든 사용자 데이터에 접근할 수 있는 가능성이 있습니다. 이에 대한 증거로 개념 증명 파일을 첨부했으니 확인해 주시기 바랍니다. 이 문제는 매우 심각하며, 조속한 시일 내에 해결해 주실 것을 요청드립니다. 해당 취약점을 통해 발생할 수 있는 잠재적 위협을 방지하기 위해, 귀사의 보안 팀에서 신속하게 대응해 주시기를 바랍니다. 추가적인 정보가 필요하거나, 제가 더 도울 수 있는 부분이 있다면 언제든지 연락해 주시기 바랍니다. 빠른 시일 내에 문제 해결을 부탁드리며, 이러한 문제를 미리 발견하게 되어 다행이라고 생각합니다. 귀사의 보안 강화를 위해 함께 협력할 수 있기를 기대합니다. 감사합니다.
 
한계
  • 복잡한 추론 작업을 해결 할 때 비용이 많이 듦(토큰 수가 많아짐)
  • 복잡한 추론을 해결하려면, 상당한 양의 훈련 데이터 필요. 모델이 일관된 응답을 효과적으로 생성하기 위해 다양한 추론 패턴을 학습해야 하기 떄문이다.
  • 프롬프트가 명확하지 않거나 간결하지 않을때, self-consistency의 기멉 성능이 저하된다
728x90