CoALA Paper review

Cognitive Architectures for Language Agents

https://arxiv.org/abs/2309.02427

CoALA는 Princeton에서 나온 논문이다. (TMLR 2024) 저자에 또 Shunyu Yao가 있다.

지금까지의 리뷰가 전부 실험 논문이었다면 이 논문은 성격이 다르다. 새 에이전트를 만들지 않는다. 대신 흩어져 있는 에이전트 연구들을 하나의 틀로 정리하는 프레임워크 논문이다. 우리가 리뷰한 ReAct, Voyager, Generative Agents가 이 논문의 사례 연구로 등장하므로, 시리즈의 중간 결산으로 읽기 좋다.

Introduction

에이전트 연구는 빠르게 쌓였는데 용어는 제각각이다. 어떤 논문은 메모리를 말하고, 어떤 논문은 스킬을 말하고, 어떤 논문은 반성을 말한다. 서로 무엇이 같고 무엇이 다른지 비교할 공통 언어가 없다.

Planning·Memory·Tool Use라는 3분류가 통용되긴 한다. 다만 그것은 부품의 카탈로그에 가깝고, 논문도 이런 정리들을 empirical survey로 인용하며 자기와 구분한다. CoALA가 하려는 것은 부품 간 관계까지 명세하는 이론이다. Tool Use는 grounding으로, Planning은 의사결정 사이클로, Memory는 4종과 읽기/쓰기 행동으로 분해된다. 통념 분류에 없던 두 가지가 추가되는데, 학습을 일급 행동으로 둔 것과 LLM 가중치·에이전트 코드 자체를 기억으로 본 것이다.

논문의 제안은 이것을 새로 발명하지 말자는 것이다. 인지과학과 심볼릭 AI가 수십 년 동안 같은 문제(기억, 행동, 의사결정을 가진 시스템을 어떻게 조직할 것인가)를 다뤄왔으니, 그 역사에서 틀을 가져온다.

LLM 사용의 세 단계 (논문 Figure 1)

논문은 다루는 대상부터 그림으로 구분한다. A는 텍스트가 들어가고 나오는 LLM 그 자체다. B는 LLM을 환경과의 피드백 루프에 넣은 language agent다. C는 여기에 더해 LLM을 내부 상태 관리(기억, 회상, 학습, 추론)에도 쓰는 cognitive language agent다. 이 논문의 대상은 C고, 그림 C의 인용 세 개가 ReAct, Reflexion, Voyager다. 우리가 리뷰해온 논문들이 정확히 이 단계에 있다.

Production System에서 인지 아키텍처까지

출발점은 1950년대의 production system이다. “조건 → 행동” 규칙의 집합으로, 온도조절기가 대표 예시다. (온도 < 32° → 수리 요청; 온도 < 70° ∧ 보일러 꺼짐 → 보일러 켜기)

규칙만으로는 부족해서, 이 규칙들을 언제 어떻게 적용할지 관리하는 구조가 필요해졌다. 그렇게 나온 것이 인지 아키텍처다. 대표작 Soar는 production을 장기 기억에 저장하고, working memory와의 매칭으로 행동을 선택하고, 학습으로 규칙을 갱신한다.

Soar 아키텍처 (논문 Figure 2)

이 그림을 기억해두면 뒤에 나오는 CoALA 그림이 낯설지 않다. 구조가 거의 같기 때문이다.

논문의 핵심 관찰은 LLM이 확률적 production system이라는 것이다. production이 문자열을 조건에 따라 다른 문자열로 바꾸는 규칙이라면, LLM은 입력 문자열의 이어질 내용을 확률적으로 생성하는 production이다. 이 관점에서 프롬프팅 기법들은 production의 나열이 된다.

프롬프팅 기법을 production 시퀀스로 (논문 Table 1)

Zero-shot은 production 하나, RAG는 검색 production 뒤에 LLM production, Self-Critique는 생성 → 비평 → 수정의 production 세 개다. 프롬프트 엔지니어링이 임기응변이 아니라 제어 흐름 설계라는 것을 보여주는 정리다.

LM에서 Language Agent로

LLM 호출에서 에이전트까지 (논문 Figure 3)

LLM 호출 하나(A)는 프롬프트 구성 → 호출 → 출력 파싱 → 실행이다. 이를 미리 정한 순서로 엮으면 프롬프트 체이닝(B)이 된다. 여기까지는 흐름이 고정이다. 환경의 피드백이 다음 호출에 들어오는 루프(C)가 생기는 순간 에이전트가 된다. ReAct가 정확히 이 지점이었다.

CoALA: 기억, 행동, 의사결정

CoALA는 언어 에이전트를 세 가지 축으로 규정한다. LLM은 이 아키텍처의 중심 부품이지 전부가 아니다.

이제부터는 서론의 대응을 따라가면 된다. 이 섹션의 기억이 통념의 Memory, 행동 공간이 Tool Use, 의사결정 사이클이 Planning에 해당한다. 각 축에서 CoALA가 통념보다 무엇을 더 쪼개고 무엇을 추가했는지를 보면 된다.

CoALA 프레임워크 (논문 Figure 4)

기억 (Memory)

통념의 Memory에 해당하는 축이다. LLM은 stateless다. 호출 사이에 아무것도 기억하지 않는다. 에이전트가 여러 스텝을 이어가려면 기억 모듈이 필요하고, 통념이 뭉뚱그려 Memory라 부르는 것을 CoALA는 4종으로 나눈다.

  • Working memory: 현재 의사결정 사이클에서 쓰는 정보를 담는 공간. 지각 입력, 목표, 중간 추론 결과가 여기 있고, 매 LLM 호출의 프롬프트가 여기서 합성된다
  • Episodic memory(일화 기억): 과거 경험의 기록. Generative Agents의 memory stream, Reflexion의 반성문이 여기 속한다
  • Semantic memory(의미 기억): 세계에 대한 지식. RAG가 읽어오는 지식 베이스가 대표적이다
  • Procedural memory(절차 기억): 행동 방법 그 자체. Voyager의 스킬 코드가 여기 속하는데, 논문은 LLM의 가중치와 에이전트의 소스 코드도 절차 기억으로 본다. 에이전트가 자기 코드를 고치는 것은 절차 기억에 대한 쓰기 행동이다

행동 공간 (Action Space)

행동 공간의 구분 (논문 Figure 5)

Tool Use에 해당하는 축인데, CoALA의 확장이 가장 큰 곳이다. 통념에서 도구 사용이라 부르는 것은 아래의 외부 행동뿐이고, CoALA는 그 옆에 내부 행동 3종을 나란히 둔다.

  • 외부 행동 = grounding: 물리 환경 제어, 사람과의 대화, 디지털 환경(API, 웹, 코드 실행) 조작
  • 내부 행동 3종: retrieval(장기 기억 읽기), reasoning(LLM으로 working memory 갱신), learning(장기 기억에 쓰기)

생각하고, 기억을 읽고, 기억에 쓰는 것을 전부 “행동”으로 취급한다. ReAct가 thought를 action space에 넣었던 그 발상이 프레임워크 전체로 일반화된 것이다.

각 내부 행동의 구현도 정리한다. retrieval은 규칙 기반, sparse(키워드), dense(임베딩) 검색으로 나뉘고, Voyager의 스킬 검색과 Generative Agents의 3점수 회상이 예시다. learning은 쓰는 대상에 따라 넷이다. 일화 기억에 경험 쓰기, 의미 기억에 지식 쓰기(반성이 여기 해당), 절차 기억에는 LLM 파인튜닝 또는 에이전트 코드 수정 — 마지막이 가장 강력하고 가장 위험하다. 기억을 지우거나 고치는 학습(unlearning)은 아직 미개척이라고 짚는다.

의사결정 사이클 (Decision-Making)

Planning & Reasoning에 해당하는 축이다. 에이전트의 동작은 사이클의 반복이다. 관찰이 들어오면 계획 단계에서 reasoning과 retrieval로 후보 행동을 제안(propose)하고, 평가(evaluate)하고, 선택(select)한다. 선택된 행동(grounding 또는 learning)이 실행되고, 새 관찰과 함께 다음 사이클이 시작된다.

논문은 이것을 프로그램의 main 루프에 비유한다. 단순한 에이전트는 제안 하나를 바로 실행하고(ReAct), 정교한 에이전트는 여러 후보를 평가·선택한다(Tree of Thoughts의 탐색이 이 자리에 들어간다).

Case Studies: 우리가 리뷰한 논문들의 자리

CoALA로 분류한 에이전트들 (논문 Table 2)

이 표가 이 논문의 결론이다. 우리가 리뷰해온 논문들이 행으로 정리되어 있다.

  • SayCan: 로봇 grounding만 있는 극단. 내부 행동이 하나도 없고, 고정된 스킬 551개를 LLM+가치 함수로 평가만 해서 고른다
  • ReAct: 장기 기억 없음. 내부 행동은 reasoning뿐, 의사결정은 제안 하나를 바로 실행. 가장 단순한 형태고, 이후 에이전트들은 여기에 기억과 학습을 더해왔다
  • Voyager: 절차 기억(스킬 코드)을 가진 에이전트. reasoning, retrieval(스킬 검색), learning(스킬 저장)을 전부 쓴다
  • Generative Agents: 일화 기억(경험)과 의미 기억(반성으로 만든 지식)을 가진 에이전트. 역시 내부 행동 3종을 전부 쓴다
  • Tree of Thoughts: 기억 대신 의사결정을 고도화한 쪽. 제안-평가-선택 전체를 구현했다

표로 놓고 보면 각 논문이 프레임워크의 어느 칸을 채웠는지가 드러난다. Reflexion을 이 표에 넣는다면 일화 기억 + learning이 채워진 행이 될 것이다.

Actionable Insights

§6은 프레임워크에서 도출한 실천 지침이다. 전부 “~를 넘어 생각하라(thinking beyond)” 형식으로 되어 있다.

  • Modular agents — 모놀리스를 넘어: RL에 MDP라는 이론과 Gym이라는 표준 추상이 있었듯, 에이전트에도 Memory/Action/Agent 같은 표준 추상이 필요하다. 회사라면 팀마다 제각각 에이전트를 만들지 말고 공용 에이전트 라이브러리 하나를 유지하라. 절차 기억의 두 형태도 구분해서 쓰라 — 코드는 해석 가능하지만 예상 못한 상황에 취약하고, LLM은 유연하지만 불투명하다. 코드는 LLM의 한계를 보완하는 일반 알고리즘(자기회귀 생성의 근시안을 보완하는 트리 탐색 등)에 아껴 쓰라
  • Agent design — 단순 추론을 넘어: 설계 레시피를 준다. 필요한 기억 모듈을 정하고 → 기억별 읽기/쓰기 권한으로 내부 행동 공간을 정의하고 → 의사결정 절차를 정한다. 쇼핑 도우미 예시가 구체적이다. 상품 목록은 의미 기억(읽기 전용), 고객 이력은 일화 기억(읽기+쓰기), 자기 코드는 절차 기억(읽기 전용, 스스로 고치면 안 되니까). 의사결정 절차가 복잡할수록 특정 도메인에 강해지고(Voyager), 단순할수록 범용이 된다(ReAct)
  • Structured reasoning — 프롬프트 엔지니어링을 넘어: 저수준 문자열 조작 대신 구조화된 출력으로 working memory 변수를 갱신하라. 역으로, 에이전트에서 검증된 추론 형식(self-evaluation, reflection)이 LLM 학습 데이터를 재편할 것이라고 내다본다
  • Long-term memory — RAG를 넘어: RAG는 사람이 쓴 문서를 읽기만 한다. 에이전트의 기억은 스스로 만든 내용을 읽고 쓴다. 교과서(의미 기억)로 시작해서 경험(일화 기억)을 쌓고, 반성으로 새 지식을 만들고, 코드 라이브러리(절차 기억)로 축적하는 평생 학습 경로를 제시한다
  • Learning — in-context와 파인튜닝을 넘어: 학습을 “장기 기억에 쓰기” 전반으로 확장하면, 자기 코드를 고치는 메타 학습까지 시야에 들어온다
  • Action space — 외부 도구를 넘어: 행동 공간을 명시적으로 정의하라. 행동 공간이 클수록 유능하지만 의사결정이 어려워지므로, 과제를 푸는 최소 행동 공간이 낫다. 안전도 행동 공간의 문제다. learning 행동(자기 코드 수정·삭제)은 내부 위험, grounding 행동(터미널의 rm, 위험 발언)은 외부 위험이라, 키워드 필터 같은 태스크별 임시방편을 넘어 행동 공간 명세와 최악 시나리오 분석이 필요해진다
  • Decision making — 행동 생성 하나를 넘어: 대부분의 에이전트가 아직 제안 하나를 바로 실행하는 수준이다. 제안-평가-선택을 제대로 쓰는 의사결정이 가장 유망한 방향이라고 본다

2023년의 제안인데 지금 보면 상당수가 현실이 됐다. 구조화 출력은 function calling으로 표준이 됐고, 에이전트 프레임워크들은 Memory/Agent 추상을 갖췄고, 행동 공간의 안전은 권한과 샌드박스로 구현되고 있다. 프레임워크의 가치를 예측력으로 증명한 셈이다.

Discussion: 다섯 가지 열린 질문

§7은 프레임워크가 드러내는 미해결 질문들이다. 2023년의 질문인데 대부분 아직도 질문이다.

  • LLM vs VLM: 추론은 언어 전용이어야 하는가. 관찰을 캡셔닝 모델로 텍스트화하는 모듈형과 이미지를 표현 공간에 직접 투영하는 통합형이 있는데, 논문은 둘 다 “비언어 모달리티를 추론 모델의 언어 영역으로 토크나이징하는 방식의 차이”로 본다
  • 내부 vs 외부: 에이전트와 환경의 경계는 어디인가. Wikipedia는 의미 기억인가 외부 환경인가. 논문의 답은 통제 가능성과 결합도다. 위키는 다른 사용자가 언제든 바꿀 수 있으니 외부 환경이다
  • 물리 vs 디지털: 동물은 한 번 살지만 디지털 에이전트는 리셋과 병렬 복제가 된다. 웹페이지 백만 개를 열어보는 탐색이 가능하므로, 인간 인지에서 영감을 받은 지금의 의사결정과는 다른 형태가 나올 수 있다
  • 학습 vs 행동: 대부분의 에이전트는 학습 시점이 고정되어 있다(실패하면 반성, 세션 끝에 저장). 생물은 언제 무엇을 배울지도 선택한다. 학습을 의사결정 사이클의 선택지로 두고 적절한 때로 미루는 에이전트가 다음 단계다
  • GPT-4 vs GPT-N: 모델이 강해지면 아키텍처는 필요 없어지는가. GPT-2로는 에이전트가 성립하지 않았고, GPT-4에서야 자기 평가가 돌아가기 시작했다. 논문은 GPT-N이 기억·grounding·의사결정을 통째로 시뮬레이션하는 사고실험까지 던진다. 프레임워크 논문이 자기 프레임워크의 소멸 조건을 명시한 것이다

지금 관점: 에이전트를 읽는 체크리스트

이 논문은 벤치마크 수치가 없다. 기여는 전부 개념 정리다. 그런데 그 정리가 실무에서 쓸모가 있다.

새 에이전트 프레임워크나 논문을 볼 때 세 가지 질문을 던지면 구조가 파악된다. 어떤 기억을 쓰는가(4종 중), 행동 공간에 무엇이 있는가(내부 3종 + grounding), 의사결정은 얼마나 정교한가(제안만 하는가, 평가·선택까지 하는가).

통념의 3분류로도 같은 질문을 할 수 있지 않나 싶지만, 해보면 차이가 난다. 통념으로 물으면 “Memory 있음/없음” 수준에서 답이 끝난다. Voyager와 Generative Agents는 둘 다 “Memory 있음”이지만, CoALA로 물으면 하나는 절차 기억(실행 가능한 코드)이고 하나는 일화·의미 기억(자연어)이라는 것, 그래서 하나는 기억을 재실행하고 하나는 기억을 참고한다는 설계 차이까지 드러난다. Planning도 마찬가지다. ReAct와 Tree of Thoughts는 둘 다 “Planning 함”이지만, 하나는 제안 하나를 바로 실행하고 하나는 제안-평가-선택을 전부 돌린다. 분해된 질문이 분해된 답을 준다.

이 리뷰 시리즈에서 논문마다 따로 이해했던 memory stream, 스킬 라이브러리, 반성문이 사실 같은 틀의 다른 칸이었다는 것을 이 논문이 보여준다.

한계도 프레임워크 논문답다. 어떤 조합이 좋은지에 대한 실증적 답은 없고, 분류가 예측을 주지는 않는다. 그리고 §7의 경계 질문은 지금 더 첨예해졌다. function calling과 긴 컨텍스트가 모델에 내장되면서, working memory와 외부 기억의 경계, reasoning과 grounding의 경계는 논문이 쓰일 때보다 흐려졌다.

Conclusion

에이전트 연구가 각자 발명하던 개념들(기억, 스킬, 반성, 계획)이 인지 아키텍처가 수십 년 전에 정리한 구조의 재발견이라는 것을 보였다. 기억 4종, 내부/외부 행동, 제안-평가-선택 사이클이라는 어휘를 얻으면 흩어진 논문들이 한 장의 표로 정리된다.

ReAct에서 시작해 Voyager와 스몰빌까지 온 이 시리즈의 논문들도 그 표의 행이었다. 다음에 어떤 에이전트를 만나든, 세 가지 질문이면 위치를 잡을 수 있다.

Leave a comment