본문 바로가기

Agent

Cognitive Architectures for Language Agents

검색, tool 사용, memory, planning 등의 구조를 LLM에 결합한 language agent들은 최근 인상적인 성능을 보여주고 있다. 다만 이러한 연구들을 체계적으로 이해하고 하나의 관점에서 정리할 수 있는 공통 프레임워크는 아직 부족하다.

논문에서는 이러한 문제의식에서 출발하여, CoALA(Cognitive Architectures for Language Agents) 프레임워크를 제안한다. 

[2309.02427] Cognitive Architectures for Language Agents

 

Cognitive Architectures for Language Agents

Recent efforts have augmented large language models (LLMs) with external resources (e.g., the Internet) or internal control flows (e.g., prompt chaining) for tasks requiring grounding or reasoning, leading to a new class of language agents. While these age

arxiv.org

 

1. Introduction

■ 초기 LLM(Fig 1A)은 텍스트를 입력으로 받아서 텍스트를 출력하는 도구에 가까웠다. 그리고 초기 에이전트들(Fig 1B)은 환경과 바로 상호작용하여 actions을 선택하거나 생성했다.  

■ 최근의 cognitive language agents(Fig 1C)은 의사결정을 향상시키기 위해 LLM을 사용하여 추론하고(reason), 계획하며(plan), 장기 기억(long-term memory)을 관리하고 있다.  

■ 다만, 최근 연구들은 용어들을 제각각 사용하고 있어 서로 다른 에이전트들을 비교하기 어렵다. 그래서 저자들이 제안하는 것이 CoALA이다.  

■ CoALA는 general-purpose language agents을 체계화하기 위한 개념적 프레임워크이다. 

■ CoALA는 다음 세 가지 축을 따라 에이전트를 체계화한다: information storage (working memory와 long-term memory로 나뉨), (2) action space (internal actions과 external actions로 나뉨), (3) decision-making procedure (planning과 execution이 포함된 interactive loop 구조) 

■ 이 세 가지 개념, 기억(memory), 행동(action), 의사결정(decision-making)을 통해 수많은 기존 에이전트들을 깔끔하게 통일하여 표현해 낼 수 있다. 



2. Background: From Strings to Symbolic AGI


2.1 Production systems for string manipulation

■ production system(또는 production rule system)은 전제 조건(precondition)'과 행동(action)으로 이루어진 규칙들의 집합이다. 전제 조건이 충족되면 해당 행동을 취할 수 있다.  

■ 이러한 production system의 가장 원초적인 형태는 string rewriting system이다. 

- 예를 들어 \( XYZ \rightarrow XWZ \) 형태의 규칙은, \( XYZ \)라는 문자열을 \( XWZ \)라는 문자열로 다시 작성될 수 있음을 의미한다.

- 예를 들어 주어진 문자열이 \( abcde \)이고, \( X=ab, Y=c, Z=de, W=XY \)라는 규칙들이 있다면, \( abcde=XYZ \)이며 \( abXYde = XWZ \)로 나타낼 수 있다.  


2.2 Control flow: From strings to algorithms

■ production system 자체는 그저 어떤 시작 문자열에서 어떤 문자열들이 생성될 수 있는지를 규정할 뿐이다.  

■ 즉, 가능한 변환의 집합이 무엇인지만 알려줄 뿐이지, 여러 규칙 중 어떤 규칙을 먼저 적용해야 하는지는 알려주지 않는다. 알고리즘이 되려면 이 선택이 정해져 있어야 한다.  

■ 저자들은 어떤 규칙이 실행될지 결정하는 control flow를 부여하면, 비로소 알고리즘이 된다고 말한다. 
- 예를 들어 마르코프 알고리즘은 priority ordering를 가진 production system이라고 할 수 있다. production system에 priority ordering이라는 control flow가 부여된 것으로 볼 수 있다. 

■ 아래 예시는 획 \( | \)으로 작성된 숫자(숫자를 | 개수로 표현)를, \( Q * R \)형태로 변환하여 5로 나눈 몫과 나머지를 구하는 알고리즘이다. 여기서 우선순위는 위에서 아래로 진행된다. 

■ 중요한 것은 production system에 control flow(이 예에서는 우선순위, 적용 순서(규칙))를 부여하면 알고리즘이 되며, 단순한 문자열 규칙만으로도 실제 계산 절차를 구현할 수 있다는 것이다.  


2.3 Cognitive architectures: From algorithms to agents

■ production system은 이후 단순한 문자열 재작성을 넘어 현재 상태를 보고 조건이 맞으면 action을 취하는 규칙으로 일반화되었다.  

■ 아래는 Human Problem Solving이라는 논문에서, 온도 조절기 에이전트를 구현하는 간단한 production system 예시이다. 

■ 이러한 production systems에 영향을 받아 탄생한 에이전트들은 외부 센서, 액추에이터, knowledge bases 등이 추가되었고, 이에 따라 이들을 어떻게 받아들일지를 관리하는 더 큰 틀이 필요해졌고, 연구자들은 cognitive architecture를 정의했다.   

■ cognitive architecture는 실시간으로 이루어지는 행동들을 달성하기 위해 perception, memory, planning과 같은 과정들을 함께 명시적으로 인스턴스화한 것이다. 대표적인 예가 Fig 2A의 Soar 아키텍처이다.

■ Soar는 long-term memory에 규칙들을 저장하고, 규칙들의 전제 조건이 working memory와 얼마나 일치하는지를 기반으로 작동된다. (Fig 2B) 

Memory

■ 심리학에 기반을 둔 Soar는 에이전트의 state를 추적하기 위해 여러 유형의 memory를 사용한다. 크게 보면 working memory long-term memory로 나뉜다.  

■ working memory는 에이전트의 현재 상황을 반영한다. 에이전트의 recent perceptual input, goals, 그리고 중간의 내부 reasoning 결과를 저장한다. 즉, 에이전트가 지금 이 decision cycle에서 참고해야 하는 정보를 저장하는 공간으로 볼 수 있다.  

■ long-term memory는 다시 세 가지 유형으로 나뉜다: procedural memorysemantic memoryepisodic memory

■ procedural memory는 production system 그 자체, 즉 에이전트의 행동을 결정하기 위해 working memory에 적용될 수 있는 규칙들의 집합을 저장한다.  

■ semantic memory는 세상에 대한 사실(facts)들을 저장하고, episodic memory는 에이전트의 과거 행동들을 저장한다.  

Grounding

■ Soar는 가상 시뮬레이션이나 real-world의 robotic systems에서 구현될 수 있다. 다양한 센서 입력(즉, perceptual input)을 working memory로 받아 decision-making에 사용한다.  

■ 또한 Soar 에이전트는 액추에이터를 통해 물리적 행동을 수행하고 언어를 통한 통한 대화형 학습이 가능하다.  

Decision making

■ Soar에서는 long-term procedural memory에 저장된 규칙들을 평가하고 현재 상황과 가장 잘 맞는 것을 적용하는 decision loop를 사용한다. (Fig 2B) 

■ 각 decision cycle마다 규칙들의 전제 조건이 working memory와 맞는지 검사한다. 지금 상태에서 어떤 규칙을 적용할 수 있는지를 확인하는 것이다.  

■ 그다음 proposal and evaluation 단계에서는, 일련의 규칙들이 사용되어 가능한 actions의 후보 집합을 생성하고 그 순위를 매긴다. 그리고 가장 적절한 action 하나를 선택한다.  

■ 그 후 또 다른 일련의 규칙들이 사용되어 선택된 action을 실행한다.  

■ 이러한 Soar의 의사결정은 현재 상태에 맞는 action을 체계적으로 고르기 위해, 규칙 확인 → 가능한 action 후보들 생성 → 평가 및 선택 → 실행의 반복 루프라고 볼 수 있다.  

Learning

■ Soar는 여러 가지 방식의 learning을 지원한다. 첫 번째는 long-term memory에 새로운 정보를 저장하는 것이다. 

■ facts은 semantic memory에, 경험들은 episodic memory에 저장할 수 있다. 나중에 의사결정이 필요할 때 이 정보들을 다시 working memory로 불러와 사용할 수 있다.  

■ 두 번째는 행동 자체를 수정하는 학습이다. 강화학습을 사용하여 좋은 결과를 낸 규칙들의 가중치를 높임으로써 에이전트가 경험으로부터 학습하도록 할 수 있다.  

■ 세 번째는 새로운 규칙들을 자신의 procedural memory에 직접 작성할 수 있다는 것이다. 

■ cognitive architecture는 한때 컴퓨터 과학 분야 전반에 걸쳐 광범위하게 사용되었지만, 점점 덜 주목받게 되었다. 저자들은 그 이유를 다음 두 가지 한계로 정리한다. 
- (1) logical predicates로 표현할 수 있는 도메인에만 적합하다. 
- (2) 제대로 작동시키려면 사람이 직접 규칙들을 설계해야 한다.
- 즉, 구조는 좋았지만 유연성과 확장성이 부족했던 것이다. 

■ 저자들은 LLM이 이 두 문제를 상당 부분 완화할 수 있다고 본다. 
- (1) LLM은 임의의 자연어 텍스트를 다룰 수 있으므로, 전통적인 논리 기반 시스템보다 훨씬 유연하다. 
- (2) 사용자가 일일이 규칙들을 지정해 줄 필요 없이, 방대한 인터넷 말뭉치에 대한 pre-training을 통해 규칙들을 이미 터득했다. (예: 이 문맥 다음에는 이런 단어가 올 확률이 높다.) 
- 즉, 경직성과 수작업 의존성은 LLM으로 완화할 수 있다는 것이 저자들의 판단이다.  



3. Connections between Language Models and Production Systems


3.1 Language models as probabilistic production systems

■ 문자열을 처리한다는 공통점을 바탕으로, 고전적인 production systems과 현대의 language models 사이에는 매우 자연스러운 analogy가 성립한다.  

■ production system은 시작 문자열에서 출발해, 일련의 문자열 재작성 규칙을 적용하면서 새로운 문자열을 만들어내는 체계이며, autoregressive LM 또한 주어진 문자열(프롬프트)을 입력받아, 그 뒤에 올 수 있는 문자열을 생성한다는 점에서 같은 틀로 해석할 수 있다. 

■ 예를 들어, 텍스트의 일부를 완성하는 문제를 하나의 규칙으로 정의할 수 있다. \( X \)가 프롬프트이고 \( Y \)가 그 뒤에 이어지는 문장이라면, 이것을 \( X \rightarrow XY \)라는 규칙으로 쓸 수 있다.  

■ 실제로는 가능한 이어지는 문장이 하나만 있는 것이 아니라 \( Y_1, Y_2, Y_3, \dots \)처럼 여러 개가 있을 수 있다. 이 경우 어떤 \( Y_i \)의 집합에 대해 \( X \rightarrow XY_i \) 형태가 된다.  

■ LLM은 이러한 각각의 완성된 문장들에 확률을 할당한다. 이 관점에서 LLM은 input \( X \)가 주어졌을 때 어떤 규칙을 선택할지에 대한 확률분포를 정의하며, 가능한 완성 문장들에 대한 조건부 분포 \( P(Y_i \mid X) \)를 산출한다. 그러므로 LLM은 호출될 때마다 가능한 완성 문장을 하나씩 샘플링하는 확률론적 프로덕션 시스템으로 볼 수 있다.  

■ 이러한 확률적 형태는 전통적인 프로덕션 시스템과 비교했을 때 장점과 단점을 모두 가진다. 

■ LLM의 주된 단점은 내부 규칙이 본질적으로 불투명하다는 것이다. 고전적인 프로덕션 시스템은 규칙이 사람이 읽을 수 있는 형태로 주어지기 때문에 왜 어떤 결과가 나왔는지 비교적 쉽게 추적할 수 있다.  

■ 반면, LLM은 해석이 불가능한 블랙박스 형태의 수십억 개의 파라미터 안에 지식과 행동 방식이 암묵적으로 저장되어 있어 내부 규칙이 불투명하다. 이러한 불투명성은 "확률"에서 비롯되는 무작위성(LM output은 확률적인 결과이므로)과 결합되어, 모델의 행동을 체계적으로 분석하거나 완벽하게 제어하는 것을 매우 어렵게 만든다.  

■ 그러나 model scale과 pre-training은 전통적인 프로덕션 시스템에 비해 많은 이점을 제공한다. 대규모 인터넷 데이터로 사전학습된 LLM은 문자열 완성에 대해, 문자열이 어떻게 이어지는 것이 자연스러운지에 대한 매우 강한 사전 지식을 학습하여, 별도의 추가 학습 없이도 즉각적으로 광범위한 tasks을 해결할 수 있다.  


3.2 Prompt engineering as control flow

■ LLM의 가중치는 입력 문자열(프롬프트)을 조건으로 하여, 어떤 출력 문자열이 더 그럴듯한지에 대한 우선순위를 정한다. 그리고 그 결과로 산출된 확률분포는 control flow로 볼 수 있다.  

■ few-shot learning과 prompt engineering에 대한 초기 연구들은, 입력 문자열을 pre-processing함으로써 LLM이 더 좋은 출력을 내도록 유도할 수 있다는 점을 보여주었다. 이렇게 입력에 추가 텍스트를 단순히 이어 붙이는 방법도 하나의 production으로 볼 수 있다.  

■ 저자들은 이런 방법들을 production sequence, 즉 production rule의 연쇄로 본다. zero-shot, few-shot, retrieval-augmented generation, self-critique 방법들이 모두 이런 식의 연속적인 문자열들로 표현할 수 있다. 즉, 프롬프트를 설계한다는 것은 입력 문자열이 LLM을 통해 사용자가 원하는 출력으로 도달하도록 규칙을 설계하는 것과 같다. 

■ 이후 더 동적이고 문맥을 인식하는, 즉 상황에 따라 달라지는 프롬프트로 확장되었다.

- 예를 들어 입력과 최대한 관련성이 높은 few-shot examples을 외부에서 동적으로 선택하여 붙이거나, 데이터베이스에서 얻은 외부 관찰 결과로 프롬프트 템플릿을 채우는 방식이 있다.  

■ 그리고 LLM 자체를 하나의 pre-processing 도구로 사용하는 연구들이 등장하기 시작했다. 최종 답변을 반환하기 전에, 문제에 적합한 reasoning을 이끌어내거나, 생각의 흐름과 같은 intermediate reasoning steps을 생성해 내게끔 한 것이다. 아래의 Fig 3은 LLM을 사용하는 방식이 어떻게 달라졌는지 나타낸 그림이다.

■ 초기(Fig 3A)에는 프롬프트를 통해 질문/지시를 하면 LLM은 그에 대한 응답 텍스트를 생성하여 task를 실행하는 단순한 방식이었다.  

■ 프롬프트 엔지니어링이 등장한 이후(Fig 3B), examples나 외부 정보를 입력으로 함께 사용하고 LLM이 스스로 자신의 답변을 평가하고 개선된 답변을 생성하는 방법들이 등장했다.  

■ 최근(Fig 3C)에는 LLM이 단순히 텍스트를 생성하거나 내부적으로 추론하는 것을 넘어 외부 환경과 상호 작용하는 도구로 발전하고 있다.  


3.3 Towards cognitive language agents

■ language agent는 미리 짜여진 prompt chains을 단순히 따르는 것을 넘어, LLM을 외부 환경과의 feedback loop 속에 배치시킨다. (Fig 1B) 

■ 이러한 접근 방식은 먼저 멀티모달 입력(예: 시각, 청각, 센서 데이터 등)을 텍스트로 변환하여 LLM에 전달한다. 그런 다음 LLM의 출력을 분석하여 action을 결정한다. (Fig 3C) 

■ 초기의 에이전트들은 LLM을 외부 환경과 직접 연결시켜, 현재 상태를 기반으로 "저 물건을 주워라"와 같은 지시사항을 생성하는 데 그쳤다.  

■ 이후 연구들은 action을 선택하기 전에 LLM을 사용하여 intermediate reasoning을 먼저 수행하는 보다 정교한  language agent를 개발했다.  

■ 가장 최근에 등장한 에이전트들은 미래의 행동을 개선시키기 위해 이전의 경험을 적극적으로 사용한다.

- 예를 들어 과거 행동들을 저장한 episodic memory를 reflecting하여 새로운 추론을 도출해 내거나, 프로그램 코드를 스스로 수정하여 procedural knowledge를 생성하기도 한다.  

■ 이런 최근의 에이전트들을 cognitive language agent라고 부를 수 있다. 외부 환경과 상호작용할 뿐 아니라, 내부적으로 reasoning, memory, learning 같은 인지적 기능을 갖추기 시작했기 때문이다.  



4. Cognitive Architectures for Language Agents (CoALA): A Conceptual Framework 

■ 저자들은 CoALA를 기존의 language agents을 체계적으로 정리하는 틀인 동시에, 앞으로 새로운 에이전트를 설계할 때 사용하는 개념적 프레임워크라고 소개한다.   

■ CoALA의 포인트는 LLM을 더 큰 cognitive architecture 안의 핵심 구성 요소로 둔다는 점이다. 즉, LLM을 하나의 도구로 보는 것이다.  

■ CoALA 체계에서 language agent는 정보를 memory modules에 저장하며, external action space와 internal action space에서 행동한다.  

■ external actions은 바깥 세계와 상호작용하는 행동이다. 예를 들어 로봇을 제어하거나, 사람과 대화하거나 웹사이트를 탐색하는 행동이 여기에 속한다. 저자들은 이런 external action이 grounding을 통해 이루어진다고 설명한다. 

■ internal actions은 에이전트의 내부 메모리들과 상호작용하는 행동이다. 저자들은 이를 접근 대상 메모리와 읽기/쓰기 방식에 따라 세 가지로 나눈다: (1) retrieval (long-term memory로부터 읽어오기), (2) reasoning (LLM을 사용하여 short-term working memory를 업데이트하기) (3) learning (long-term memory에 새로운 정보 쓰기) 

■ 전통적인 cognitive architecture에서는 규칙을 사람이 직접 작성해야 했지만, CoALA는 LLM이 상황에 맞게 새로운 지식이나 휴리스틱을 유연하게 생성할 수 있다.  

■ 그리고 LLM을 사용함으로써, 텍스트를 에이전트의 내부 표현 수단으로 사용할 수 있게 되어, 에이전트의 메모리 모듈을 더욱 간소화할 수 있다. 과거의 cognitive architecture는 여러 종류의 복잡한 기호 표현을 써야 했지만, LLM을 사용하는 에이전트에서는 다양한 메모리들, 외부 관찰 등이 모두 텍스트 형태로 통합될 수 있다.  


4.1 Memory

■ LM은 한 번의 호출이 끝나면 그 이전 호출에 대한 정보를 유지하지 못한다.

■ language agent는 외부 세계와 여러 단계에 걸쳐 상호작용해야 하므로, 내부적으로 정보를 저장하고 유지해야만 한다.  

■ 이 부분에 대해 CoALA 프레임워크에서는 서로 다른 역할을 가진 여러 memory module로 나눈다. 

■ 구체적으로, 크게 short-term인 working memory와 long-term memory로 나누며, long-term memory는 다시 episodic memory, semantic memory, procedural memory로 구분한다.   

Working memory

■ working memory는 현재 진행 중인 decision cycle에서 즉시 사용할 수 있는 정보를 유지한다. 여기에는 (perceptual) inputs, 활성화된 knowledge(reasoning에 의해 생성되거나 long-term memory에서 검색됨), 그리고 이전 cycle에서 넘어온 기타 핵심 정보(예: 에이전트의 현재 목표)가 포함된다.  

■ 이전 방법들은 LLM 자체의 context window를 working memory의 한 형태로 사용했다. 반면 CoALA에서는 working memory를 LLM 호출들 사이에서도 계속 유지되는 독립적인 데이터 구조로 본다. 

■ 구체적으로, LLM이 호출될 때마다 working memory의 일부(예: 프롬프트 템플릿과 관련 변수들)를 골라 프롬프트(LLM의 입력값)가 만들어진다. LLM의 출력값은 다시 파싱해서 다른 변수들(예: action name과 arguments)로 변환된 후 working memory에 다시 저장되며, 이는 해당 action을 실제로 실행하는 데 사용된다. 그리고 working memory는 LLM뿐만 아니라 long-term memories과 grounding interfaces과도 상호작용한다.  

■ 즉, working memory를 language agent의 여러 구성 요소들을 연결하는 중앙 허브 역할로 본다. 

Episodic memory

■ episodic memory는 과거의 의사결정에서 얻은 경험들을 저장한다. 이 경험들은 training input-output pairs, history event flows, trajectories, 또는 에이전트가 겪은 경험의 기타 표현들로 구성될 수 있다. 

■ 의사결정 사이클의 planning 단계에서, 이러한 episodes은 검색되어 working memory로 올라와서 에이전트의 추론을 뒷받침하기 위해 사용될 수 있다.  
- 예를 들어 에이전트가 비슷한 상황을 전에 겪었다면, 그 경험을 되살려 현재 행동을 더 잘 결정할 수 있다.  

■ 또한 에이전트는 학습의 한 형태로서 새로 얻은 경험을 episodic memory에 저장하여 보관할 수 있다.  

Semantic memory

■ semantic memory는 세상과 자기 자신에 대해 갖고 있는 일반적인 지식을 저장한다. episodic memory가 특정 사건의 기록이라면, semantic memory는 사건에서 추려낸 지식, 사실, 개념에 가깝다.  

■ reasoning이나 decision-making을 위해 검색을 활용하는 전통적인 NLP 또는 강화학습 접근법들은 외부 데이터베이스로부터 knowledge를 읽어온다.  
- 예를 들어 NLP의 RAG는 비정형 텍스트(예: 위키피디아)로 이루어진 semantic memory를 검색해 오는 것으로 볼 수 있다. 
- 강화학습에서 "reading to learn" approaches은 게임 메뉴얼을 semantic memory로 활용하여 에이전트의 행동 정책에 영향을 준다.  

■ 이러한 예시들은 본질적으로 읽기만 가능한(즉, read-only) semantic memory를 사용하지만, language agents은 경험으로부터 세상에 대한 지식을 축적하기 위해, LLM의 추론을 통해 얻은 새로운 지식을 semantic memory에 직접 write할 수 있다.  

Procedural memory

■ language agent는 두 가지 형태의 procedural memory를 가진다: 하나는 LLM 가중치 내부에 저장된 implicit knowledge이고, 다른 하나는 에이전트의 코드에 작성된 explicit knowledge이다.  

■ 에이전트의 코드는 다시 두 가지 유형으로 나눌 수 있다: action을 실제로 구현하는 절차(reasoning, retrieval, grounding, learning)와 decision-making 자체를 구현하는 절차가 들어간다.  

■ episodic이나 semantic memory는 초기에 완전히 비어 있거나 아예 존재하지 않을 수도 있지만, procedural memory는 agent가 처음 작동하기 위해 반드시 설계자가 초기화해 줘야 한다. 

■ 그리고 procedural memory에 새로운 코드를 덮어씀으로써 새로운 행동을 학습하는 것도 가능하지만, 잘못하면 버그를 만들거나 설계자의 본래 의도에서 벗어날 수 있다.  


4.2 Grounding actions

■ grounding procedures는 external actions을 실행하고, 그 결과로 얻은 feedback을 에이전트의 working memory에 text로 변환하여 넣는다.  

■ 에이전트가 외부 세계와 상호작용하는 모든 방식을 텍스트로 처리하기 때문에, 관찰과 행동을 주고받는 과정이 단순화된다.  

Physical environments

■ 이는 물리 세계 안에서 작동하는 경우이다. 이때 에이전트는 시각, 청각, 촉각과 같은 perceptual inputs을 바로 이해하지 못하므로,  pre-trained captioning models 등을 통해 텍스트 기반의 관찰 결과로 처리한다.  

■ 최근에는 LLM을 로봇의 두뇌로 활용하여 물리적 세계에서 actions이나 plans을 생성하는 로봇 공학 연구들이 등장하고 있다. perceptual inputs을 처리하기 위해 일반적으로 VLM이 사용되어 이미지를 텍스트로 변환하고, 이를 통해 LLM에 추가적인 문맥을 제공한다.  

Dialogue with humans or other agents

■ 언어를 생성할 수 있는 능력을 갖춘 에이전트는 도움이 필요할 때 스스로 도움을 요청하거나, 모호한 부분에 대한 해명을 요구할 수 있으며, 또는 사람들을 즐겁게 하거나 감정적으로 도울 수 있다.  

■ 최근의 연구들은 더 나아가 에이전트들 간의 상호작용을 통한 사회 현상 시뮬레이션, 토론, 안전성 향상, 또는 collabrative task solving을 보여주고 있다.  

Digital environments

■ 여기에는 일반적인 코드 실행뿐만 아니라 게임, API, 그리고 웹사이트와의 상호작용이 포함된다. 이러한 digital grounding은 물리적 환경이나 인간과의 상호작용에 비해 비용이 훨씬 저렴하고 처리 속도도 월등히 빠르다. 그래서 디지털 환경은 language agent를 테스트하기 위한 시험대로 사용되고 있다. 

■ 특히 external knowledge나 연산 능력의 증강이 필요한 NLP tasks의 경우, 구글 검색, 계산기, 번역기 같은 디지털 API들이 tools라는 이름으로 사용되는데, 이 tool 사용 역시 "일회성" 디지털 환경과 상호작용하는 것으로 해석할 수 있다.  


4.3 Retrieval actions

■ CoALA 프레임워크에서 retrieval procedure는 long-term memories에 있는 정보를 working memory로 읽어오는 절차이다. 정보의 성격과 memory의 유형에 따라 이는 rule-based, sparse 또는 dense retrieval 등 다양한 방식으로 구현될 수 있다.

■ 예를 들어, Voyager는 Minecraft world와 상호작용하기 위해 dense retrieval을 통해 스킬 라이브러리에서 code-based skills을 불러오는데, 이는 사실상 procedural memory에서 grounding procedures를 검색해 오는 것이다.  

■ Generative Agents는 recency (rule-based), importance (reasoning-based), relevance (embedding-based) scores의 combination을 통해 episodic memory으로부터 관련된 events을 검색한다.  

■ DocPrompting은 library documents을 불러와 코드 생성을 돕는데, 이는 semantic memory에서 지식을 retrieval하는 예시로 볼 수 있다. 

■ 인간의 decision-making에서 retrieval(기억을 떠올리는 것)이 핵심적인 역할을 함에도 불구하고, language agent 분야에서 상황에 맞게 적응하는 'context-specific recall' 메커니즘은 아직 충분히 연구되지 않았다.  


4.4 Reasoning actions

■ reasoning은 retrieval과 다르게 language agent가 working memory의 내용을 처리해서 새로운 정보를 생성하는 과정이다.  

■ long-term memory에서 working memory로 읽어오기만 하는 retrieval과 달리, reasoning은 working memory에서 정보를 읽고 동시에 working memory에 정보를 쓴다.  

■ 이를 통해 에이전트는 가장 최근의 관찰 결과나 최근의 trajectory, 또는 long-term memory에서 검색해 온 정보들을 요약하고 그 안에서 인사이트를 추출해 낼 수 있다.  

■ 이러한 reasoning은 그 결과를 long-term memory에 써넣어 보존하여 에이전트의 learning을 서포트하거나, 그 결과를 다음번 LLM 호출 시의 추가적인 문맥으로 사용하여 에이전트의 decision-making을 서포트하는 데 사용될 수 있다.  


4.5 Learning actions

■ learning은 정보를 long-term memory에 저장하는 것을 말한다. 매우 다양한 learning들이 있다. 

Updating episodic memory with experience

■ 첫 번째는 경험으로 episodic memory를 업데이트하는 것이다. 

■ 강화학습에서는 보통 trajectories을 저장해 policy를 개선한다.

language agent에서도 episodic memory에 추가된 경험들이 나중에 검색되어 에이전트가 reasoning이나 decision-making을 내릴 때 좋은 예시이자 논리적 근거로 사용될 수 있다.  

Updating semantic memory with knowledge

■ 최근 연구들은 LLM을 적용하여 raw experiences에 대해 추론하게 하고, 그 결과로 도출된 새로운 논리적 결론을 semantic memory에 저장한다.  

■ 예를 들어 Reflexion에서는 LLM을 사용해 과거에 실패했던 에피소드를 스스로 reflect하게 하고, 그 결과를 semantic knowledge로 저장해 두어 이후의 에피소드를 해결할 때 LLM의 문맥에 붙인다. semantic memory를 지식으로 업데이트하는 것이다. 

Updating LLM parameters (procedural memory)

■ LLM 가중치는 implicit procedural knowledge이며, 파인튜닝을 통해 특정 도메인에 맞게 조정될 수 있다. 

■ 이러한 파인튜닝은 지도학습이나 imitation learning, environment feedback을 통한 강화학습, human feedback, 도는 AI의 feedback 등 다양한 방식이 있다. 

■ 에이전트의 LLM을 파인튜닝하는 것은 비용이 매우 많이 발생한다. 그래서 현재의 연구들은 보통 언제 파인튜닝할지 스케줄을 지정해 둔다.  

■ training 기법이 더 효율적으로 발전하거나 에이전트가 특정 도메인 전용의 smaller LLM들을 활용하게 된다면, language agent가 언제, 어떻게 자신의 LLM을 파인튜닝할지 '자율적으로' 결정하도록 허용하는 것도 가능해질 수 있다.  

Updating agent code (procedural memory)

■ 에이전트가 스스로 자신의 코드를 업데이트하는 것은 procedural memory의 명시적 부분을 바꾸는 것으로 볼 수 있다.  

에이전트가 자신의 시스템 소스 코드 자체를 직접 업데이트하는 유형은 다음의 몇 가지로 나눌 수 있다.

• Updating reasoning

■ APE에서는 최적의 prompt instructions을 스스로 추론해 내고, 이 instructions을 LLM 프롬프트의 일부로 사용한다. 이러한 프롬프트의 자율적 업데이트는 추론하는 방법을 배우는 learning의 한 형태로 볼 수 있다.  

Updating grounding

■ Voyager에서는 코드 스킬들의 curriculum library를 지속적으로 확장하고 유지한다. 

Updating retrieval

■ 논문에서는 retrieval procedures 자체를 학습하는 것도 가능하다고 말하지만, 이 부분은 아직 language agent 연구에서 다루어지지 않았다고 말한다.  

■ query/document expansion이나 retrieval distillation은 language agent가 더 나은 retrieval procedures를 스스로 학습하는 데 큰 도움이 될 수 있다.  

Updating learning or decision-making

■ 이론적으로 CoALA 에이전트는 learning이나 decision-making procedures 자체를 스스로 학습할 수 있다.  

■ 단, 에이전트가 이런 핵심 절차를 스스로 업데이트하는 것에 대해 저자들은, 에이전트의 정상적인 기능뿐만 아니라 인간의 가치관을 따르는 alignment 측면에서 매우 risky하다고 주장한다. 실제로 당시 이러한 수준을 구현한 language agent는 없다고 말한다.  

■ 전통적인 강화학습 에이전트들이 한 가지 고정된 학습 방식만을 사용하고 오직 모델의 파라미터를 업데이트하는 방식으로만 학습하는 반면, language agent의 learning은 매우 다양하다.  

■ 이를 통해 에이전트는 task와 관련된 자연어 텍스트를 memory에 저장하는 방식(파라미터 업데이트보다 훨신 저렴하고 빠름)으로 초고속 학습을 할 수 있으며, 여러 형태의 학습을 융합하여 self-improvement 능력을 증폭시킬 수 있다.  


4.6 Decision making

■ action space에 다양한 actions(grounding, learning, reasoning, retrieval)이 존재할 때, language agent는 decision-making procedure를 통해 어떤 action을 실행할지 선택한다. 

■ 논문에서는 decision making을 에이전트의 최상위 프로그램 혹은 메인 프로그램이라고 설명한다. 

■ CoALA에서 decision making은 한 번의 선택으로 끝나지 않고, 반복적인 decision cycle로 구성된다.  

■ 각 cycle에서 에이전트는 먼저 planning 단계에서 여러 가능한 actions을 따져본 뒤, execution 단계에서 선택된 action을 실행한다. 이후 이 사이클은 다시 처음부터 루프를 돈다. 

Planning stage

■ planning 과정에서는, actions을 'propose', 'evaluate', 'select'하기 위해 에이전트는 reasoning과 retrieval를 사용한다.  

■ planning 과정은 단순히 한 번에 끝날 수도 있지만, 경우에 따라서는 'propose', 'evaluate', 'select'가 여러 번 반복되거나 서로 얽히면서 multi-step simulation처럼 작동할 수도 있다. 즉, 에이전트는 실제 action을 하기 전에, 내부적으로 여러 경우를 미리 상상해볼 수 있다.  

■ planning stage는 다음 세 단계로 나눠 볼 수 있다: proposal, evaluation, selection 

Proposal

■ proposal sub-stage는 하나 이상의 action candidates을 생성한다. 

■ 일반적인 방식은 reasoning(옵션으로 retrieval도 결합 가능)을 사용하여 LLM으로부터 하나 또는 여러 개의 external grounding actions을 샘플링하여 추출하는 것이다.  

■ 선택할 수 있는 actions이 제한적인 단순한 도메인에서는, proposal sub-stage가 단순히 가능한 모든 actions을 후보로 올릴 수도 있다.  

■ 반면, 더 정교한 에이전트들은 Python의 if-else 또는 while-if 같은 제어 구조를 통해 후보를 지능적으로 제안하며, 명확히 정의된 규칙을 가진 환경에 배치된 에이전트들은 내부의 시뮬레이터를 돌려 그럴싸한 미래 결과를 미리 생성해 보기도 한다.  

Evaluation

■ 여러 개의 action 후보가 제안되면, evaluation sub-stage에서는 각 후보에 value를 할당한다. 

■ 이 평가는 사람이 설계한 휴리스틱 규칙, LLM이 단어를 생성할 때의 perplexity 값, LLM 스스로의 논리적 추론, 또는 이들의 조합으로 수행될 수 있다. 

■ 특히 LLM은 action 후보를 실행했을 때 어떤 일이 일어날지를 내부적으로 시뮬레이션해서, 어떤 action이 높은 value를 가질지 평가하는 데도 쓰일 수 있다.  

value의 형태에 따라 선택은 가장 높은 값을 고르는 Argmax, 확률적으로 고르는 Softmax, 또는 majority vote 등의 방식을 통해 이루어질 수 있다.   

Selection

actions과 그에 대한 values이 주어지면, selection step에서는 실제로 실행할 action 하나를 선택하거나, 아니면 모든 후보를 reject하고 다시 처음의 proposal step으로 되돌려 보낸다.   

Execution

■ execution 단계에서는 선택된 action을 실행한다.  

■ action을 취한 후에는 환경으로부터 새로운 관찰을 얻게 되며, 이를 통해 에이전트의 action에 대한 피드백을 얻을 수 있고, 그렇게 decision cycle은 다시 처음부터 반복된다.  

■ 최근에는 여러 actions을 동시에 고려하기 위해 '반복적인 proposal과 evaluation'를 사용하는 복잡한 의사결정 메커니즘 연구들이 등장하기 시작했다. 이 연구들은 고전적인 탐색/계획 알고리즘을 완벽하게 모델링하고 있다.

예를 들어 Tree of Thoughts에서는 BFS/DFS 같은 탐색 아이디어를 LLM 기반으로 구현한다. 이 구조에서 LLM은 단순히 텍스트를 출력하는 것이 아니라, 특정 행동을 취했을 때의 미래를 상상하여 제안하고, 스스로 그 제안된 행동의 결과가 얼마나 좋을지 평가한다. 



5. Case Studies

■ 이 섹션에서는 몇 가지 사례에 CoALA 프레임워크의 내용을 적용하여, 해당 프레임워크가 범용적인 틀로 사용될 수 있는지 확인한다.  

SayCan

■ SayCan은 사용자의 명령(예: "방금 운동했는데, 회복하게 마실 거랑 간식 좀 갖다줄래?")을 수행하기 위해 주방 환경에서의 로봇 상호작용에 언어 모델을 현실 세계와 연동(즉, grounding)한다.  

■ 이 모델의 long-term memory는 오직 procedural memory뿐이며, action space도 오직 external action뿐이다.  

■ 그리고 reasoning, retrieval, learning과 같은 내부 행동은 전혀 없이 551개의 grounding skills(예: "사과 찾기", "테이블로 가기") set으로만 구성된다.  

■ decision-making 과정에서 SayCan은 특정 skill의 usefulness와 물리적 groundedness의 균형을 맞추기 위해 LLM과 learned value function을 함께 사용하여 각 action을 평가한다.  

■ 저자들은 SayCan이 LLM을 단순히 single-step planner로만 사용한다고 설명한다. external action을 선택하지만, 내부 memory를 적극적으로 다루는 cognitive agent라고는 할 수 없다.  

ReAct

■ ReAct는 디지털 환경(예: 위키피디아 API, 텍스트 게임, 웹사이트)에 grounded된 language agent이다. 

■ SayCan과 마찬가지로 semantic이나 episodic memory가 없으며, 따라서 retrieval나 learning actions이 존재하지 않는다. 

■ 이 모델의 action space는 (internal) reasoning과 (external) grounding으로 구성된다. 

■ ReAct의 decision cycle은 상황을 분석하고 plans을 (다시) 수립하기 위해 하나의 reasoning action을 사용하도록 고정되어 있으며, 이후 별도의 evaluation이나 selection stages 없이 곧바로 grounding action을 생성한다.  

■ ReAct는 internal 및 external actions을 동시에 활용하는 가장 단순한 형태의 language agent로 볼 수 있다. 그리고 이 둘의 시너지 효과를 최초로 입증한 연구이다. reasoning은 acting을 올바른 방향으로 안내하고, acting은 다시 reasoning을 뒷받침할 수 있는 환경적 피드백을 제공한다.  

Voyager

■ Voyager는 Minecraft API에 그라운딩된 language agent이다. learned value function을 통해 데이터를 처리하는 SayCan과 달리, Voyager의 grounding은 오직 텍스트로만 이루어진다. 

■ 이 모델은 'skills'이라 불리는 code-based grounding procedures(예: "combatZombie", "craftStoneSword")의 라이브러리를 저장하는 long-term procedural memory를 갖추고 있다.  

■ Voyager는 grounding, reasoning, retrieval, learning 네 가지 action을 모두 갖추고 있다. 

■ decision cycle에서 Voyager는 working memory에 새로운 목표가 누락되어 있다면, 먼저 reasoning으로 목표를 제안하고, 또 reasoning으로 그 목표를 해결할 code-based grounding procedure를 제안한다.  

■ 이후 환경 피드백을 보고 task가 성공했는지 추론한다. 성공했다면, Voyager는 해당 grounding procedure를 procedural memory에 추가하는 learning action을 수행한다. 실패했다면, reasoning을 사용하여 코드를 수정하고 다시 실행한다.  

■ ablations 결과, 이런 long-term memory와 procedural learning이 맵을 더 잘 탐색하고, 테크트리를 마스터하며, 본 적 없는 새로운 task에 zero-shot으로 일반화하는 능력에 도움이 되었다.  

Generative Agents

■ Generative Agents의 action space 역시 grounding, reasoning, retrieval, learning을 모두 가지고 있다. 

■ 각 에이전트는 사건들을 리스트 형태로 저장하는 long-term episodic memory를 갖고 있다. 

■ 이 에이전트들은 retrieval과 reasoning을 사용하여 자신의 episodic memory에 대한 reflections을 생성하며, 이 reflections은 long-term semantic memory에 새로운 정보로 저장된다.  

■ decision-making에서 에이전트는 semantic memory에서 관련된 reflections을 검색한 다음, 이를 바탕으로 추론하여 plan을 세운다. 

이 plan을 실행하는 동안 에이전트는 관찰들을 지속적으로 수신하며, 이를 바탕으로 추론을 수행하여 기존 plan을 그대로 유지하거나 상황에 맞게 유동적으로 조정할 수 있다.   

Tree of Thoughts (ToT)

■ ToT는 'reasoning problem(game of 24, creative writing, crosswords puzzle)에 대한 최종 정답을 제출하는 것'이라는 단 하나의 external action만을 가진 특수한 종류의 language agent로 볼 수 있다.  

■ long-term memory를 가지고 있지 않으며, internal action space에도 오직 reasoning만 존재한다. 

■ 그러나 그 전에 등장한 모든 에이전트들과 뚜렷하게 구별되는 점은 바로 "deliberate decision-making" 과정에 있다.  

■ 구체적으로, planning을 세우는 동안 ToT는 LLM의 추론을 기반으로 "thoughts"을 반복적으로 제안(proposes), 평가(evaluates), 선택(selects)하며, 트리 탐색 알고리즘(BFS/DFS)을 통해 이들을 유지함으로써 backtrack과 lookahead는 물론이고 global exploration까지 가능하게 만든다.