Prompt Technique - Decomposition

김혁준·2025년 2월 13일

prompt-engineering

목록 보기
8/12

Decomposition이란?

  • 복잡한 문제를 더 간단한 하위 문제로 분할해서 모델이 처리하는 기법
  • 큰 모델에서만 해결할 수 있는 문제를 작은 모델에서도 해결할 수 있도록 해준다
  • 분해해서 처리하는 경우 성능이 약 24%정도 향상됨
  • 모델에 맞게 분해하는 것이 중요함
  • Decomposition 기법의 주요 오류는 하위 문제에서 발생한 오류가 전파되는 것
    --> 오류 1) 문맥에서 잘못된 정보를 추출하는 문제
    --> 오류 2) 모든 정보를 수집하지 못하고 누락이 발생하는 문제
  • 문제의 적절한 분해 수는 성능에 도움이 됨
  • 문제를 분해 하기에는 난해한 질문도 있음

Least-to-Most Prompting

  • CoT 프롬프트에서 해결하기 어려운 추론 문제를 풀기 위해 제안된 기법
  • 복잡한 문제를 간단한 순차적인 하위 문제들로 분해하 후 순차적으로 해결하는 기법
  • 이전에 푼 하위 문제가 다음 하위 문제를 푸는데 도움을 주는 방식
  • Least-to-Most Prompting은 교육 심리학에서 가져온 개념
  • 학생이 최소한의 도움으로 시작해, 어려움이 생길 때 점진적으로 도움을 늘리는 방식
  • 하위 문제로 분해하고 순차적으로 해겷하는 기법
  • 이 기법만으로도 모델 개선효과를 낸다
  • 이 기법의 오류는 중간 과정에서 하위 문제와 현재 문제를 연결할 때 주로 발생한다
  • 서로 다른 도메인에서는 이 프롬프트를 일반화해서 사용하기 어려움
  • 동일한 도메인 내에서도 일반화하기 어려움

Decomposed Prompting

  • Least-to-Most Prompting과 유사한 기법. 보다 하위 작업 처리에 최적화된 기법이다
  • 특정 하위 작업을 위해 미리 설계한 프롬프트를 재사용하는 기법
  • 특정 하위 작업 처리를 위한 별도 프로그램을 모듈식으로 활용하는 기법
  • 각 하위 작업 처리를 특정 LLM이나 Agent에 위임할 수 있다.
  • Decomposer는 복잡한 작업을 처리하기 위해 프로그램을 생성한다.
  • 프로그램은 하위 작업의 함수,입력,결과를 순서대로 나열한 것이다
  • 프로그램의 하위 작업들은 순서대로 컨트롤러가 알아서 처리한다.
  • 복잡한 문제를 하위 문제로 분할하고 그 하위 작업을 최적화 시키는 기법
  • 계층적 분해 뿐 아니라 재귀적인 분해를 통해서도 해결하는게 가능함
  • Least-to-Most Prompting보다 확장성이 있다
  • 하위 문제 분해와 처리에 필요함 프롬프트를 모두 설계해야함

Tree of Thought

  • 문제 해결을 위해 다양한 해결 전략을 탐색하도록 만드는 기법

  • ToT는 트리처럼 여러 생각을 탐색할 수 있다

  • LLM과 CoT의 추론 문제의 한계를 극복하기 위해 나온 기법

  • 이미 뛰어난 성능을 보이는 작업에서는 이 기법을 적용할 필요가 없음

  • 다양한 생각을 탐색하는 기법이니 많은 자원 소모가 발생할 수 있음

  • 작업에 맞게 생각을 생성하고 평가하는 프롬프트를 설계해야 함

ToT Framework

  • 문제 해결 과정을 어떻게 생각 단계로 분해할 것인가? -> 생각 분해
  • 각 중간 생각 상태에서 다음 생각은 어떻게 생성할 것인가? -> 생각 생성기
  • 생각들은 어떻게 평가할 것인가? -> 상태 평가기
  • 생각은 어떻게 탐색할 것인가? -> 탐색 알고리즘

Plan-ans-solve

  • 문제를 해결하기 전에 먼저 계획을 수립하고 세운 계획에 따라 하위 작업을 수행하는 기법
  • Zero-shot CoT 기법처럼 간단하게 프롬프트 지침만으로 적용해볼 수 있음
  • Zero-shot CoT 기법의 문제점인 계산 오류와 단계 누락 오류를 해결하기 위해 나옴
    --> 계산 오류 : 잘못된 계산으로 인해 오답을 유도하는 오류
    --> 단계 누락 오류 : 여러 단계가 필요한 경우 중간 추론 단계가 누락되어서 발생하는 오류
    --> 의미 오해 오류 : 문제를 잘못 이해하거나 추론의 일관성이 부족해 발생하는 오류
  • PS 프롬프트 기법은 문제를 이해하고 하위 작업으로 나눈 뒤, 단계별로 수행하는 방법
  • Zero-shot CoT 처럼 프롬프트에 문구를 추가하는 것만으로도 적용할 수 있는 기법
  • 산술 추론, 상식 추론과 같은 분야에서 Zero-shot CoT보다 일관되게 우수한 성능을 보임
  • 기호적 추론 분야에서 Few-shot CoT보다 우수한 성능을 보임

Skeleton-of-Thought

  • LLM이 최종 응답을 완료하는데 걸리는 응답 시간을 줄이기 위해 나옴
  • 인간의 글쓰기 방식을 참고해서 제안된 기법
  • 인간은 글을 쓸 때 전체적인 구조나 뼈대를 잡은 후 각 부분을 채워나가는 식으로 글을 작성
  • LLM이 응답의 구조를 먼저 만든 뒤 각 부분을 병렬로 처리해 내용을 완성시킴
  • 두 가지 단계로 구성됨
    --> 1) Skeleton 단계 : 답변의 골격 또는 주요 포인트들을 생성하는 단계
    --> 2) Point-Expanding 단계 : 각 골격 또는 포인트를 확장해서 응답을 완료하는 단계
  • 모든 포인트가 응답이 완료되면 최종 응답이 만들어짐
  • SoT는 최종 답변을 만들기 위해 독립적인 포인트들로 분리해서 병렬로 처리하는 기법
  • 응답 시간을 크게 단축시킬 수 있다
  • 독립적인 포인트들로 분리시킬 수 없는 질문도 있다
  • SoT를 실용적으로 구현하기 위해서는 별도의 라우터 모듈을 적용해야 할 수 있다
  • 라우터 모둘의 구현은 LLM+라우팅 프롬프트 or 작은 언어 모델을 라우터로 훈련
  • 현재의 SoT는 독립적인 포인트들로 분리될 때만 사용 가능
  • Graph-of-Thought를 이용해서 포인트들을 그래프로 구조화해서 처리하는 것도 가능

0개의 댓글