INTERN/Paper Review

MathPrompter: Mathematical Reasoning using Large Language Models

dotudy 2025. 2. 21. 11:21

https://arxiv.org/abs/2303.05398

 

Overview

Arithmetic 문제에 대한 LLM의 성능을 향상시키고 생성 결과물에 대한 신뢰도를 높이는 방법론인 MathPrompter 제안

 

Abstract

LLM은 산술 추론 문제를 풀 때 성능이 제한적이며 틀린 답을 제공한다. 이는 유일한 정답을 갖기 때문에 LLM이 정확한 해답을 생성하는 것이 까다롭다. 자신의 응답에 대한 확신 수준을 명시해 주는 LLM은 존재하지 않기 때문에 모델의 신뢰도가 낮아져 실제 활용이 어려워진다. 이런 한계를 해결하기 위해 저자는 산술 문제에서 LLM의 성능을 개선하고 예측 결과에 대한 신뢰도를 높일 수 있는 MathPrompter를 제안한다. 

 

MathPrompter는 Zero-shot CoT 프롬프트 기법을 사용하며 동일한 수학 문제를 다양한 방식으로 해결하기 위한 여러 대수학 표현이나 파이썬 함수를 생성한다. 이를 통해 산출된 답이 일관되고 정확하다는 확신을 높인다. 기존의 프롬프트 기반 CoT 방식과 달리 중간 추론 과정의 타당성을 검증하기 않고 넘어가는 문제를 보완하여 산출된 결과를 교차 확인할 수 있다는 점에서 차별점이 있다.

 

이를 통해 175B(1,750억) 파라미터 규모의 GPT 기반 LLM으로 MultiArith 데이터셋을 평가했을 때 기존 SOTA 성능인 78.7%를 92.5%까지 향상시키는 결과를 나았다.

 

Zero-shot CoT

 

 

1. Introduction

최근에 LLM이 in-context에서 자연적으로 제로샷 혹은 퓨샷 학습 능력을 갖춘다는 점이 발견되었다. 이를 토대로 사용자가 해결해야할 업무에 대한 간단한 맥락을 LLM에 제공하는 prompting 기법이 발전하였다. 다만 다단계 추론이 필요한 업무에서는 성능이 충분하지 않았다. 인간이 문제를 해결하기 위해 단계별로 나누는 경향이 있듯 이를 LLM에 적용하여 chain of thougt CoT 프롬프팅 기법이 개발되었다. 

본 연구에서는 수학적 추론 과제를 해결하기 위한 Zero-shot-CoT 기법을 제안한다. 

 

기존 CoT prompting based SOTA의 부족한 요소

1. 모델이 따르는 CoT 덕분에 결과가 향상되기는 했지만 프로세스의 각 단계가 타당한지를 확인하는 장치가 없다.

2. LLM의 예측에 대한 신뢰도가 제시되지 않는 경우가 많다.

 

따라서 이러한 격차를 해소하기 위해 사람이 수학 문제를 해결할 때 복잡한 문제를 더 단순한 여러 단계로 나누고 각 단계에서 자신의 접근 방식을 여러 가지 방법으로 검증하는 방식을 참고하였다.

 

구체적으로 

질문 $Q$가 주어졌다고 하자.

1. 대수 템플릿 생성: 숫자가 들어 있는 부분을 변수로 치환한 대응 대수식 $Q_t$를 생성한다.

2. Math-prompts: $Q_t$를 여러 가지 방식으로 풀 수 있도록 하는 여러 개의 프롬프트 $P$를 LLM에 제공한다.

ex) 대수식을 유도하시오(Derive an Algebraic expression), 파이썬 함수를 작성하시오(Write a Python function)

$Q_t$를 변수 관점에서 해석적으로 풀어내는 $P개의 표현식을 얻게 된다.

3. Compute verification: $Q_t$의 변수에 여러 개의 임의의 값을 할당하여 $P

 

2. Method

 

학생들이 산술 문제를 푸는 과정을 참고했는데 해당 논문의 저자들은 학생들이 해법을 검증하기 위해 다음과 같은 단계를 거친다고 하였다.

 

1. Compliance with known results

정해진 답이 있는 표준 문제의 경우 이미 알려진 결과와 비교함으로써 해가 정확한지를 확인하고 필요한 경우 보정을 할 수 있다.

2. Multi-verification

여러 관점에서 문제를 접근하고 각 접근법으로 얻을 결과를 비교함으로써 답변의 타당성을 확인하고 최종 해답이 올바른지 보장한다.

3. Cross-checking

문제 해결 과정 역시 최종 답만큼이나 중요하다. 각 단계를 정확히 밟았는지 확인하여, 답을 도출하기까지의 사고 과정을 명확히 이해하고 검증할 수 있다.

4. Compute verification

계산기나 컴퓨터를 이용해 산술 연산을 수행해 봄으로써 최종 답안의 정확성을 검증할 수 있다.

 

2-1. MathPrompter

 

problem solving 작업을 위해 최신 GPT-3 DaVinci 완성 엔진을 사용한다. 

 

다음의 예시는 MultiArith 데이터셋에 포함된 다음과 같은 질문 $Q$를 통해 MathPrompter가 문제를 해결하는 과정을 시연한다.

 

$Q$: At a restaurant, each adult meal costs $5 and kids eat free. If a group of 15 people came in and 8 were kids, how much would it cost for the group to eat?

 

1) Generating Algebraic template

질문에 포함된 수치들을 변수로 치환하여 대응하는 대수 표현 형태로 바꾼다.

$Q_t$: at a restaurant, each adult meal costs A and kids eat free. if a group of B people came in and C were kids, how much would it cost for the group to eat?

Mapping: {A:5, B:15, C:8}

 

2) Math-prompts

앞서 언급한 multi-verification과 cross-checking 사고 과정을 바탕으로 $Q_t$에 대한 해를 서로 다른 두 가지 방식 즉, 대수학적 방법과 파이썬 기반 방법으로 생성한다. 이를 위해 LLM에게 다음과 같은 프롬프트를 제공하고 $Q_t$문제를 풀기 위한 추가 맥락을 생성하도록 한다.

Algebraic prompt: Write a mathematical equation and generate the answer format starting with ‘Answer =’

Python prompt: Write a Python function that returns the answer.

위의 프롬프트에 대한 LLM의 응답은 이러한 결과물을 생성한다.

 

이러한 해석적 솔루션은 LLM의 중간 사고 과정을 사용자에게 보여주는 역할을 한다. 추가적인 프롬프트를 도입하면 결과의 정확성과 일관성이 높아져 더 정교하고 효과적인 해법을 제시할 수 있게 된다.

 

3) Compute verification

이전 단계에서 생성된 표현식들을 $Q_t$에 포함된 변수들에 무작위로 할당한 여러 가지 값으로 평가해본다. 5번 이상 다른 랜덤 값들을 넣어보며 표현식들이 일치되는 결과값을 도출하는지 확인한다. 결과가 항상 동일하다면 이 식들이 서로 모순 없이 같은 로직을 반영하고 있다고 결론지을 수 있다. 

이렇게 합의된 표현식을 활용해 원본 질문 $Q$의 실제 변숫값을 대입하여 최종 해답을 구한다. 

 

Algebraic-answer = 35

Pythonic-answer = 35

 

4) Statistical significance

여러 표현식의 출력이 합의에 이르는지 확인하기 위해 2~3 단계를 $N$회 반복 수행하고 가장 빈번하게 관측된 값을 최종 답으로 결정한다.

 

 

3. Experiment

 

3-1. Dataset

MultiArith

3-2. Baseline

표준 zero-shot 모델, 최신 zero-shot-CoT 프롬프팅 모델

 

3-3. Results

3-3-1. Accurancy comparisons

 

MathPrompter와 여러 baseline 모델의 성능을 비교한 결과이다. few-shot 및 zero-shot 학습 기반 접근법들의 결과가 포함되어있고 서로 다른 파라미터 수를 가진 모델의 결과를 제시하여 mathprompter의 중요성을 강조한다. 이는 175B(1750억) 파라미터 규모이다. 92.5%의 정확도를 보여주었으며 기존 SOTA 모델들에 비해 크게 향상된 결과이다. 

 

3-3-2. Example Compairson

MathPrompter는 한 문제를 여러 번 실행하고 합의에 도달한 결과만을 최종적으로 보고함으로써 중간 과정에서 발생한 오류로 인한 잘못된 결과를 회피한다. 또한 기존의 모델은 추론 과정이 매우 길어질 때가 있는데 파이썬 혹은 대수학적 방식은 요구하는 토큰 수가 적어 이 문제를 해소해준다. 추론 과정은 올바른데 최종 계산 틀리는 경우가 있는데 math prompter는 파이썬의 eval() 메서드를 활용하여 최종 계산을 검증함으로써 이런 문제를 개선할 수 있다. 

많은 경우에 있어 mathprompter는 올바른 중간 해답과 최종 답안을 생성한다. 하지만 마지막 예시처럼 대수학적 방식과 파이썬 방식의 결과가 서로 일치함에도 여전히 틀린 경우가 드물게 존재한다. 이런 문제를 개선하기 위해 추가적인 방법을 결합하여 성능을 한층 더 향상시킬 계획이다.

 

4. Conclusion & Discussions

 

MathPrompter라는 새로운 접근법을 제안하였다. LLM의 수학적 추론 능력을 향상시키고 사용자의 신뢰를 높여준다는 점에서 의의가 있다. 향후 추가적인 dataset에서의 성능을 폭넓게 평가하고 mathprompter에서 더 많은 프롬프트를 결합하여 성능을 추가로 개선할 계획이다.

 

5. Limitation

MathPrompter를 여러 차례 다양한 방식으로 실행하여 정확도를 높인다고 해도 항상 옳은 결과를 보장하지 못한다. 프롬프트를 늘려서 이러한 문제를 어느정도 완화할 수 있지만 더 근본적으로 해결하기 위한 연구를 진행하고 있다.