https://arxiv.org/pdf/2406.11695


Abstract:

  • 이 논문은 Multi-stage 환경에서 언어 모델들이 여러 프롬프트와 결합해서 하나의 파이프라인으로 이뤄져있을 때 각 모듈들의 최적화를 텅해 최종적인 작업의 성능을 올리는 방법을 다룸.
  • Language Model Programs (LM Programs) 이란 한번의 언어 모델 호출로 응답을 내는게 아닌 여러 단계로 구성된 모듈 식 파이프라인을 말함.
    • 예) 먼저 텍스트에서 특정 정보를 추출한 뒤(extraction), 이후 이를 요약(summarization)하거나 다시 다른 생성(generation) 작업을 수행하는 식으로, 여러 단계가 연결된 파이프라인.
  • 그래서 모듈별 프롬프트를 어떻게 동시에 최적화할까? 라는 문제가 등장하고 이를 해결하기 위해 MIPRO 라는 최적화 기법을 제안함.
  • MIPRO:
    • 멀티 모듈로 구성된 LM 프로그램에서 모듈별 Instruction 과 데모 (few-shot demonstartion) 을 동시에 최적화하기 위해 제안된 프롬프트 기법임.
    • 핵심 목표는 다운스트림(downstream) 성능(최종 지표)을 직접 최대화한다는 점이며, 모듈 단위의 라벨/그래디언트가 주어지지 않는 상황에서도 효율적으로 모듈별 프롬프트를 업데이트하도록 설계됨.
    • MIPRO는 크게 (1) 프롬프트 제안(proposal) 방법, (2) 프롬프트 평가(optimization) 방법, (3) 메타 최적화(meta-optimization) 로 구분됨:
      • (1) 프롬프트 제안 (Program-and-data-aware Proposals):
        • 모듈별로 수행해야 할 작업(Task)을 정확히 반영한 인스트럭션을 구성함.
        • 예를 들어 “이 모듈은 텍스트에서 사람 이름을 추출만 해야 한다”와 같이, 해당 모듈의 목적에 부합하는 핵심 지침을 도출한다.
        • 그 다음 작업할 데이터의 특성(예: 특정 도메인 용어, 문체 등)을 고려해 인스트럭션과 예시를 작성함.
        • 다음으로 초기에는 단순한 Heuristic(“가장 기본적인 텍스트 설명 + 예시”)부터 시작할 수 있고, 이후에는 LM 스스로가 다양한 변형(예: 단어 표현 바꾸기, 예시 변형 등)을 시도해 새로운 프롬프트 후보를 제안함.
      • (2) 프롬프트 평가 & 최적화 (Stochastic Mini-batch Evaluation)
        • 각 모듈에서 새롭게 제안된 인스트럭션과 데모(예시)를 사용하여 파이프라인을 구성한 뒤, 일부 데이터(mini-batch)에 대해서만 실행함. (빠른 실행/평가를 위해서)
        • 최종 단계의 결과물을 타겟 지표(accuracy, F1 등)와 비교하여 성능을 측정함.
        • 여러 모듈의 프롬프트를 각각 조합하여 실행해 본 뒤, 그 결과 점수를 축적한다.
        • 이렇게 얻은 점수를 기반으로 유망한 프롬프트 쪽으로 업데이트 해나감.
        • 미니 배치 스코어를 반복적으로 관찰하면서, “특정 프롬프트 조합이 어떤 성능을 낸다”는 함수 관계를 점차 학습함.
      • (3) 메타 최적화 (Meta-optimization):
        • 프롬프트 그 자체만이 아니라, “프롬프트 후보를 생성하는 방식”도 함께 최적화함.
        • 초기에 LM이 “프롬프트를 변형하는 규칙”을 단순히 적용했다면, 점차 “어떤 변형이 효과적인가”를 학습하면서 제안 자체가 고도화될 수 있음.

+ Recent posts