Program of Thoughts Prompting (KO)
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]. 모델은 «연산자»가 아닌 «프로그래머» 역할을 수행한다.
작동 과정은 다음과 같다:
- 모델이 문제(예: 텍스트로 된 수학 문제)를 입력으로 받는다.
- 텍스트 추론 대신 해당 문제를 풀기 위한 프로그래밍 언어 스크립트(예: Python)를 생성한다.
- 생성된 코드가 외부 인터프리터로 전달되어 실행된다.
- 코드 실행 결과가 최종 답변이 된다.
이처럼 복잡하고 정밀한 연산(큰 수를 다루는 작업, 특수 라이브러리 호출)은 모델 자체가 아닌 프로그램이 수행하므로, 결정론적 특성과 높은 정확도가 보장된다[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-shot 및 zero-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.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]
- ↑ Wei, J. et al. «Chain-of-Thought Prompting Elicits Reasoning in Large Language Models». arXiv:2201.11903, 2022. [2]
- ↑ «Program of Thoughts: Everything You Need to Know». The Ministry of AI. [3]
- ↑ 4.0 4.1 «Program of Thoughts Prompting: Enhancing Accuracy in Reasoning and Computation». Learn Prompting. [4]
- ↑ «PAL (Program-Aided Language Models)». Prompt Engineering Guide. [5]