본문 바로가기
NLP/Prompt & Problem Solving

ReAct (2022) 논문 리뷰

by 아르카눔 2025. 5. 2.

ReAct는 Reasoning and Act의 약자로 논문 이름은 ReAct: Synergizing Reasoning and Acting in Language Models다. (링크)

 

저자는 Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao다. 

 

ReAct는 논문 제목에서도 알 수 있듯이 Reason과 Act를 한번에 한다.

 

즉 CoT 같은 추론과 search 같은 액션을 같이 수행한다.

 

아래 Figure 1을 보면 알 수 있다.

 

 

 

 

 

2. ReAct: Synergizing Reasoning + Acting

Time step $t$에서 agent 는 observation $o_t \in O$를 environment로 부터 받으며 action $a_t \in A$를 수행한다. 

이를 policy $\pi(a_t | c_t)$를 따른다.  

이때 $c_t = (o_1, a_1, ..., o_{t-1}, a_{t-1}, o_t$의 context다.  

정책의 학습에 있어서 $c_t \rightarrow a_t$의 매핑은 어렵다. 

 

ReAct에서는 액션 스페이스 $A$를 language space $L$을 이용해서 확장한다. $\hat{A} = A \cup L$.  

$\hat{a_t} \in L$은 thought 혹은 reasoning trace이며 외부 환경에 영향을 받지 않는다. 

주어진 현재 맥락 $c_t$에 대해서 $c_{t+1} = (c_t, \hat{a_t}$로 업데이트 되면서 미래의 reasoning과 acting을 지지한다.

 

ReAct는 다음의 특징을 지닌다.

 

A) Intuitive and easy to design

B) General and flexible

C) Performant and robust

D) Human aligned and controllable

 

 

3. Knolwedge-Intensive Reasoning Tasks

3.1. Steup

Domains:

HotPotQA, FEVER

 

Action Space:

Wikipedia web API를 이용해서 아래의 세 가지 액션을 디자인했다.

 

1. search[entity]: entity에 부합하는 첫 5 문장 혹은 Wikipedia 검색 엔진에서 도출된 비슷한 top-5 entities. 

2. lookup[string]: string을 포함하는 다음 문장으로 Crtl + F의 기능을 모방한다. 

3. finish[answer]: answer와 함께 현재 태스크를 종료한다. 

 

 

 

 

PaLM-540B를 활용해서 다른 방법들과 비교한 결과가 Table 1과 2에 나와있는데 ReAct를 도입한 경우에 더 좋은 성능임을 보여준다.

 

 

요즘 RAG를 실습할 때 reasoning 뿐만 아니라 중간에 판단해서 검색이 필요하면 검색 기능도 추가하고 하는데 거기에 기반이 된 논문이구나 싶다. 

 

 

끝으로 HotPotQA에 대한 프롬프트를 첨부하면서 마무리한다.

 

HotPot QA Prompt