Program of Thoughts Prompting (KO)

From Systems analysis wiki
Jump to navigation Jump to search

Program of Thoughts Prompting (PoT, 영어: «생각의 프로그램») — 대형 언어 모델(LLM)을 위한 prompt 엔지니어링 기법으로, 모델이 문제 풀이의 중간 단계로 텍스트 설명 대신 프로그램 코드를 생성하는 방법이다[1]. 이 접근법은 논리적 추론과 수학적 연산을 분리할 수 있게 해준다: 언어 모델은 프로그램(예: Python) 형태로 풀이 계획을 수립하고, 실제 연산은 외부의 결정론적 코드 인터프리터가 수행한다.

이 기법은 2022년 웬후 천(Wenhu Chen)을 중심으로 한 연구팀이 제안했으며, 주로 수치적·논리적 성격의 문제(수학 문제, 재무 계산)를 대상으로 한다. 이러한 문제들은 Chain-of-Thought와 같은 기존 추론 기법이 연산 정확도 면에서 어려움을 겪던 영역이다[1].

배경 및 개념

Chain-of-Thought의 한계

PoT 기법은 Chain-of-Thought (CoT)(사고의 연쇄) 아이디어를 발전시킨 것으로, CoT는 LLM의 논리적 추론 능력을 향상시키기 위한 주요 접근법이었다[2]. CoT 방식에서 모델은 자연어로 일련의 중간 단계를 생성한다. 추론 품질을 크게 향상시켰음에도 불구하고, 이 접근법에는 근본적인 한계가 있다: 모델이 논리와 연산 모두를 텍스트 형태로 수행한다는 점이다. 언어 모델은 본질적으로 정확한 계산기가 아니기 때문에, 이로 인해 부정확한 산술 연산, 반올림 오류 및 기타 부정확성이 자주 발생한다.

Program of Thoughts의 핵심 아이디어

PoT의 핵심 아이디어는 연산을 외부 시스템(코드 인터프리터)에 위임하고, 언어 모델에게는 실행 가능한 프로그램 형태로 풀이 계획을 형식화하는 것만 요구하는 것이다[1]. 모델은 «연산자»가 아닌 «프로그래머» 역할을 수행한다.

작동 과정은 다음과 같다:

  1. 모델이 문제(예: 텍스트로 된 수학 문제)를 입력으로 받는다.
  2. 텍스트 추론 대신 해당 문제를 풀기 위한 프로그래밍 언어 스크립트(예: Python)를 생성한다.
  3. 생성된 코드가 외부 인터프리터로 전달되어 실행된다.
  4. 코드 실행 결과가 최종 답변이 된다.

이처럼 복잡하고 정밀한 연산(큰 수를 다루는 작업, 특수 라이브러리 호출)은 모델 자체가 아닌 프로그램이 수행하므로, 결정론적 특성과 높은 정확도가 보장된다[3].

구현 및 라이브러리 활용

PoT 구현에서 핵심은 LLM이 정확하고 효율적인 코드를 생성할 수 있는 능력이다. 이 접근법의 저자들은 프로그래밍 과제에 특별히 훈련된 OpenAI Codex 모델을 활용했다. PoT 접근법은 모델이 외부 라이브러리를 활용할 수 있게 하여 풀 수 있는 문제의 범위를 크게 확장한다. 예를 들어, 기호 수학 문제를 풀 때 모델은 방정식의 해석적 풀이를 위해 SymPy 라이브러리를 활용하는 코드를 생성할 수 있으며, 이는 순수 언어 기반 방법의 능력을 넘어서는 것이다[1].

PoT를 위한 prompt는 두 가지 방식으로 제공될 수 있다:

  • Few-shot: prompt에 «질문 — 프로그램 풀이» 쌍의 여러 예시가 포함된다.
  • Zero-shot: prompt에 예시 없이 과제를 설명하는 지시만 제공된다.

zero-shot 방식에서도 PoT는 모델이 생성해야 할 명확한 구조 덕분에 높은 효율을 보인다[4].

결과 및 효율성

PoT 기법은 다단계 수치 추론이 필요한 문제에서 풀이 품질의 상당한 향상을 입증했다. 원저 논문에서는 GSM8K, AQUA, SVAMP, FinQA 등 8개의 수학 및 재무 문제 데이터셋에서 테스트되었다.

  • 정확도 향상: 모든 경우에서 PoT가 기준 접근법인 CoT를 능가했다. 평균적으로 정답률에서 약 ~12%의 상대적 향상이 달성되었다.
    • 널리 사용되는 수학 데이터셋 GSM8K에서 PoT를 적용한 모델의 정확도는 71.6%에 달했으며, CoT의 경우 63.1%였다.
    • 재무 문제에서의 향상은 더욱 두드러졌다: FinQA 데이터셋에서 정확도가 CoT의 40.4%에서 PoT의 64.5%로 향상되었다[1].
  • Self-Consistency와의 조합: PoT의 효율성은 자기일관성(self-consistency) 기법과 결합하면 더욱 향상될 수 있다. 이 경우 모델은 여러 독립적인 프로그램 풀이를 생성하고, 최종 답변은 실행 결과들의 «다수결 원칙»으로 선택된다. self-consistency와 결합된 PoT는 발표 당시 테스트된 모든 수학 및 재무 benchmark에서 새로운 최고 성능(state-of-the-art)을 기록했다[1].

장점 및 한계

장점

  • 연산 정확도: 가장 큰 장점이다. 외부 인터프리터에 의한 산술 연산 수행은 LLM에 내재된 반올림 오류와 부정확성을 제거한다.
  • 라이브러리 활용 가능성: 모델이 강력한 외부 라이브러리(예: 기호 연산, 통계 분석, 날짜 처리용)를 활용하여 이전에는 불가능했던 문제들을 풀 수 있다.
  • 해석 가능성 및 디버깅: 프로그램 코드는 풀이 논리의 형식적·구조적 표현으로, 자연어 추론에 비해 검증과 디버깅이 용이하다.
  • 범용성: 이 접근법은 few-shotzero-shot 방식 모두에서 효과적이며, 다양한 도메인(수학, 재무, 과학)에 적용 가능하다.

한계

  • 보안: 외부 인터프리터에서 생성된 코드를 실행하면 보안 위험이 발생한다. 모델이 이론적으로 악성 코드(예: 파일 삭제)를 생성할 수 있다. 따라서 PoT의 실용적 적용은 실행 환경의 격리(sandbox)와 세심한 코드 필터링을 필요로 한다[4].
  • 제한된 적용 가능 영역: 이 기법은 알고리즘 형태로 명확하게 형식화할 수 있는 문제에 가장 효과적이다. 언어의 뉘앙스 이해, 상식, 또는 창의적 접근이 필요한 문제에는 PoT를 직접 적용하기 어렵다.
  • 코드 품질 의존성: 기법의 효율성은 LLM이 구문적으로 올바르고 논리적으로 정확한 코드를 생성하는 능력에 직접적으로 의존한다.

관련 접근법

코드를 활용하여 LLM의 추론을 향상시키는 아이디어는 다른 유사한 접근법들에서도 발전되었다.

  • Program-Aided Language Models (PAL): PoT와 거의 동시에 제안된 기법으로, 마찬가지로 문제 풀이에 Python 코드 생성을 활용한다[5]. 개념적으로 PAL과 PoT는 매우 유사하며, «코드를 통한 추론» 전략의 효과를 확인해준다.
  • Tree of Thoughts (ToT): 더 복잡한 기법으로, 풀이 단계들의 «트리»를 생성하고 탐색할 것을 제안하며, 이는 선형적인 «사고의 연쇄» 아이디어를 발전시킨 것이다. PoT는 이 트리의 노드 내에서 가설 검증에 활용될 수 있다.

참조

  • Program of Thoughts Prompting에 관한 원저 학술 논문
  • Learn Prompting 포털의 PoT 가이드

문헌

  • Chen, W. et al. (2023). Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks. arXiv:2211.12588.
  • Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Gao, L. et al. (2022). PAL: Program-Aided Language Models. arXiv:2211.10435.
  • Cobbe, K. et al. (2021). Training Verifiers to Solve Math Word Problems. arXiv:2110.14168.
  • Chen, Z. et al. (2021). FinQA: A Dataset of Numerical Reasoning over Financial Data. arXiv:2109.00122.
  • Zhu, F. et al. (2021). TAT-QA: A Question Answering Benchmark on a Hybrid of Tabular and Textual Content in Finance. arXiv:2105.07624.
  • Patel, A. et al. (2021). Are NLP Models Really Able to Solve Simple Math Word Problems? (Introducing SVAMP). arXiv:2103.07191.
  • Xu, F. et al. (2023). RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation. arXiv:2310.04408.
  • Mu, J. et al. (2023). Learning to Compress Prompts with Gist Tokens. arXiv:2304.08467.

각주

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Chen, W. et al. «Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks». arXiv:2211.12588, 2023. [1]
  2. Wei, J. et al. «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models». arXiv:2201.11903, 2022. [2]
  3. «Program of Thoughts: Everything You Need to Know». The Ministry of AI. [3]
  4. 4.0 4.1 «Program of Thoughts Prompting: Enhancing Accuracy in Reasoning and Computation». Learn Prompting. [4]
  5. «PAL (Program-Aided Language Models)». Prompt Engineering Guide. [5]