[arXiv](Current version v1)
Abstract
Open-world 환경에서 게임 경험을 향상할 수 있는 Language Agent for Role-Playing (LARP) 소개
Cognitive Architecture
- Long-Term Memory
- Working Memory
- Memory Processing
- Decision Making
Long-Term Memory
인지 과학에서 장기 기억은 declarative memory, procedural memory로 나뉘며, declarative memory는 또다시 semantic memory와 episodic memory로 나뉜다.
Semantic memory는 open-world(이하 game은 생략)의 관점에서 게임 규칙이나 세계관에 부합하는 기억으로 볼 수 있다. 내용이 자주 변경되지 않는 부분은 외부 데이터베이스로, 일부는 장기 기억 모듈에 저장된다.
Episodic memory는 개인이 경험한 특정 사건에 대한 기억으로 다른 player 또는 agent(AI로 움직이는 NPC)와 관련된 기억일 수 있다. 장기 기억 모듈에 저장되며 시간이 지남에 따라 감쇠 피라미터가 도입되었다.
procedural memory는 시스템 내 행동 공간에서 API로 표현된다.
인지된 모든 기억은 장기 기억 모듈의 semantic zone과 episodic zone에 저장되며 스스로 질문을 생성하는 Question-based Query라는 방법에 의해 검색된다.
Working Memory
Working memory는 단기기억으로써 data cache로 존재하며 일반적으로 agent의 관찰을 통해 획득한다.
Memory Processing
지각된 입력 정보는 부호화되어 장기 기억의 content로 변환되고 회상할 수 있다.
LARP에서는 모든 구조화된 관찰 정보를 처리하고 검색된 content와 결합하여 working memory에 저장하는 방식으로 시뮬레이션한다. 이 정보는 의사 결정 모듈의 입력으로 사용되어 working memory의 content를 지속적으로 업데이트한다. Working memory가 임계값에 도달하면 비효율적인 기억이 걸러지고 처리된 기억은 semantic, episodic memory 중 하나로 저장된다.
Question-based Query: LLM이 스스로 agent의 관찰, 성격, 경험에 관한 질문을 제기하도록 유도하여 query를 구성하고 검색을 위해 3가지 방법을 채택했다.
- Logic programming search: 사용 가능한 규칙과 사실에 기반하여 self-ask에 답함
- Similarity search 1: self-ask를 유사도 검색을 위한 쿼리로 사용하여 database의 QA pair와 일치시킴
- Similarity search 2: self-ask에서 추출한 keyword를 사용하여 database의 기억과 일치시킴
최종 답변을 얻을 때까지 반복된다.
회상이 작동할 때 망각 확률을 표시하기 위해 감쇠 피라미터 σ 도입.
Scoring model이 부여한 중요도 λ, 검색 횟수 N, 마지막 검색 후 경과된 시간 t, 각 character에 대한 망각률 ψ, 중요도와 시간에 대한 scaling parameter α, β
Decision Making
의사 결정 모듈의 각 unit은 단순한 정보처리 unit일 수도 있고, finen-tuned LLM이 장착된 복잡한 unit일 수도 있다. 이러한 unit은 무한히 확장 가능하며 각 unit은 실시간으로 working memory와 통신하면서 memory를 업데이트하여 적시에 대응할 수 있다. Unit의 실행 순서는 LLM assistant에 의해 결정되고 최종 출력은 NPC를 위한 작업이나 대화가 될 수 있다.
Environment Interaction
Open world에서 agent는 게임 환경과 상호작용해야 한다.
Action space는 agent가 실행할 수 있는 API로 public, personal API를 모두 포함한다.
의사 결정 모듈에서 계획을 생성하고 순서에 따라 엄격하게 정렬된 하위 작업 목표로 세분화한다. 시스템은 이를 working memory와 통합하고 retriever를 통해 각 API에서 검색한다.
해당하는 작업이 personal API에 존재할 경우 즉시 수행하며 그렇지 않은 경우 public API와 working memory의 content로 prompt를 완성하고 fine-tuned LLM을 사용하여 구조화된 코드를 생성한다. 생성된 코드 블록이 실행되고 검증되면 personal API에 저장된다. 실패 시 새로운 코드블록 재생성.
검증된 prompt와 API code의 경우 LLM의 RLHF을 위해 수집된다.
Personalities
다양한 개성을 지닌 agent를 갖추기 위해 다양한 문화와 집단의 관점이 포함되어 있는 데이터셋에서 사전 훈련한 다음, SOTA 모델에서 생성된 QA pair를 기반으로 구축된 instruction dataset에 대한 supervised fine-tuning을 통해 role-playing 기능을 향상한다.
다양한 기능과 개성을 가진 모델을 fine-tuning 하기 위해 LoRA를 사용할 수도 있다. LoRA fine-tuning에 있어 가장 중요한 것 중 하나는 양질의 데이터를 확보하는 것이다.
Agent의 다양성을 강화하기 위해 동작이 가능한 지 검증하기 위한 action 검증 모듈, 의사 결정이나 대화가 agent의 성격이나 게임 세계관과 충돌하는지 확인하는 충돌 식별 모듈 등의 몇 가지 후처리 모듈을 설정했다. (아마 LLM 이겠죠?)
Discussions
Multi-Agent Cooperation and Agent Socialization
본 논문에서 제안하는 단일 agent를 넘어 강력한 social network가 구축되어야 하며 각 agent에 대해서는 사회학적 메커니즘과 행동을 구축해야 한다.
Confidence of Model Clusters vs. Evaluation and Feedback System
인지 시스템에 대한 평가와 측정을 할 수 있는 프레임워크가 필요하다.