언어 모델을 이용하여 Agent를 설정된 집단과 환경에서 인간과 유사하게 행동할 수 있도록 하는 simulation을 구현한 연구에 대한 논문이다.
Agent는 큰 언어모델(chatgpt)에 Agent의 경험을 기억할 수 있고,
그 기억을 높은 수준으로 반영하여 반응을 생성하며,
그 데이터들을 동적으로 행동을 계획하기 위해 불러올 수 있다.
Keywords
Human-AI Interaction
Agents
Generative AI
Large language models
Introduction
인공 사회를 만드는데는 “The Sims”(게임)에서 영감을 받아서 가상 환경을 설계했다.
환경에 던져진 Agent들은 과거의 경험과 괴리가 없도록 일관적으로 행동했고,
어떻게 어려운 대인관계의 상황을 해결하는지를 학습했으며
사회 과학의 이론을 테스트 했으며
이론과 사용성 테스트를 위해 위한인간의 행동 프로세스를 만들었다.
하지만 인간행동은 방대하며 복잡하기에, 큰 언어모델로 single time point에서 인간행동 시뮬레이션이 가능하더라도, 긴 텀동안 일관성 있는 agent가 새로운 상호작용, 갈등, 이벤트로 인해 끊임없이 늘어나는 정보를 기억하는 아키택처가 더 적합하다.
3. Generative Agent Behavior And Interaction
(작성중)
Inter-Agent Communication
User Controls
Information Diffusion
Relationship memory
Coordination
4. Generative Agent Architecture
generative agent는 현재 상태를 가지고 가지고 있고, 과거의 경험을 입력으로 받으며 행동을 출력해낸다. 해당 구조는 language모델의 상태와 정보등을 합성하여 출력을 만든다. 이러한 아키텍처는 agent의 출력이 과거 경험에 기반하게 하고, 중요한 추론을 만들어내며, 긴 텀동안의 통일성을 유지시켜줄 수 있도록 제어하는 역할을 한다.
4.1 Memory and Retrieval
Challenge
Agent가 추론을 하게 하기 위해서 과거 경험 데이터 뿐만 아니라 현재 데이터도 넣어줘야 할텐데 어떻게 prompt를 설계해야할까? 제한된 context window 어떻게 이 많은 요소를 넣어야 하는가.
Approach
agent의 정보를 메모리스트림에 포괄적으로 저장하여 이후 관찰하기 쉽게 한다. 추가로 저장되는 정보는 다음과 같다.
natural language description
timestamp / most recent access timestamp
Recency
최신 정보에 높은 점수를 부여했다. 점수는 정보에 생성, 접근한 timestamp를 이용했으며, 시간에 따른 decay(0.99)를 부여했다. decay는 exponential decay function을 이용.
Importance
중요도를 평가하는 다양한 방법이 있겠지만, 해당 논문에서는 언어모델을 사용하여 사진과 같은 프롬프트로 중요도를 데이터 스트림에 저장하게 했다.
Relevance
현재 상황과 관련있는 정보에 높은 점수를 부여했다. 예를들면 화학시험에 대한 논의를 하는 상황일때, “오늘 먹은 아침”보다 “학교에서 공부한 것”이 더 높은 점수를 얻는 것이다. 해당 논문에서는 데이터셋을 벡터화하여 cosine 유사도로 관련성을 평가했다.
Combination
각 부분에 weighted combination을 하여 계산 하게 했으며, 해당논문에선 weight를 모두 1로 두어서 그림과 같은 형태가 된다.
4.2 Reflection
Challenge
날것의 관찰 데이터만 가진 agent는 일반화하기와, 관련성 만들기를 하기에 혼란을 겪는다. 그렇기에 더 바람직한 응답을 하기 위해 agent는 시간이 지남에 따라 더 높은 수준의 reflection을 만들어 내는 memory의 일반화가 요구된다.
Approach
reflection이라고 부르는 두번째 타입의 메모리를 만듬. 이는 agent가 생성하는 더 높은 수준의 추상인 생각이다. 이전의 이벤트에서 쌓인 importance score의 합계가 임계값을 넘을 경우 reflection을 수행한다. 해당 논문의 agent들은 2~3회 reflection을 수행했다.
논문의 내용이 단번에 이해하기 어려웠어서 간단하게 설명하면 다음 과정을 거친다.
최근 쌓인 기억들의 중요도합이 임계치를 넘었을 경우 발동
최근 100개의 기억을 입력으로 넣어서 해당 기억으로 대답이 가능한 매우 높은 수준의 질문을 3개 생성해달라고 언어모델에 입력.
생성된 질문을 이용해서 나온 3개의 질문을 입력으로 추론 할 수 있는 높은 수준의 통찰 5가지를 생성하고, 어떤 문장에서 얻은 통찰인지도 같이 출력해 달라고 언어모델에 입력.
해당 통찰이 담긴 문장을 통해 Reflection Tree 가 생성됨. / 해당 통찰이 담긴 문장은 다시 Reflection이벤트가 있을때 검색될 수 있다.
(2)
(3)
4.3 Planning and Reacting
Challenge
계획성, 일관되고 신뢰할만한 행동을 보이기 위해는 계획이 필요하다. 계획 없이는 Agent가 점심을 먹는다고 가정할때 12시에 저녁먹고 12:30에 또먹고 1시에 또먹고 하는 일이 일어날 수 있다.
제 전역이 임박했습니다. 사지방도 여건이 쉽지 않아서, 개발 공부는 커녕 영어공부 할 시간도 없었습니다. 군대는 뺑뺑이다가 옛말이 아님을 몸소 확인하고, 마지막 휴가를 나와서 기술동향을 대충 훑어보고 있는데, 이게 뭔가.. Chat GPT라는 괴물이 세상에 풀려있었습니다.
이제 껏 군대에서 꼬깃꼬깃 종이에 적어내렸던 조잡한 아키택처들이 너무 보잘것 없어지는 순간이었습니다.
방금 한번 데모페이지에서 테스트 해본 걸로도 어이가 없었습니다.
한국어가 어색하다. 특히 영어권 국가에 없는 존댓말과 반말에 약했다.
여러가지 시도를 해가며 40분정도 체험해 본 결과를 정리해봤습니다.
체험내용
멀티턴에도 굉장히 높은 기억력과 이해력을 보였으며, 유기적인 맥락 조합능력이 매우 좋았습니다. 하지만, 아무래도 한국어에대한 적응력이 부족했으며, Chat GPT의 말투는 어딘가 번역된 어투인 감이 많았습니다. 예를 들면 '출력 : 안녕 ~ 어떻게 지내?'는 한국인이 잘 쓰지 않는 언어들로 누가봐도 Hello, How are you가 번역 된 말투같았습니다.
뭔가 Chat GPT에 대하여 잘 알아보고 쓰는 게시물이 아니라 그냥 구경하는 게시물임으로, 이번엔 단지 이 괴물같은 녀석을 체험한 체험기느낌으로 작성하려고 합니다. Feat. 뉴진스 민지....!
챕터가 오픈도메인 챗봇이니 페르소나를 입혀보려고 노력을 해봤는데 한국어로는 쉽지 않은 것 같네요, 아니면 제가 모르는 적절한 입출력 포멧이 있는걸지도 모르겠습니다.