최근 Yao et al., 2022의 연구에서 소개된 ReAct 프레임워크는 대규모언어모델의 사용 방식에 혁신을 가져왔습니다. 이 프레임워크는 추론 추적과 작업별 행동을 인터리브 방식으로 생성하여, 모델이 행동 계획을 유도, 추적, 업데이트하고 예외를 처리할 수 있게 합니다.
ReAct의 핵심 개념
ReAct는 인간의 학습 및 의사 결정 과정에서 영감을 받아, "행동"과 "추론"의 시너지 효과를 모델링합니다. 이는 대규모언어모델이 외부 소스와 상호 작용하며 정보를 수집하고, 보다 신뢰할 수 있고 사실적인 응답을 생성하는 데 도움을 줍니다.
ReAct의 장점
ReAct 프레임워크는 언어 및 의사 결정 작업에서 여러 최신 기술의 기준선을 능가하는 성능을 보여주었습니다. 특히, 인간의 해석 가능성과 대규모언어모델의 신뢰성을 향상시키는 데 중점을 두고 있습니다. 연구 결과에 따르면, 추론 과정에서 얻은 내부 지식과 외부 정보를 모두 사용하는 것이 가장 효과적인 접근 방식으로 나타났습니다.
ReAct의 작동 원리
ReAct는 대규모언어모델이 언어 추론 추적과 행동을 생성하도록 유도합니다. 이를 통해 모델은 행동에 대한 계획을 생성, 유지 및 조정하면서 외부 환경(예: Wikipedia)과의 상호 작용을 통해 추론에 추가 정보를 통합할 수 있습니다. 이 과정은 생각의 사고(CoT) 프롬프팅과 유사하며, 산술 및 상식적 추론과 관련된 질문에 대한 답변 생성에 효과적입니다.
ReAct Prompting
https://www.promptingguide.ai/kr/techniques/react 여기에서 내용을 참고하였습니다.
첫 번째 단계는 트레이닝 세트(예:HotPotQA)에서 사례를 선택하고 ReAct 형식의 궤적을 구성하는 것입니다. 이것들은 프롬프트에서 퓨샷(few-shot) 견본으로 사용됩니다. 궤적은 위 그림과 같이 여러 생각-행동-관찰 단계로 구성됩니다. 자유 형태 사고는 질문 분해, 정보 추출, 상식/산술적 추론 수행, 검색 공식화 안내, 그리고 최종 답변 합성과 같은 다른 작업들을 수행하는데 사용됩니다.
질문 콜로라도 조산 운동의 동쪽 구역이 확장되는 지역의 표고 범위는 얼마이니?
생각 1 콜로라도 조산 운동을 검색하여, 콜로라도 조산 운동의 동쪽 구역이 확장되는 지역을 찾은 다음, 그 지역의 표고 범위를 찾아야 해.
행동 1 검색하기[콜로라도 조산 운동]
관찰 1 콜로라도 조산 운동은 콜로라도와 그 주변 지역에서 산이 형성되는 과정(조산 운동)을 말해.
생각 2 동부에 대한 언급이 없어. 그래서 동부 섹터를 찾아봐야겠어.
행동 2 찾아보기[동부 섹터]
관찰 2 (결과 1 / 1) 동쪽 섹터는 고원 지대까지 뻗어 있고 중앙 평원 조산 운동이라고 불려.
생각 3 콜로라도 조산 운동의 동쪽 섹터는 고원 지대까지 뻗어 있어. 따라서 고원 지대를 검색하여 해발 범위를 찾아야 해.
행동 3 검색[고원 지대]
관찰 3 고원 지대는 두 개의 다른 지대 중 하나를 가르켜.
생각 4 대신 고원 지대(미국)를 검색해야해.
행동 4 검색[고원 지대 (미국)]
관찰 4 고원 지대는 대평원\(the Great Plains\)의 일부 지역이야. 동쪽에서 서쪽으로, 고원 지대는 약 1,800피트에서 7,000피트(550~2,130m)까지 고도가 높아져.[3]
생각 5 고원 지대의 해발 고도는 약 1,800~7,000피트이므로, 정답은 1,800~7,000피트야.
행동 5 완료[1,800~7,000피트]
...
말 그대로 LLM 을 추론할 때 Tool 기능을 통해 그저 CoT를 통한 생각만 할게 아니라 "~ 하기 때문에 이제 ~한 행동을 해야겠다:" 와 같은 과정과 생각을 통해서 단계적으로 수행 하는 것이다. ex) 동부 섹터를 찾기 위해 구글에 검색을 해야겠다. 동부센터가 무엇인지
질문에 관련된 생각을 하고, 또 무엇을 찾아보고 고민하고 다음을 찾고, 그 결과를 분석하고 또 생각을 하는 prompt 입니다. 원인 분석과 행동을 하는 퓨삿 프롬프트를 모델에게 알려주어서 생각하고 행동 추론과정을 거칠 수 있게 하는거라고 생각하면된다.
langchain 으로 chainig 이 가능해서 충분히 구현은 가능해보인다. 하지만 시간은 CoT 자체도 오래걸리기 때문에 얼마나 오래걸릴지는 감이 오질 않는다. 사실상 이렇게 신뢰성이 중요한 문제는 시간과의 싸움이기도 한 것 같다.
'AI > Contents' 카테고리의 다른 글
WIZnet Chatbot 개발 일지 - 제품 이름 환각현상 해결하기 (1) | 2023.12.29 |
---|---|
[Langchain] 평점기반의 맛집 RAG LLM 구축하기 (0) | 2023.12.15 |
전참시에 나온 ChatGPT를 사용하는 ZionT (2) | 2023.12.12 |
OpenAI의 Assistants API로 개인 수학 튜터 만들기 (2) | 2023.12.05 |
[Langchain] RAG 멀티모달을 활용한 추론 - 이력서 첨삭 튜터 (1) | 2023.11.30 |