관리 메뉴

너와 나의 스토리

[LLM] 프롬프트 엔지니어링 - 인젝션 공격, 제로샷/퓨샷, CoT, Self-Consistency, ToT 본문

Data Analysis/LLM

[LLM] 프롬프트 엔지니어링 - 인젝션 공격, 제로샷/퓨샷, CoT, Self-Consistency, ToT

노는게제일좋아! 2024. 6. 24. 09:01
반응형

프롬프트 엔지니어링(Prompt Engineering)

  • LLM이 정확하고 유용한 출력을 반환하도록 유도하는 입력(프롬프트)를 만드는 것.
  • 프롬프트 엔지니어링에는 언어의 뉘앙스, 작업 중인 특정 도메인, LLM의 능력과 한계를 이해하는 기술이 필요하다.

 

 

언어 모델에서 정렬(Alignment)

  • 정렬: 모델이 사용자가 예상한 것과 일치하는 방식으로 입력 프롬프트를 이해하고 답변하는 것.
  • 표준 언어 모델링에서 모델은 선행 단어의 맥락을 기반으로 다음 단어나 단어의 시퀀스를 예측하도록 훈련되었으나, 이 접근 방식으로만은 정렬할 수 없음. 
  • 추가적인 정렬 기능과 함께 개발된 언어 모델을 사용하면 질문-답변이나 언어 번역과 같은 애플리케이션을 더 유용하게 만들 수 있다.
    • 예: RLAIF

 

프롬프트 엔지니어링 방법

  • 간결하면서도 명확하게(구체적으로) 명령하라.
  • 제로샷/퓨샷 프롬프팅
  • 출력 구조화
    • 구조화된 형식으로 LLM 출력 유도.
  • 페르소나 지정
    • 모델이 스타일이나 말투를 채택할 수 있도록 한다.
    • 예: 가게 점원이라 생각하고 질문에 답하세요.

 

제로샷 러닝과 퓨샷 러닝

  • 제로샷 러닝(Zero-shot Learning)
    • 어떠한 데모나 예제를 제공하지 않고 지침을 직접 LLM에게 전달하는 것. 
  • 퓨샷 러닝(Few-shot Learning)
    • 명시적인 치침 없이 작업과 관련된 몇 가지 입력-출력 예제만을 LLM에 제공.
    • 문제의 맥락과 애매한 차이를 이해하는 데 도움을 주는 강력한 기술.

 

프롬프트 인젝션(Prompt Injection) 공격

  • 공격자가 LLM에 제공된 프롬프트를 조작하여 악의적인 결과를 생성하려고 할 때 사용하는 공격 유형.
  • 프롬프트 인젝션 공격을 방지하기 위한 방법
    • 너무 짧은 프롬프트를 피하기
      • 프롬프트가 길수록 파악하기 힘들다.
    • 독특하고 복잡한 프롬프트 구조 사용
      • 특정 도메인 지식을 통합하는 것이 포함될 수 있다.
    • 공격이 LLM에 도달하기 전에 필터링하고, 후처리 단계에서 민감한 정보를 포함한 답변을 필터링하기
    • 프롬프트를 정기적으로 업데이트하고 수정하기

 

NLI를 이용해서 유효성 검사 파이프라인 만들기

  • Meta AI에 의해 만들어진 LLM BART를 활용하여 유효성 검사 파이프라인을 만들 수 있다.
  • 이 BART는 Mutlti-Genre Natural Language Inference(MNLI) 데이터셋으로 학습되어 LLM에서 생성된 출력에서 공격적인 행동을 감지하고 필터링하는데 사용된다.
  • BART-MNLI는 NLI를 사용하여 두 텍스트 조각 사이의 관계를 이해할 수 있는 강력한 LLM이다.

 

배치 프롬프팅(Batch Prompting)

  • LLM이 일괄적으로 추론을 실행
  • 여러 샘플을 하나의 프롬프트로 그룹화하여 LLM이 동시에 여러 답변을 생성하게 하는 것.

 

프롬프트 체이닝(Prompt Chaining)

  • 더 복잡하거나 여러 단계의 작업을 완료하기 위해 하나의 LLM 출력을 다른 LLM의 입력으로 사용하는 것을 의미합니다. 

 

제로샷 프롬프팅과 퓨샷 러닝

  • 제로샷 프롬프팅
    • 어떠한 데모나 예제를 제공하지 않고 지침을 직접 LLM에게 전달하는 것. 
  • 퓨샷 러닝
    • 명시적인 치침 없이 작업과 관련된 몇 가지 입력-출력 예제만을 LLM에 제공

 

CoT 프롬프팅

  • 모델에 중간 단계를 제공해 결정적인 답변으로의 추론을 촉진하기 위한 것. 
  • CoT에는 제로샷과 푸샷 두 가지 변형이 있다.
    • 제로샷 CoT: "단계별로 생각해보라"라는 지시문을 프롬프트에 추가한다면, LLM은 문제를 논리적으로 생각하도록 장려된다. (답을 추측하고 나중에 정당화하는 것이 아니라) -> 제로샷 사고 체인
    • 퓨샷 CoT: 추론이 결정되기 전에 LLM이 추론 과정을 설명하도록 장려하기 위한 몇 가지 샘플을 제공
  • CoT 프롬프팅이 더 정확한 결과를 가져올 수 있음이 입증됐지만, 이 성능 향상은 모델의 크기와 비례하며, 작은 모델에서는 개선이 미미하거나 부정적인 경우도 있다.

 

자기 일관성 (Self-Consistency)

  • 모델은 질문에 대해 여러 후보 답변을 생성한다. 
  • 이들은 서로 비교되고 가장 일관된 혹은 가장 빈번한 답변이 최종 출력으로 선택된다.

 

ToT

  • 주어진 프롬프트에 대해 여러 문제 해결 단계나 접근 방식을 생성한 다음, AI 모델을 사용해 그것들을 평가한다.
  • 평가는 해결책이 문제에 적합한지에 대해 모델이 판단한 것을 기반으로 한다.
  • 단계:
    • 솔루션 생성
    • LLM에게 솔루션 평가하도록 요청

 

출처

- [쉽고 빠르게 익히는 실전 LLM]

- [Large Language Models 쉽고 빠르게 익히는 실전 LLM]

반응형
Comments