본문 바로가기
Paper Review

[논문리뷰] ReAct: Synergizing Reasoning and Acting in Language Models

by mjk0618 2023. 11. 24.

 

Chain-of-Thought에 이어 널리 알려진 프롬프트 조작법인 ReAct를 제안한 논문 ReAct: Synergizing Reasoning and Acting in Language Models를 읽고 정리해보았습니다. ReAct는 chain of thought과 같이 결론에 이르는 추론 과정을 활용하는 것에 더해 언어 모델이 태스크를 해결하는 과정에서 주어진 환경과 상호작용하는 행동에 대한 정보도 프롬프트 내에서 활용합니다. 언어 모델의 행동이라는 개념이 조금 생소하긴 한데, 논문을 읽으면서 저자가 의도하는 바를 어느 정도 잘 이해할 수 있게 되는 것 같습니다. 논문의 내용을 구체적으로 알아보며 ReAct는 어떤 연구인지 알아보겠습니다. 번역을 통해 오히려 이해가 어려워지거나, 원문의 표현을 사용하는 게 원래 의미를 온전히 잘 전달할 것이라고 생각하는 표현은 원문의 표기를 따랐습니다. 오개념이나 오탈자가 있다면 댓글로 지적해주세요. 설명이 부족한 부분에 대해서도 말씀해주시면 본문을 수정하겠습니다.

 


 

1. Introduction

인간의 지능은 과제 지향적 행동과 언어적 추론을 매끄럽게 결합하는 능력을 갖고 있습니다. 이를 통해 스스로를 통제하거나 전략을 수립할 수 있고, 작업 기억을 유지할 수 있습니다. 어떤 두 가지 행동 사이에는 우리는 과정을 이해하거나 예외 상황에 따라 계획을 조절하거나 다른 정보가 필요한 순간을 판단하는 등의 인지적 추론을 거칩니다. 반대로 이런 추론에 의해 도달한 결론을 뒷받침하기 위해 실제로 어떤 행동을 하기도 합니다. 이처럼 행동(acting)과 추론(reasoning)의 시너지를 통해 인간은 새로운 태스크를 빠르게 학습하고 적응할 수 있습니다.

 

최근 연구를 통해 이를 LLM에 적용하는 방법에 대한 영감을 얻을 수 있었습니다. 적절한 프롬프트가 주어진 LLM은 단계적인 추론 과정을 통해 명시적으로 학습하지 않은 과제를 수행하는 창발적인 능력을 갖고 있습니다. 그런데 이러한 Chain-of-Thought 추론 과정은 모델이 외부 지식에 의존하지 않고 학습한 사실에만 근거하여 생각을 구체화한다는 점에서 할루시네이션과 같은 문제를 겪습니다. 최근에는 사전 훈련된 언어 모델을 사용하여 외부 환경과 상호작용하는 연구가 수행되었습니다. 이런 모델은 주로 멀티모달 데이터를 텍스트로 변환하여 언어 모델이 특정 도메인에 대한 행동이나 계획을 생성하고, 컨트롤러가 이를 실행하거나 선택하는 방식으로 구성됩니다. 하지만 이런 모델은 언어 모델의 추상적인 추론 과정을 고려하지 않습니다. 결국 추론과 행동을 결합하여 다양한 과제 해결에 범용적으로 사용하거나 두 방법론을 결합하여 얻을 수 있는 이점에 대한 연구는 아직까지 이루어지지 않고 있었습니다.

 

이 논문에서는 언어적 추론과 의사 결정 문제를 해결하기 위해서 reasoning과 acting을 동시에 언어 모델에 결합하는 일반적인 패러다임인 $\texttt{ReAct}$를 제안합니다. ReAct 프롬프트는 LLM이 언어적 추론 과정과 작업 행동을 함께 생성하여 모델이 높은 수준의 행동 계획을 마련하는 동시에 Wikipedia와 같은 외부 환경과 상호 작용할 수 있게 합니다.

 

 


 

2. ReAct: Synergizing Reasoning + Acting

환경과 상호작용하여 문제를 해결하는 에이전트를 생각해보겠습니다. 타임 스텝 $t$에서 에이전트는 환경에 대한 관측 $o_t \in \mathcal{O}$를 통해 행동 $a_t \in \mathcal{A}$를 취합니다. 이 과정에서 에이전트는 정책 $\pi(a_t|c_t)$를 따릅니다. $c_t=(o_1,a_1,\cdots,o_{t-1},a_{t-1},o_t)$는 문맥을 의미합니다. 만약 매핑 $c_t \mapsto a_t$이 암시적이거나 많은 연산을 요구한다면 정책을 학습하는 것은 매우 어려운 과제입니다.

 

ReAct의 아이디어는 단순합니다. 에이전트의 행동 공간을 $\hat{\mathcal{A}}=\mathcal{A}\cup\mathcal{L}$으로 증강합니다. $\mathcal{L}$은 언어 공간입니다. 언어 공간 안에서 이루어지는 행동을 $\hat{a_t} \in \mathcal{L}$은 사고(thought) 또는 추론 과정(reasoning trace)라고 하겠습니다. 사고는 외부 환경에는 영향을 미치지 않으므로 관찰에 대한 피드백으로 이어지지는 않습니다. 대신에 생각 $\hat{a_t}$는 현재 문맥 $c_t$에 대한 추론을 통해 적절한 정보를 구성하여 다음 문맥 $c_{t+1}=(c_t,\hat{a_t})$를 생성하여 이어지는 추론이나 행동을 결정하는 데 도움을 줍니다.

 

그런데 언어 공간 $\mathcal{L}$은 무한하기 때문에 확장된 행동 공간에서 학습하는 것은 어렵고 언어에 대한 많은 사전지식을 필요로 합니다. 논문에서는 주로 few-shot in-context example를 프롬프트로 사용하는 고정된 대규모 언어 모델인 PaLM-540B를 특정 도메인에 대한 행동과 형태에 제약이 없는 언어적 사고를 생성합니다. In-context example은 사람이 작성한 actions, thoughts, observations 과정을 포함합니다.

 

 


 

3. Knowledge-Intensive Reasoning Tasks

3.1 Setup

Domains

먼저 multi-hop 질문 답변, 사실 검증과 같이 지식 집약적인 추론 과제에 대한 실험입니다. Multi-hop QA는 단편적인 정보가 아닌 다양한 소스에서 얻은 정보를 종합적으로 요구하는 문제입니다. 이는 여러 정보를 통합하는 능력, 복잡한 추론 능력, 순차적 또는 병렬적인 정보 처리 능력 등을 요구하는 난이도가 높은 과제입니다. 각각의 태스크에는 HotPotQA와 FEVER 벤치마크가 사용되었습니다.

 

HotPotQA는 다음과 같은 데이터로 이루어져 있습니다. 첫 번째 Reasoning Type을 보면 두 단락에 흩어져 있는 정보를 적절히 연결지어야만 주어진 문제에 답할 수 있음을 알 수 있습니다.

 

 

FEVER는 다음과 같은 데이터로 이루어져 있습니다. 어떤 주장과 위키피디아 문서가 문맥으로 주어지면, 주어진 정보를 바탕으로 그 주장이 참인지, 거짓인지, 또는 알 수 없는지를 판단합니다. ReAct는 직접 위키피디아 문서에 접근하는 행동까지 수행하므로 여기서는 질문(claim)만이 주어집니다.

 

 

Action Space

저자는 정보 검색을 위해서 세 가지 행동을 취할 수 있는 위키피디아 웹 API를 설계하였습니다. 세 가지 행동은 각각 검색한 개체에 대응하는 5개의 결과를 보여주는 $\textbf{search}[\texttt{entity}]$, 문자열 이후에 이어지는 문장을 반환하는 $\textbf{lookup}[\texttt{string}]$, 정답을 반환하며 작업을 마치는 $\textbf{finish}[\texttt{answer}]$ 입니다.

 

3.2 Methods

ReAct Prompting

HotPotQA와 FEVER 각각에서 6개, 3개의 학습 데이터를 임의로 선택하여 few-shot example로 사용하였습니다. 앞에서 본 것 같이 프롬프트는 여러 단계의 thought-action-observation 과정이 포함됩니다. 사고의 종류에는 과제를 분할하기(decompose questions), 위키피디아에서 정보 추출하기(extract information from Wikipedia observations), 상식을 통한 추론(perform commonsense), 대수 연산(arithmetic reasoning), 검색 재구성(guide search reformulation), 정답 추론(synthesize the final answer)가 있습니다.

 

Specifically, we use a combination of thoughts that decompose questions (“I need to search x, find y, then find z”), extract information from Wikipedia observations (“x was started in 1844”, “The paragraph does not tell x”), perform commonsense (“x is not y, so z must instead be…”) or arithmetic reasoning (“1844 < 1989”), guide search reformulation (“maybe I can search/look up x instead”), and synthesize the final answer (“…so the answer is x”). See Appendix A for more details.

 

Baselines

베이스라인은 모든 사고, 행동, 관찰을 제거한 일반적인 프롬프팅(Standard prompting)과 사고만을 포함하는 Chain-of-Thought 프롬프팅, self-consistency를 포함한 CoT-SC, 그리고 행동만을 포함하는 Acting-only prompt를 사용하였습니다.

 

Combining Internal and External Knowledge

ReAct는 더욱 사실에 입각한 답변을 내놓지만 CoT는 뛰어난 추론 능력을 보였습니다. 따라서 모델이 휴리스틱하게 두 방법 중 하나를 번갈아가면서 선택할 수 있도록 하는 방법도 실험하였습니다. 만약 ReAct가 정해진 단계 안에서 정답을 찾는 것에 실패하였다면 CoT-SC로 돌아오고, 반대로 $n$개의 CoT-SC 샘플에서 정답 중 대부분이 $n/2$번 이하 등장하였다면 ReAct로 돌아옵니다.

 

Finetuning

많은 프롬프트를 직접 작성하는 것은 어렵기 때문에, ReAct가 성공적으로 정답을 내놓은 과정 3000개를 모아 PaLM-8/62B 모델을 파인튜닝하였습니다.

 

3.3 Results and Observations

다음은 PaLM-540B 모델을 사용한 각 프롬프팅 기법에 대한 실험 결과입니다.

 

 

다음은 ReAct와 CoT의 성공과 실패에 대한 유형을 분석한 자료입니다. CoT에서는 할루시네이션이 자주 발생하는 것을 알 수 있습니다. 반면 ReAct는 사실에 근거한 답변을 내놓지만 그만큼 유연성을 잃고, 적절한 문서를 검색하지 못했을 경우에는 답변에 실패하는 경우가 많습니다. 결국 ReAct는 성공적으로 관련 문서를 검색하는 것이 매우 중요합니다.

 

 

다음 표는 few-shot 프롬프트에 사용한 CoT-SC 예제 개수에 따른 각 프롬프팅 기법의 성능입니다. ReAct와 CoT-SC를 함께 사용하는 것이 가장 뛰어난 성능을 보입니다. 이 실험 결과를 통해 모델이 갖고 있는 내부 지식과 검색을 통해 사용할 수 있는 외부 지식을 적절히 결합하는 것의 중요성을 알 수 있습니다.

 

 

다음 그래프는 각 다양한 크기의 모델에서 각 프롬프팅 기법을 사용했을 때, 또한 각 프롬프트를 사용하여 파인튜닝 했을 때에 대한 실험 결과입니다. 작은 규모의 모델에서는 ReAct가 좋은 성능을 보이지 못하지만, 3000개로 비교적 적은 개수의 데이터로 모델을 파인튜닝 했을 때는 다른 프롬프트보다 훨씬 뛰어난 성능을 보입니다.

 

 

 


 

4. Decision Making Tasks

다음으로 저자는 두 가지 의사 결정 과제에서 ReAct의 성능을 검증해보았습니다. 먼저 ALFWorld는 텍스트 기반 게임으로 에이전트는 6가지 유형의 과제를 수행해야 합니다. 에이전트는 템플릿으로 정해진 어떤 행동을 취합니다. 예를 들어 $\texttt{goto}$라는 행동의 템플릿은 You arrive at $\texttt{{loc id}}$. On the $\texttt{{recap id}}$, you see a $\texttt{{obj id}}$와 같은 형태를 띕니다. ALFWorld 텍스트 게임은 다음과 같이 진행됩니다.

 

 

WebShop은 온라인 쇼핑 웹사이트 환경을 구성한 벤치마크입니다. 다음은 Webshop의 예시입니다.

 

 

실험 결과 ReAct가 두 벤치마크에서 모두 Act보다 뛰어난 성능을 보인 것을 확인할 수 있었습니다. ALFWorld에서는 심지어 ReAct의 가장 낮은 점수(48%)조차도 Act와 Imitation Learning(IR)을 사용한 BUTLER보다 높은 점수를 달성하였습니다. Webshop은 Act만을 사용하여도 IR이나 RL을 사용한 것보다 뛰어난 결과를 얻을 수 있었지만, ReAct를 사용하면 성능이 10%만큼 더 향상되었습니다. 하지만 여전히 파인튜닝된 모델에 비해서는 성능이 떨어지는 걸 보아, 프롬프팅만을 사용하여 모델 성능을 끌어올리는 게 매우 어려운 일이라는 것을 알 수 있습니다.

 

 


 

5. Related

Work

Language model for reasoning

대규모 언어 모델의 추론 능력에 대한 연구 중 가장 유명한 것은 아마 Chain-of-Thought(CoT) 입니다. CoT는 LLM이 스스로 사고 과정을 형식화하며 어떤 문제를 풀어나가는 방법입니다. 이와 관련한 후속 연구가 이어졌는데 문제를 단계별로 분해하여 풀이하는 least-to-most prompting, zero-shot-CoT, self-consistency를 활용한 추론 등이 있습니다. 추론 과정을 selection과 inference로 나누는 Selection-Inference, 별도의 dedicated LM을 사용하여 추론 과정을 생성하는 Faithful reasoning과 같은 연구도 이루어졌습니다. ReAct는 추론 능력만을 사용하는 대신 모델의 행동과 그에 대한 관찰을 통해 정확한 추론을 할 수 있게 하고 모델이 과제와 상호작용하며 의사를 결정할 수 있도록 합니다.

 

Language model for decision making

대규모 언어 모델의 뛰어난 능력은 단순히 언어를 생성하는 데 그치지 않습니다. LLM을 의사 결정을 위한 정책 모델과 같이 사용할 수도 있는데, 예를 들어 WebGPT는 언어 모델을 사용하여 웹 브라우저와 상호작용하고 웹 페이지를 탐색하며 복잡한 문제에 대한 답을 찾습니다. 그런데 ReAct와 다르게 WebGPT는 명시적으로 모델이 추론 과정을 거치며 문제를 해결하는 대신 사람의 피드백을 통한 강화학습에 의존합니다. BlenderBot, SimpleTOD와 같은 챗봇도 API 호출에 의해 의사를 결정하지만 ReAct와 다르게 어떤 추론 과정을 활용하지는 않습니다. ReAct는 의사 결정 과정을 추론 과정을 묘사한 언어만을 사용해서 학습할 수 있다는 점에서 학습 비용이 매우 저렴합니다.

 


 

6. Conclusion

논문에서는 추론과 행동의 이점을 극대화한 단순하지만 효과적인 프롬프트 기법인 ReAct를 제안하였습니다. 복잡한 문제로 이루어진 여러 벤치마크를 사용하여 ReAct를 사용한 모델이 해석 가능한 의사 결정 과정을 보일 뿐만 아니라 성능도 크게 향상됨을 입증하였습니다. ReAct는 매우 간단한 기법이지만, 많은 설명이 필요한 복잡한 태스크를 주어진 문맥 안에서 학습하기에는 어려움이 있을 수 있습니다. 따라서 ReAct를 활용하여 모델을 직접 파인튜닝하거나 멀티 태스크 학습과 강화 학습을 사용한다면 LLM의 능력을 한 층 더 향상할 수 있을 것입니다.

 


 

7. Reflection

ReAct도 프롬프트 엔지니어링 연구의 일종이라는 생각이 드는데 CoT와는 활용할 수 있는 상황이 조금 다르다는 생각이 들었습니다. 실제로 사용된 벤치마크도 그렇고 강화학습 에이전트와 같이 어떤 외부 환경이 설정되었고, 그 환경 내에서 다른 개체와 상호작용하며 어떤 문제를 해결해야 하는 상황에서 언어 모델의 능력을 극대화하는 방법에 대한 연구라고 이해하였습니다. 문제를 어떻게 정의하느냐에 따라서 적용할 수 있는 범위가 달라지겠지만, 언어 모델을 사용해서 어떤 게임을 수행한다든지, 아니면 로봇에 내장된 언어 모델이 환경과 상호작용하며 주어진 문제를 풀어나가는 경우에 도움이 될 것 같습니다. 

 

한 가지 재밌는 점은 점점 언어 모델에 대한 연구에 인간의 심리나 행동과 관련된 연구를 접목시키려고 한다는 것입니다. 강화학습도 원래는 교육학에서 출발한 개념이라고 언뜻 들은 것 같은데, 이 논문의 도입부에서도 언어 모델의 추론 능력에 대해 논의하기에 앞서 인간의 지능이 가진 성질을 분석합니다. 애초에 신경망이 인간의 뇌를 모방하고자 하는 시도에서 출발하였지만, 어느 순간부터는 생물학과는 거리가 멀어졌습니다. 그런데 언어 모델의 규모가 커지고 점점 인간 수준에서 다양한 문제를 해결하는 능력을 갖추게 되자, 인간의 행동과 비교하여 언어 모델을 이해하려는 시도가 흥미롭다고 생각됩니다. 그와 관련해서는 배경지식이 거의 없어서 이 논문을 이해하는 데는 많은 어려움이 있었습니다. 언어 모델의 추론과 행동이라는 개념 자체가 아직도 조금은 생소하긴 한 것 같습니다. 그런데 넓은 의미에서 인공지능의 종착지는 결국 사람이 하는 일이면 무엇이든 대신할 수 있게 되는 것일텐데, 이런 점에서 인간에 대한 연구를 적극적으로 활용하여 언어 모델의 능력을 확장하려는 게 의미있고 바람직한 방향이라고 생각합니다.

댓글