CoT는 내부적으로 사용하고 외부 환경에 대한 정보를 못 다룬다
→ 블랙 박스 → 반응적으로 추론하거나 지식 업데이트 제한 → 환각 및 오류가 발생할 수 있다
사람들은 "acting", "reasoning"을 통해 빨리 학습하고 처음 보는 상황에 잘 대처한다
이를 바탕으로 ReAct + CoT 방식으로 내,외부 정보를 모두 활용하는 연구 진행
ReAct : Reasoning + Acting
주요 아이디어는 'Agent의 Action space를 키운다'
A^=A∪L (L은 언어 space)
L에서 action은 외부 환경에 영향을 받지 않는다 → 피드백 발생 안함
Decision-making 이랑 Reasoning 은 ReAct 에 통합
특징
직관적이고 쉬운 prompt design
일반적이고 유연함
성능 뛰어나고 견고함
인간이 제어할 수 있음
2. 실험
[Knowledge-Intensive Reasoning Tasks]
Domain : HotPotQA, FEVER
Action space : 3가지 Wiki API 디자인
search[entity] : top-5 유사도
lookup[string] : 문자열로 찾는다
finish[answer] : 답변과 함께 현재 task 종료
방법 : ReAct 프롬프팅
Baseline
기본 프롬프팅 : Thought, Action, Observation (X)
CoT : Action, Observation (X)
Acting-only : Thought (X)
ReAct, CoT 각각 장단점 존재 → 두 개를 결합
(A) ReAct → CoT-SC : ReAct에서 답변 X → CoT로 돌아간다
(B) CoT-SC → ReAct : n개 샘플의 다수 답변이 n/2회 미만 → ReAct로 돌아간다
Fine-tuning : 수동으로 만들기 힘들어서 ReAct에서 3000개 정답을 생성하고
파인튜닝한 작은 언어 모델에게 질문/주장을 넣고 답변 decode
결과
ReAct > Act
ReAct vs CoT
FEVER에서는 ReAct가 조금 더 앞서지만 HotPotQA는 아니다
(A) CoT에서 환각 문제 심각
(B) Reasoning, Action, Observation을 넣으면 CoT보다 추론 오류 더 많이 발생할 수 있다
(C) 검색을 통한 유익한 지식을 성공적으로 찾는게 중요 (RAG를 말하는건지...?)
ReAct + CoT-SC
결합 → 추론 작업을 위해 모델 내/외부 정보를 적절히 사용 → 좋은 성능이 나온다
FT ReAct 가장 좋은 성능 보임 PaLM-8/62B 모델에서 ReAct가 가장 worst 하지만 FT(3000개 example)하면 가장 best, 심지어 62B보다 성능 좋음 Standard/CoT는 FT해도 성능이 좋지 않음
→ 지식을 기억하게 가르치는 방식이기 때문이다
* 아직은 SOTA에 못 미치지만 잠재력을 봤음
[Decision Making Task]
ALFWorld, Webshop 가상환경에서 평가
※Webshop : ALFWorld와 달리 다양한 구조, 구조화되지 않은 문장들, 여러 상호작용이 많다
결과
ReAct가 두 가상환경에서 성능이 더 좋다
Wdbshop에서는 Act가 이미 IL+RL이랑 비슷하다
하지만 프롬프트 방식으로는 아직 사람 전문가 수준에 못 미친다
3. 결론
내부 추론과 외부 피드백의 가치
이전 연구인 'Inner Monologue'와 비슷하지만
다양한 작업에 대해 더 많은 추론을 유도할 수 있다