brunch

You can make anything
by writing

C.S.Lewis

by 박태웅 Aug 19. 2023

GPT-4를 사용한 어려운 수학 단어 문제 해결

코드 기반 자체 검증(CSV)을 갖춘 코드 인터프리터

*기계번역한 뒤 교정/편집했습니다. 원본을 꼭 참조해 주세요!


https://arxiv.org/abs/2308.07921?fbclid=IwAR3LxqwerUuTnH-9ruKuZyTfD-fryJJhi1Vrg_yPZHgnuLA72pq1qsIGBWQ


{aojunzhou, wangk.gm, sichunluo2, zmjd11]@gmail.com

luzimu@mail.ustc.edu.cn shiwk20@mails.tsinghua.edu.cn

lingi.song@cityu.edu.hk hslidee.cuhk.edu.hk


초록

GPT-4 및 PaLM-2와 같은 대규모 언어 모델(LLM)의 최근 발전은 수학 추론 문제를 해결하는 데 상당한 발전을 가져왔습니다. 특히 OpenAl의 최신 버전인 GPT-4 코드 인터프리터는 까다로운 수학 추론 문제에서 놀라운 성능을 보여줍니다,

이 논문에서 우리는 GPT-4 코드 인터프리터의 코드 사용 빈도에 대한 다양한 제약 조건을 도입하여 코드의 추론 능력 향상에 미치는 영향을 살펴봅니다.

코드 인터프리터의 성공은 주로 코드 생성 및 실행, 코드 실행 결과 평가, 그리고

불합리한 출력을 받았을 때 해결책을 수정하는 강력한 기술 덕분입니다. 이러한 인사이트를 바탕으로 GPT-4 코드 인터프리터의 수학적 추론 잠재력을 더욱 강화하기 위해 새롭고 효과적인 프롬프트 방법인 명시적 코드 기반 자체 검증(CSV)을 제안합니다. 


이 방법은 GPT-4 코드 인터프리터에 제로 샷 프롬프트를 사용하여 코드를 사용하여 답을 자체 검증하도록 유도합니다. 검증 상태가 "거짓"으로 등록되는 경우, 모델은 수학 연산 중 오류를 수정하는 방식과 유사하게 자동으로 솔루션을 수정합니다. 또한, 검증 결과의 상태가 솔루션의 신뢰도를 나타내므로 다수결 투표의 효율성을 향상시킬 수 있습니다. GPT-4 코드 인터프리터와 CSV를 사용하면 수학 데이터 세트에서 놀라운 제로샷 정확도(53.9% → 84.3%)를 달성할 수 있습니다.


1 소개

대규모 언어 모델(LLM)(브라운 외., 2020; OpenAI, 2023; 아닐 외., 2023)은 다음과 같은 다양한 작업들, 상식 이해 및 코드 생성과 같은 다양한 작업에서 인상적인 성공을 거두었습니다.

그러나 수학적 추론에서는 여전히 부족하여 종종 무의미하거나 부정확한 결과를 도출하고 복잡한 계산에 어려움을 겪습니다. 이러한 문제를 해결하기 위한 이전의 시도로는 생각의 사슬(Chain-of-Thought, CoT)(Wei 외. 2022) 프레임워크가 있습니다. 추론 과정에서 중간 단계를 생성하여 논리 추론 능력을 향상시키는 프레임워크입니다. 또한 PAL(Gao et al., 2023)은 파이썬 프로그래밍 인터프리터를 사용하여 계산 정확도를 향상시킵니다.


최근의 발전으로 OpenAI는 GPT-4의 개선된 버전, 즉 'GPT-4코드 인터프리터' 또는 논리적인 자연어 추론에 능숙한 GPT4-Code를 발표했습니다. 이는 단계별 파이썬 코드와 함께 제공됩니다. 특히 코드를 점진적으로 생성하고 실행한 후 실행된 코드의 출력을 다시 LLM에 제시할 수 있습니다. 

자연어 출력에 코드 생성 및 실행 기능을 추가하면 수학적 추론 문제를 푸는 데 유망한 결과를 얻을 수 있습니다. 초기 실험에 따르면 GPT4-Code는 까다로운 수학 데이터 세트에서 69.7%라는 인상적인 제로 샷 정확도를 달성했으며(Hendrycks et al., 2021), 이는 GPT-4의 성능(42.2%)보다 27.5%나 크게 개선된 수치입니다.


GPT4-Code는 수학 문제 해결에 능숙함을 보여 왔지만, 수학적 문제 해결 능력을 이해하고 더욱 향상시키는 데 초점을 맞춘 체계적인 분석은 현저히 부족했습니다. GPT4-Code와 이전 버전인 GPT-4의 가장 큰 차이점은 코드를 자동으로 생성하고 실행할 수 있다는 점입니다. 


따라서 이 백서에서는 특정 코드 제약 프롬프트를 사용하여 GPT4-Code의 코드 생성 및 실행 메커니즘을 조사하는 파일럿 실험을 소개합니다. 분석 결과, GPT4-Code의 강력한 성능은 코드 생성 및 실행 능력뿐만 아니라 코드 실행의 피드백을 기반으로 문제 해결 전략을 조정하는 능력, 즉 셀프 디버깅(표 7과 표 8 참조)에도 기인한다는 사실이 드러났습니다. 코드 생성이 단계적으로 추론을 발전시키고 코드 실행 오류 후 셀프 디버깅을 수행하기 때문에 코드 사용 빈도가 증가합니다. 따라서 코드 사용 빈도라는 개념을 도입하여 이러한 고유한 프롬프트 전략을 차별화하여 코드 제약 프롬프트(code-constrained prompts)가 수학적 문제 해결을 위한 GPT4- 코드에 미치는 영향을 정량적으로 분석할 수 있습니다.


단계별 코드 생성 및 셀프 디버깅 메커니즘은 수학적 문제 해결에서 코드의 중요한 역할을 강조합니다. 그럼에도 불구하고 셀프 디버깅 메커니즘은 생성된 코드의 각 단계만 검증할 뿐, LLM의 수학 문제 해결 능력에 매우 중요한 것으로 입증된 추론 단계와 최종 답에 대한 검증이 부족합니다(Cobbe 외., 2021; Lightman 외., 2023; Weng 외., 2023).


따라서 우리는 다른 모델이나 사용자의 추가 도움 없이 자동으로 솔루션을 검증하고 수정할 수 있도록 GPT4 코드의 코드 생성 및 자체 디버깅 메커니즘을 완전히 활용할 수 있는가라는 질문을 던집니다.


이 질문에 답하기 위해 우리는 명시적 코드 기반 자체 검증(CSV)이라는 간단하면서도 효과적인 프롬프트 기법을 제안합니다

이 기법은 GPT4-코드가 답을 검증하는 추가 코드를 생성하고 추론에 결함이 있는 경우 추론 단계를 조정하도록 유도합니다. 검증을 위해 외부 언어 모델에 의존하는 기존 방식(Lightman 외., 2023; Cobbe 외., 2021)과 달리, 저희의 접근 방식은 GPT4-Code 고유의 강점을 활용합니다. 


이 접근 방식은 두 가지 주요 이점을 제공합니다: 

(1) 검증 결과 답변이 거짓으로 표시되면 GPT4-Code는 이전 솔루션을 수정하고 개선된 대안을 제공할 수 있습니다. 

(2) 참으로 확인된 솔루션은 인간의 문제 해결과 유사하게 더 신뢰할 수 있는 경향이 있습니다. 그러나 솔루션이 거짓으로 자체 검증되더라도 솔루션을 직접 포기하지는 않습니다. 대신, 답변의 빈도에만 의존하는 대신 코드 기반 솔루션 검증 결과를 통합하는 가중 다수결 투표 전략을 제안합니다. 솔루션의 다양한 신뢰도 수준을 반영하여 검증 상태에 따라 솔루션에 서로 다른 가중치를 부여합니다. 파일럿 실험의 코드 사용 빈도 분석에 따라 명시적인 코드 기반 자체 검증 프롬프트는 코드 사용 증가와 함께 GPT4-Code의 수학적 문제 해결 정확도를 높였습니다.


경험적 연구를 통해, 제안된 프레임워크가 GPT4-Code를 사용하는 MATH, GSM8K 및 MMLU-Math 데이터 세트에서 효과적임을 입증했습니다. 우리의 접근 방식은 MATH 데이터 세트에서 84.32%의 놀라운 정확도를 달성하여 기본 GPT4-Code 및 이전의 최첨단 방법보다 훨씬 뛰어난 성능을 보였습니다. 또한, 우리는 MMLU-Math 및 MATH 데이터 세트에 대한 실험 데이터를 공개하여 결과 복제를 가능하게 하고 오픈 소스 LLM 모델(예: LLaMA 2(Touvron 외., 2023))의 미세 조정을 용이하게 하여 코드 생성의 도움을 받아 수학적 문제 해결 능력을 더욱 향상시킬 수 있도록 하고 있습니다.


이 논문의 주요 기여는 크게 세 가지 측면으로 요약할 수 있습니다:


- 이 연구는 수학적 문제 해결에서 코드 생성, 실행 및 셀프 디버깅의 역할에 대한 최초의 체계적인 분석을 제공합니다. 연구 결과, GPT4-Code의 인상적인 수학적 문제 해결 능력은 주로 단계별 코드 생성 및 코드 실행 결과에 기반한 동적 솔루션 개선에 기인한다는 사실이 밝혀졌습니다.  

그림 1: 수학 데이터 세트의 277번째 정수론 문제 예시: (a) 프롬프트 1은 중간 텍스트 전용 추론 단계를 생성합니다. (b) 프롬프트 2는 중간 텍스트 추론 단계와 PAL과 유사한 임시 Python 코드를 생성합니다(Gao et al., 2023). (c) 코드 사용에 부담을 주지 않는 기본 프롬프트. 세 가지 프롬프트에 대한 자세한 내용은 3.1절에 제시되어 있습니다(더 많은 예제는 표 9 및 표 10 참조).


- GPT4-Code의 고급 코드 생성 메커니즘을 활용하는 혁신적인 명시적 코드 기반 자체 검증(CSV) 프롬프트를 소개합니다. 이 프롬프트는 모델이 답을 검증한 다음 코드로 솔루션을 재평가하도록 안내합니다. CSV는 문제 해결의 논리에 대한 검증을 유도할 뿐만 아니라 검증 상태를 통합하여 다수결 투표 방법의 효율성을 향상시킵니다.

- 또한 다음 두 가지 명령어 데이터 세트를 새로 만들어 LLM 커뮤니티에 기여했습니다: MATH-코드와 MMLU-Math-코드. 이러한 데이터 세트는 오픈 소스 모델의 수학적 추론 기능을 향상시키기 위해 설계되었습니다.


2 관련 작업


생각의 연쇄 추론. 

Wei 등(2022)이 제안한 연쇄추론(CoT) 프롬프트 방식은 LLM의 다단계 추론 능력을 보여주는 주목할 만한 공헌입니다. 코지마 외(2022)는 질문 앞에 "단계별로 생각해 봅시다"를 추가하는 것만으로 강력한 제로 샷 기준선 역할을 할 수 있는 제로 샷-CoT를 구현했습니다. 추가 연구에서는 자기 일관성을 개선하기 위해 다수결 투표를 적용하고(Wang 등, 2023), 더 복잡한 추론 단계가 있는 소수 샷 예제와 출력 체인을 선택하고(Fu 등, 2022), 문제를 더 간단한 하위 문제로 세분화하거나(Zhou 등, 2023), 심지어 생각의 사슬을 생각의 나무로 확장하여(Yao 등, 2023) CoT의 추론 기능을 확장하고 있습니다. 제로샷-CoT와 유사하게, 저희 방식은 단계별 소수 샷 예제를 신중하게 설계하지 않고도 GPT4-Code의 코드 사용을 규칙화하기 위해 "단계별"과 같은 프롬프트를 적용합니다. 또한, 다수결 투표를 검증 가이드 가중 다수결 투표로 개선하여 CSV의 결과를 투표 가중치로 활용합니다.


코드로 수학 문제 해결. 

대규모 언어 모델은 더하기, 빼기, 곱하기 등과 같은 산술 계산을 수행하는 데 있어 정확도가 떨어지는 것으로 밝혀졌습니다(Cobbe et al. 2021; Lewkowycz 외., 2022; Gao 외., 2023; Lu 외., 2022). 결과적으로, 이전 연구들은 코드의 도움을 받아 수학 문제를 해결하려고 시도했습니다. GSM8K 데이터세트(Cobbe 외., 2021)는 계산 주석을 사용해 외부 계산기인 파이썬 평가 함수로 풀린 모든 산술 계산을 추출합니다. 

LLM에서 코드의 역할을 더욱 활용하기 위해 프로그램 지원 언어 모델(PAL)(Gao et al., 2023)과 생각의 프로그램(PoT)(Chen et al., 2022)은 수학 문제를 파이썬 코드로 해석하고 외부 파이썬 인터프리터로 코드를 실행하여 답을 얻습니다. 비코드 방식에 비해 정확한 답을 얻을 수 있지만, 생성된 코드에 실행 오류가 있거나 검증 메커니즘이 부족하여 오답을 얻는 경우가 많습니다. 우리의 접근 방식은 다단계 코드를 생성하고 실행에 실패한 코드를 정제하는 GPT4-Code의 기능을 활용할 뿐만 아니라 CSV를 사용하여 답변의 신뢰성과 정확성을 향상시킵니다.


자기 검증. 

인간의 문제 해결은 항상 한 번의 성공으로 끝나는 것이 아니라 반복적인 사고, 검증, 개선이 필요합니다. 최종 정답의 정확성을 검증하기 위해 추가 검증자를 훈련시키거나(Cobbe 등, 2021) 중간 단계(Lightman 등, 2023; Li 등, 2023)를 거치는 기존 연구와 달리, Weng 등(2023)은 여러 답변을 생성하고 자기검증 점수로 순위를 매김으로써 LLM의 자기검증 능력을 보여주었습니다. 또한, Madaan 등(2023)이 제안한 SELF-REFINE은 자체적으로 생성된 피드백을 통해 반복적으로 결과물을 개선합니다. 이러한 자가검증 방식은 LLM이 자연어로 검증 피드백을 제공해야 합니다. 본 방식은 생성된 코드를 적용하여 답변을 검증하고 검증 결과에 따라 다른 답변에 투표함으로써 검증의 정확도를 높이고 검증 과정에서 정보를 최대한 활용할 수 있습니다.


3 방법


저희는 먼저 까다로운 수학 데이터 세트에 대해 GPT4-Code로 파일럿 실험을 수행했습니다(Hendrycks et al., 2021). 놀랍게도 69.7%의 정확도를 달성하여 기존 최첨단 성능인 53.9%를 크게 뛰어넘었습니다(Zheng et al., 2023). GPT4-Code의 놀라운 성능에 고무된 저희는 그 기반이 되는 코드 메커니즘을 체계적으로 탐구하고 분석하기 위해 노력하고 있습니다. 

3.1절에서는 코드 제약 프롬프트 설계를 통해 수학 문제 해결에 있어 GPT4-Code의 강력한 성능이 정확한 단계별 코드를 생성하는 능력뿐만 아니라 자체 디버깅 메커니즘에서도 비롯된다는 점을 설명합니다. 3.2절에서는 GPT4-Code의 셀프 디버깅 강점을 활용하여 수학적 문제 해결 능력을 더욱 향상시키는 것을 목표로 합니다.


3.1 GPT4-Code의 코드 사용 분석에 대한 파일럿 실험


코드 사용이 GPT4-Code의 수학 문제 해결 능력에 미치는 영향을 살펴보기 위해 신중하게 구성된 프롬프트를 통해 GPT4-Code와 코드의 상호 작용을 제한하는 간단한 접근 방식을 채택했습니다. 구체적으로 두 가지 코드 제약 프롬프트와 비교를 위한 기본 프롬프트를 소개합니다:

Prompt1: 코드 사용이 허용되지 않음: 이 프롬프트에 응답하지 않으면 GPT4-Code는 솔루션에 코드를 통합하는 것이 금지됩니다. 이로 인해 GPT4-Code는 자연어(NL) 추론 체인에만 의존하게 되며, 이는 CoT 프레임워크의 솔루션과 유사합니다(Wei et al., 2022). 그 결과 추론 단계의 순서는 그림 1 (a)에 예시와 함께 CNL 로 표시됩니다.


프롬프트 2: 코드는 한 번만 사용할 수 있음: 이 프롬프트 설정에서 GPT4-Code는 단일 코드 블록 내에서만 코드를 사용하여 솔루션을 생성할 수 있으며, 이는 Gao 외(2023)가 도입한 PAL 접근 방식을 반영합니다. 우리는 이 시퀀스를 CSL이라고 부르며, 파이썬과 같은 일련의 기호 언어(SL)를 나타냅니다. 그림 1 (b)에 그 예가 나와 있습니다.


기본 프롬프트: 코드 사용에 대한 제한 없이 문제를 해결하라는 메시지가 GPT4-Code에 표시됩니다. 이 프롬프트는 GPT4-Code의 일반적인 작동 패턴으로 이어지며, C = ((c1NL , c1SL ), (c2NL , c2SL ), . . . )로 나타낼 수 있으며, 각 단계는 자연어와 파이썬 코드로 구성되며, 그림 1 (c)에 예시가 나와 있습니다.


그림 1의 구체적인 예시 외에도 코드 사용 빈도를 도입하여 다양한 프롬프트에 대한 코드 실행 횟수를 기록했습니다. 이러한 프롬프트를 사용한 실험 결과는 그림 2 (b)에 나와 있습니다. 이 그림은 GPT4-Code의 성능 향상과 코드 사용 빈도가 높을수록 양의 상관관계가 있음을 보여줍니다.   


그림 2: 코드 사용의 빈도에 따른 다양한 수준의 수학 데이터 세트에 대한 성능. (a) 4개의 프롬프트 간의 전체 정확도 비교. (b) 코드 사용 빈도는 5가지 레벨 모두에서 정확도와 비례하며, 이러한 현상은 문제가 상대적으로 복잡할 때(즉, 레벨이 높을수록) 특히 두드러집니다.



좀 더 구체적으로

프롬프트 1 대 프롬프트 2: 프롬프트 1은 코드 사용량이 거의 미미한 반면, 프롬프트 2는 코드 사용량이 약 1회에 달합니다. 프롬프트 2는 프롬프트 1에 비해 정확도가 6.9% 향상됩니다. 이는 파이썬 코드 체인 CSL이 자연어 체인 CNL보다 계산 능력을 더 향상시킬 수 있음을 시사합니다. 이러한 관찰은 이전 파이썬 기반 프롬프트 방법의 연구 결과와 일치합니다(Gao et al., 2023; Chen et al., 2022). 그러나 코드를 한 번만 사용하면 코드 출력에서 오류가 발생하거나 믿을 수 없는 결과가 나올 때 자체 디버깅할 수 있는 기능이 부족하다는 내재적 단점이 있습니다.

프롬프트 2 대 기본 프롬프트: 기본 프롬프트는 여러 코드 사용 인스턴스를 수반하는 솔루션을 지속적으로 생성하므로 코드 사용 빈도가 높습니다. 또한 기본 프롬프트는 정확도가 눈에 띄게 향상되었습니다

이러한 코드 사용 빈도와 정확도의 개선은 두 가지 고유한 장점 때문일 수 있습니다. 

(1) 자연어 추론 단계로 나누어 짧고 빈번하게 코드를 생성하면 정확도가 높아지는 경향이 있습니다. 

(2) 표 7과 표 8에 설명된 것처럼 이 모델은 코드 실행 결과를 평가하고 결과에 버그가 포함되어 있거나 비논리적이라고 판단되는 경우 해결 단계를 수정할 수 있는 기능을 갖추고 있습니다. (7 및 탭. 8.)

이러한 관찰을 통해 볼 때, 수학 문제 해결의 정확성을 더욱 향상시키기 위해 GPT4- 코드의 유리한 속성을 개선하고 이를 기반으로 구축하는 것이 타당할 것으로 보입니다.


3.2 명시적인 코드 기반 자기 검증 프롬프트

그림 3: 수학 데이터 세트의 712번째 중급 대수 문제의 문제. (a) 자가 검증이 없으면 모델이 오답을 생성합니다. (b) 자가 검증을 사용하면 모델이 오류를 수정하고 정답을 생성합니다. CSV 프롬프트: 코드 인터프리터를 사용하여 문제를 단계별로 풀고, 코드 인터프리터를 사용하여 답을 확인하시기 바랍니다.


코드 사용 빈도 분석에 대한 관찰에서 영감을 받아, 우리는 GPT4- 코드의 기능을 활용하고자 합니다. 이러한 기능에는 정확한 코드 생성, 코드 실행 결과 평가, 필요 시 솔루션의 추론 단계 자동 조정에 대한 모델의 능력 등이 포함됩니다. 그러나 이러한 장점에도 불구하고 현재 GPT4-Code는 솔루션의 정확성을 보장하는 데는 부족합니다. 따라서 저희의 목표는 이러한 강점을 활용하여 솔루션 검증을 강화하는 것입니다.


이 목표를 달성하기 위해 명시적 코드 기반 자체 검증(CSV)이라는 기술을 제안합니다. 이 방법은 코드 생성을 통해 GPT4-Code가 답을 명시적으로 검증하도록 유도합니다. 

이 프롬프트를 구현함으로써 솔루션 C에 V라고 하는 추가 검증 단계를 도입합니다. 검증 결과 V는 참, 거짓 또는 불확실성으로 분류할 수 있습니다. 불확실 분류는 GPT4-Code가 효과적인 답안 검증 방법을 찾는 데 어려움을 겪어 확실한 검증 결과를 제공하지 못했음을 나타냅니다. GPT4-Code의 고유한 자율 기능을 활용하여 다음과 같이 제안된 프롬프트를 공식화할 수 있습니다:  


그림 3 (b)에 그 예가 나와 있습니다. CSV와 통합된 모델은 코드를 사용하여 답을 검증한 다음, 검증 결과가 거짓인 경우 어떻게 솔루션에 도달했는지 검토하고 조정하여 정답을 얻을 수 있게 됩니다. 초기 솔루션을 개선하고 수정하면 정확도가 눈에 띄게 향상될 것으로 예상됩니다. 검증과 수정 단계 모두 코드 기반이라는 점에 주목할 필요가 있습니다. 이는 필연적으로 앞서 언급한 분석과 마찬가지로 코드 사용 빈도를 증가시키는 결과를 초래하며, 이는 후속 실험에서 추가로 입증될 것입니다.


CSV로 실험을 수행했으며, 그 결과는 그림 2에서 확인할 수 있습니다. 여기서 실험은 MATH의 GPT4-Code로 수행됩니다(Hendrycks et al., 2021). 그림 2 (b)에서 제안한 CSV 프롬프트의 정확도는 지정된 모든 난이도 레벨3에서 기본 프롬프트의 정확도를 지속적으로 능가합니다. 한편, 코드 사용 빈도는 분명하게 증가합니다.


GPT4-Code가 등장하기 전의 프레임워크(Lightman 외., 2023; Cobbe 외., 2021)는 검증을 위해 자연어와 잘 설계된 몇 개의 예제 프롬프트를 사용하기 위해 외부 LLM에 의존했습니다. 이와는 대조적으로, 우리의 접근 방식은 제로 샷 방식으로 GPT4-Code에 대한 직관적인 프롬프트에만 의존하여 프로세스를 간소화합니다. 따라서 GPT4-Code는 고급 코드 실행 메커니즘을 사용하여 솔루션을 자율적으로 검증하고 독립적으로 수정할 수 있으므로 사용자 정의된 소수의 예제가 필요하지 않습니다.


CSV가 문제 해결 해답을 효과적으로 검증할 수 있다는 점을 고려할 때, 자체 일관성 CoT(self-consistency CoT)에서 채택한 방법론과 유사하게 검증 상태를 다수결 투표에 자연스럽게 통합할 수 있습니다(Wang et al., 2023). 검증을 통해 참으로 간주되는 답변은 일반적으로 더 신뢰할 수 있으며, 이는 인간의 인지에서 볼 수 있는 문제 해결 접근 방식을 반영합니다(Newell & Simon, 1972; Wang & Chiew, 2010). 이러한 향상된 신뢰성은 널리 사용되는 다수결 투표 프로세스에서 활용될 수 있습니다. 이러한 인사이트를 활용하기 위해 검증 가이드 가중 다수결 투표(verification-guided weighted majority voting

)를 도입하여 검증 과정의 상태에 따라 가중치를 다르게 할당합니다.

실제로는 답변이 거짓으로 확인되면 추가 검증이 수행되지 않아 거짓 검증 상태가 되는 경우가 종종 발생합니다. 이러한 참, 불확실, 거짓 상태에 해당하는 가중치를 각각 wT, wU, wF로 할당합니다.

그림 4 (a)(ii)의 CoT와의 자기 정합성(CoT-SC)과 유사하게, 우리의 프레임 작업은 k개의 경로를 샘플링할 수 있습니다. 단순화를 위해 (vi, ai), i = 1, 2, ... , k로 표시되는 k개의 솔루션에서 최종 답변 쌍과 해당 검증 결과를 추출합니다. , k로 표현되며, 여기서 vi와 ai는 각각 i번째 최종 답안과 최종 검증 결과를 나타냅니다.

따라서 각 후보 답안 a에 대한 투표 점수는 다음과 같이 표현할 수 있습니다:  

여기서 a는 후보 답안을 나타내고, v는 검증 상태를 나타내며, wv는 {wT , wU , wF } 집합의 요소입니다. 각 wv는 해당 검증 상태와 관련된 신뢰도를 나타냅니다.

마지막으로 모든 후보 답안 중에서 가장 높은 점수를 받은 답안을 선택합니다,  

여기서 점수(a)는 식 1에 따른 답안 a의 점수를 나타냅니다.

모든 wv ∈ {wT,wU,wF}에 대해 wv = 1일 때, 식 1은 CoT를 사용한 자기 일관성(CoT-SC)에서 사용되는 순진한 다수결 투표(naive majority voting)와 동일해집니다(Wang et al., 2023). 일반적으로 wT>wU>wF의 순서는 참으로 확인된 답변이 불확실한 상태의 답변보다 더 높은 신뢰도를 가지며, 거짓으로 확인된 답변은 가장 낮은 신뢰도를 갖습니다. 검증 유도 가중 다수결 투표의 계산 과정의 예는 그림 4에 나와 있습니다.



4 실험

4.1 수학에서의 성능


MATH 데이터셋(Hendrycks 외., 2021)은 가장 어려운 수학 단어 확률 데이터셋으로 알려져 있으며, Chen 외.(Chen 외., 2023)에서도 강조한 바와 같이 가장 어려운 수학 단어 확률 데이터셋으로 알려져 있습니다. 대부분의 실험과 해당 분석은 MATH 벤치마크에서 수행되었습니다. 탭. 1은 GPT4-Code의 성능을 다른 모델과 비교한 것입니다. GPT4-Code는 MATH에서 69.69%에 도달하여 (Hendrycks et al., 2020) 이전 최신 결과(53.90%)를 크게 능가하며, 이는 GPT4-Code가 수학 문제 해결에 강력한 능력을 가지고 있음을 보여주며, 제거 연구(ablation study)의 기준선으로 사용됩니다. 

GPT4-Code에 더해 명시적 코드 기반 자체 검증(explicit code-based self-verification)을 추가하면 73.54%, 명시적 코드 기반 자체 검증과 검증 가이드 가중 다수결 투표(verification-guided weighted majority voting)를 모두 추가하면 84.32%로 정확도가 더욱 향상됩니다(샘플링된 경로 수는 16개입니다).  

그림 4: (a) 나이브 다수결 투표(왕 외, 2023)와 검증 가이드 가중 다수결 투표의 그림. 제안된 검증 유도 가중 다수결 투표 프레임워크의 전체 파이프라인. 이 모델을 사용하여 여러 가지 솔루션을 생성합니다. 그런 다음 각 솔루션의 자체 검증 상태를 감지하고 이를 세 가지 상태로 분류합니다: 참, 불확실, 거짓. 검증 상태에 따라 각 솔루션에 다른 가중치를 부여하고 분류된 결과를 사용하여 각 가능한 답변의 점수를 투표합니다.


표 1: MATH 데이터 세트의 정확도(%). VW 투표는 검증 가이드 가중 다수결 투표의 약자입니다. (전체: 다양한 MATH 하위 주제에 대한 결과(Hendrycks et al., 2021))  


이 놀랍도록 높은 결과는 기본 모델인 GPT4-Code의 강력한 기능에 기반하고 있으며, 저희의 방법은 솔루션 검증 기능으로 GPT4-Code의 장점을 증폭시킨다는 점에 유의하세요.

코드 기반 자체 검증을 추가하면 모든 개별 과목의 성능을 향상시킬 수 있지만, 개선 정도는 과목마다 7.6%에서 0.6%에 불과할 정도로 과목마다 다릅니다. 특히 기하학 문제의 경우, 원래 GPT4 코드 정확도가 54.0%에 불과해 과목 중 가장 낮은 수준임에도 불구하고 정확도가 0.6% 향상되는 데 그쳤습니다. 이러한 차이는 기하학 문제를 풀 때 본 백서의 범위를 벗어난 개념인 멀티 모달리티가 필요한 경우가 많기 때문일 수 있습니다(Chen et al., 2023).


4.2 다른 데이터 세트에서의 성능


까다로운 MATH 데이터 세트 외에도 GSM8K(Cobbe et al., 2021), MMLU-Math, MMLU-STEM(Hendrycks et al., 2020)과 같은 다른 추론 데이터 세트에 대해서도 우리의 방법을 수행했습니다. 해당 결과는 탭에서 확인할 수 있습니다.   

그림 5: 각 곡선의 네 점은 각각 프롬프트 1, 프롬프트 2, 기본 프롬프트 및 코드 기반 자체 확인 프롬프트를 사용한 결과에 해당합니다. (a) 다양한 코드 사용 빈도에 따른 다양한 레벨의 정확도. (b) 다양한 코드 사용 빈도에서 다양한 피험자의 정확도.

표2 및 3. GPT-4 코드 위에 통합되었을 때, 우리의 방법은 모든 데이터 세트에서 최첨단 결과를 달성하여 경쟁의 다른 방법보다 성능이 뛰어납니다. MMLU 벤치마크의 다른 주제는 그림 8에 나와 있습니다. 기존 최신 기법 및 오픈 소스 모델과의 비교 분석 결과도 제공됩니다.


표2는 검증 유도 다수결 투표가 모델 선택을 사용하는 GPT-4(Zhao et al., 2023) 및 PHP(Zheng et al., 2023)와 비교하여 샘플링된 경로의 수를 줄이는 데 효과적인 프레임워크임을 보여줍니다.

표3은 MMLU-Math 데이터 세트의 기존 모델(Hoffmann et al., 2022; Taylor et al., 2022) 및 MMLU-STEM의 최신 오픈 소스 mod- els4와 우리 모델의 성능을 비교한 것입니다. 오픈 소스 모델은 여전히 폐쇄 소스 모델에 비해 크게 뒤쳐져 있습니다. 이러한 격차를 해소하기 위해 유니티는 데이터 세트를 만들었으며 조만간 이를 공개할 예정입니다. 우리의 의도는 오픈 소스 LLM의 미세 조정을 용이하게 하는 것입니다. 예를 들어, 오픈 소스 모델 LLaMA 2(Touvron 외., 2023)는 잠재적으로 이 데이터를 활용하여 수학 추론 기능을 더욱 강화할 수 있습니다.


표 4: 명시적 코드 기반 프롬프트 유무에 따른 자체 검증 비교(전체: 다양한 수학 하위 주제에 걸친 결과(Hendrycks et al., 2021))  


4.3 제안된 프롬프트의 코드 사용 빈도


3.1절의 접근 방식과 유사하게, 우리는 프롬프트(파일럿 실험에서 사용된 프롬프트뿐만 아니라 제안된 CSV 프롬프트), 주제, 난이도 등 다양한 차원에서 정확도와 코드 사용 빈도 간의 상관관계를 밝히기 위해 데이터를 수집합니다. 

그림 5에서 볼 수 있듯이, 코드 기반 프롬프트를 추가했을 때 모델의 동작은 우리의 예상과 일치합니다. 그림 5의 각 선은 분명한 상승 추세를 보이며, 코드 사용 빈도의 증가가 전반적인 정확도 향상을 유도한다는 것을 증명합니다. 더 많은 코드를 사용할 때의 성능 향상은 그림 5 (a)에서 볼 수 있듯이 난이도가 높을수록 더 분명한 반면, 난이도가 낮을수록 성능 향상은 그다지 두드러지지 않습니다. 


 또한 난이도가 높아질수록 코드 사용 빈도가 꾸준히 증가합니다. 이는 어려운 수학 문제일수록 코드 사용 빈도가 높다는 것을 의미하며, 코드를 여러 번 호출하는 것이 어려운 수학 문제를 푸는 데 GPT4-Code가 유리한 이유일 수 있음을 시사합니다. 그림 5 (b)에서도 비슷한 추세를 볼 수 있습니다.


4.4 제거 연구 및 토론(ABLATION STUDY AND DISCUSSION)


자연어와 코드 기반 자기 검증 간의 비교(Comparisons between Natural Language and Code-based Self-Verification): 자기 검증 단계에서 코드의 중요성을 강조하기 위해, 우리는 뚜렷한 자연어 자기 검증 프롬프트를 사용했습니다. 이 접근 방식에서 GPT4-Code는 표에 제시된 것처럼 코드 기반 검증에 의존하는 대신 자연어를 통해 솔루션을 검증하도록 유도합니다. 4. 이 방법으로 달성한 정확도는 기본 프롬프트보다 약간 낮았습니다. 또한 7개 하위 주제 중 4개 주제에서 정확도가 하락한 것으로 나타나 자연어 검증에만 의존하면 정확도가 저하될 뿐만 아니라 성능에도 부정적인 영향을 미칠 수 있음을 알 수 있습니다. 반면, 코드 기반 검증은 기본 프롬프트와 비교했을 때 7개의 하위 주제 모두에서 정확도가 향상되었습니다.


검증 가이드 가중 다수결 투표 분석(Analysis of Verification-guided Weighted Majority Voting): 먼저 5개의 서로 다른 샘플링 경로에서 방정식 1에 언급된 참과 거짓 상태와 일치하는 자체 검증을 통해 솔루션을 캡처하여 혼동 행렬(TP/TN/FP/FN)을 컴파일했습니다. 혼동 행렬에 대한 자세한 내용은 부록 A.1.1에 나와 있습니다. 이 데이터로부터 정밀도, 회수율, 정확도를 계산했습니다. (True 상태의 솔루션은 양수로 표시됩니다.) 결과는 그림 6에 나와 있습니다.   

그림 6: (a)는 다양한 추론 경로에 대한 정밀도, 회수율 및 정확도를 보여줍니다. (b)는 가중치를 다른 값으로 설정했을 때 샘플링된 추론 경로의 수에 따른 정확도를 보여줍니다.


정확도를 비교했을 때, 평균 정밀도와 회수율에서 각각 22.3%와 5.6%의 수치적 향상을 확인할 수 있었습니다. 특히 평균 정밀도는 95.88%를 기록했습니다. 이는 최종 정답을 제시하기 전에 더 많은 솔루션이 검증된 True 상태에 도달할 경우 정확도가 훨씬 더 높아질 수 있음을 의미합니다.


검증 유도 가중 다수결 투표에서의 하이퍼 파라미터 제거(Hyper-parameters ablation in Verification-guided Weighted Majority Voting): 식 1의 하이퍼 파라미터 wv ∈ {wT , wU , wF }에 대한 제거 연구도 수행했습니다. 하이퍼파라미터 설정이 wT > wU ≥ wF를 만족하는 경우, 검증 유도 가중 다수결 투표의 성능은 모든 샘플링된 경로에서 순진한 다수결 투표 방법의 성능을 일관되게 능가했습니다. 반면, 하이퍼 파라미터를 설정했을 때(wT = 0.5, wU = 0.5, wF = 1), 이 구성에서는 순진한 다수결 투표보다 성능이 더 나빴습니다. 따라서 저희가 제안한 방법인 검증 유도 가중 다수결 투표는 조정하기 쉽고 견고합니다.


5 결론 및 한계


이 논문에서는 GPT4-Code에 대한 파일럿 실험을 통해 코드 사용이 수학적 추론의 성능에 어떤 영향을 미치는지 살펴봤습니다. 코드 사용 빈도와 정확도를 분석한 결과, GPT4-Code의 수학 문제 해결 능력은 주로 코드를 생성하고 실행하는 능력과 믿을 수 없는 실행 결과에 직면했을 때 해결책을 조정하고 수정하는 효과에 기인한다고 판단했습니다. 이러한 이해를 바탕으로 명시적 코드 기반 자체 검증과 검증 유도 가중 다수결 투표라는 아이디어를 도입하여 GPT4-Code의 수학적 능력을 향상시키고자 합니다.


하지만 이러한 작업에는 한계가 있으며, 앞으로 더 연구할 계획입니다. 

첫째, 현재 분석 및 개선 작업은 다소 제한적인 GPT4-Code에 초점을 맞추고 있습니다. 향후에는 다른 LLM에도 이 방법을 적용하는 것을 목표로 하고 있습니다. 

둘째, 명시적 코드 기반 자체 검증  검증 가이드 가중 다수결 투표 기법은 잠재적으로  정확한 데이터 세트를 생성할  있습니다. 이러한 데이터 세트에는 상세한 단계별 코드 기반 솔루션 생성 및 코드 기반 검증이 포함될 수 있으며, 이는 LLaMA 2(Touvron 외., 2023)와 같은 오픈 소스 LLM을 개선하고 수학적 능력을 향상시키는 데 도움이 될 수 있습니다. 아직 이 접근법을 조사하지는 않았지만 향후 연구를 위해 남겨두었습니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari