개요
아이펠 리서치 온보딩 시간에 진행 하였던 해당 논문에 대해 일부 기록을 남긴다.
Abstract
- 이 논문은 신뢰할 수 있는 인간 행동을 시뮬레이션하는 generative agent 를 제안합니다. 이 agent 들은 마치 인간처럼 하루 일정을 계획하고, 다른 agent 들과 소통하며, 기억을 통해 행동을 조정합니다. 논문에서는 대형 언어 모델을 확장하여 agent 가 경험을 자연어로 저장하고, 이를 바탕으로 반성과 계획을 통해 더 나은 행동을 생성하는 아키텍처를 소개합니다. 연구에서 구현된 샌드박스 환경에서는 25명의 agents 가 자율적으로 사회적 상호작용을 하며 신뢰할 수 있는 행동을 보였습니다. 예를 들어, 밸런타인 파티를 계획하는 간단한 지시에서 시작하여, agent 들은 자율적으로 초대장을 전달하고 파티를 조직하며, 실제 사람처럼 복잡한 사회적 행동을 시뮬레이션했습니다.
3. GENERATIVE AGENT BEHAVIOR AND INTERACTION
generative agent 의 능력을 설명하기 위해, 우리는 그들을 심즈와 유사한 작은 마을 환경의 샌드박스 세계에 구현했습니다. 이 섹션에서는 Smallville에서 에이전트들이 어떻게 행동하고 상호작용하는지를 설명하며, 4장에서는 이러한 상호작용을 가능하게 하는 아키텍처를, 5장에서는 샌드박스 환경의 구현과 에이전트가 이 환경과 상호작용하는 방법을 다룹니다.
3.1 Agent Avatar and Communication
- 3.1 장에서는 Smallville이라는 샌드박스 환경에서 generative agent 들이 어떻게 행동하고 소통하는지에 대해 설명합니다.
- 에이전트 아바타: Smallville에는 25명의 고유한 에이전트가 살고 있으며, 각 에이전트는 스프라이트 아바타로 나타납니다. 에이전트들은 직업, 성격, 그리고 다른 에이전트들과의 관계를 나타내는 자연어 기반의 설명을 가지고 있으며, 이 정보가 초기 기억으로 저장됩니다. 예를 들어, John Lin이라는 에이전트는 약국을 운영하며 가족을 사랑하고 이웃과 교류하는 인물로 설명됩니다.
- 에이전트 간의 커뮤니케이션: 에이전트는 서로와 자연어로 대화하며, 행동을 설명하는 문장을 출력합니다. 예를 들어, 특정 에이전트가 일기를 쓰거나 이메일을 확인하는 등의 행동을 자연어 문장으로 표현하고, 이를 이모지 형태로 시각화합니다. 에이전트는 주변 상황에 따라 다른 에이전트와 대화를 시작하거나 지나칠지 결정할 수 있습니다.
- 사용자와의 상호작용: 사용자는 자연어로 에이전트에게 질문하거나 지시를 내릴 수 있습니다. 예를 들어, 기자 역할을 수행하며 에이전트에게 선거에 대해 물을 수 있습니다. 또한 사용자는 에이전트의 "내면의 목소리"로서 직접적인 명령을 내릴 수도 있습니다. 이를 통해 에이전트는 새로운 결정을 내리거나 행동을 수정할 수 있습니다.
3.2 Environmental Interaction
- 3.2 장에서는 generative agent 가 Smallville이라는 가상 세계에서 환경과 어떻게 상호작용하는지를 설명합니다.
- Smallville의 환경: 이 가상의 마을은 카페, 공원, 학교, 기숙사, 상점 등과 같은 작은 마을의 일상적 공간들로 구성되어 있습니다. 각 공간은 집 안의 주방이나 상점의 진열대처럼 구체적인 하위 구역과 물체들로 이루어져 있습니다.
- 에이전트의 움직임과 상호작용: 에이전트들은 이러한 공간을 자유롭게 이동하며, 건물에 출입하거나 지도를 탐색하고, 다른 에이전트와 마주치면 대화하거나 행동을 조정합니다. 예를 들어, 한 에이전트가 카페에서 커피를 만들거나 마을을 산책하는 것과 같은 일상적 행동을 수행합니다.
- 사용자의 참여: 사용자는 에이전트처럼 이 가상 세계에 직접 참여할 수 있습니다. 사용자가 조종하는 에이전트는 다른 에이전트들과 동일하게 인식되며, 다른 에이전트들과 상호작용하거나 의견을 교환할 수 있습니다.
3.3 Example “Day in the Life”
- 3.3 장에서는 generative agent 가 하루 동안 어떻게 행동하는지에 대한 예시를 설명합니다.
- 하루 시작: 에이전트 John Lin이 아침에 가장 먼저 일어나서 이를 닦고, 샤워하고, 옷을 입은 후 아침 식사를 하며 뉴스를 확인합니다.
- 가족과의 대화: John의 아들 Eddy가 일어나 학교 준비를 하며 잠시 대화를 나눕니다. Eddy는 음악 수업 과제에 대해 이야기하고, John은 그와 즐거운 대화를 이어갑니다. 이후 John의 아내 Mei도 일어나, John과 아들에 대한 대화를 나눕니다.
- 일과 시작: 대화가 끝난 후, Mei는 연구 논문 작업을 하러 가고, John은 약국에서 일을 시작하기 위해 출근합니다.
3.4 Emergent Social Behaviors
- 3.4 장에서는 generative agent 들이 어떻게 자율적으로 사회적 행동을 발전시키는지를 설명합니다.
- 정보 확산: 에이전트들은 서로 대화를 통해 정보를 교환하고, 이러한 정보는 에이전트들 사이에서 점차 확산됩니다. 예를 들어, Sam이 Tom에게 자신이 시장 선거에 출마한다고 이야기하면, 이 정보가 다른 에이전트들로 퍼지면서 마을 전체에서 화제가 됩니다.
- 관계 기억: 에이전트들은 시간이 지나면서 새로운 관계를 형성하고, 과거의 상호작용을 기억합니다. 예를 들어, Sam은 처음에는 Latoya를 몰랐지만, 공원에서 만나 대화를 나눈 후, 이후 그들이 나눈 대화를 기억하고 다시 만났을 때 그녀에게 프로젝트에 대해 묻습니다.
- 협력과 조율: 에이전트들은 서로 협력하여 공동 작업을 할 수 있습니다. 예를 들어, Isabella가 밸런타인 파티를 계획하고 이를 친구들에게 알리면, 다른 에이전트들이 자율적으로 파티 준비를 돕고, 파티에 참석하며 상호작용합니다.
4. GENERATIVE AGENT ARCHITECTURE
generative agent 가 환경과 경험을 바탕으로 어떻게 행동을 생성하고 유지하는지 설명하는 아키텍처를 다룹니다.
- 기억 흐름 (Memory Stream): 에이전트는 주변 환경에서 관찰한 모든 정보를 기억 흐름에 저장합니다. 이 기억은 에이전트의 행동에 중요한 영향을 미치며, 행동을 결정하기 전에 관련 기억을 검색하여 참고합니다.
- 기억 검색 (Retrieval): 에이전트는 필요할 때마다 기억을 검색합니다. 기억을 검색할 때는 최근성, 중요도, 관련성을 기준으로 가장 관련성이 높은 기억을 찾아내어 행동에 반영합니다.
- 반성 (Reflection): 에이전트는 경험을 바탕으로 고차원적 추론을 통해 자신과 다른 에이전트에 대한 고찰을 형성합니다. 이러한 반성은 더 깊은 수준의 이해를 가능하게 하며, 에이전트의 장기적 행동에 반영됩니다.
- 계획 및 반응 (Planning and Reacting): 에이전트는 장기적인 행동 계획을 세우며, 상황에 따라 계획을 수정하거나 새로운 행동을 추가로 계획할 수 있습니다. 이 과정에서 에이전트는 환경 변화에 적절하게 반응하며 일관된 행동을 유지합니다.
이 아키텍처는 에이전트가 단순히 주어진 명령을 따르는 것이 아니라, 과거 경험을 바탕으로 계획을 세우고, 기억을 검색하며, 자신의 행동을 반성하고 조정함으로써 더욱 인간처럼 자율적으로 행동할 수 있도록 합니다.
4.1 Memory and Retrieval
- 4.1 장에서는 generative agent 가 기억을 저장하고 이를 검색하는 방식에 대해 설명합니다.
- 문제: generative agent 는 방대한 양의 경험을 처리해야 하지만, 모든 기억을 한 번에 프롬프트에 포함할 수 없고, 중요한 정보를 놓칠 가능성이 있습니다. 따라서, 기억을 효율적으로 저장하고 적절한 시점에 검색하는 방식이 필요합니다.
- 기억 스트림 (Memory Stream): 에이전트는 자신이 경험한 모든 사건을 자연어로 된 기억 객체로 저장합니다. 각 기억에는 설명, 생성 시각, 마지막 접근 시각 등이 포함됩니다. 이 기억들은 필요할 때 검색됩니다.
- 기억 검색 (Retrieval): 에이전트는 현재 상황에 맞는 기억을 검색하여 행동을 결정합니다. 기억을 검색할 때는 세 가지 요소가 고려됩니다:
- 최근성 (Recency): 최근에 발생한 기억일수록 더 높은 우선순위를 부여합니다.
- 중요도 (Importance): 중요한 사건은 더 높은 점수를 받아 검색 우선순위에 영향을 미칩니다.
- 관련성 (Relevance): 현재 상황과 관련성이 높은 기억을 우선 검색합니다.
- 핵심 요점: generative agent 는 방대한 기억을 저장하고, 필요할 때마다 중요한 기억을 검색하여 상황에 맞는 행동을 자율적으로 결정합니다.
4.2 Reflection
- 4.2 장에서는 generative agent 가 과거 경험을 바탕으로 고차원적인 추론을 하는 방식인 '반성'에 대해 설명합니다.
- 문제: 에이전트가 단순한 관찰 기억만으로는 복잡한 추론이나 일반화를 하기 어려울 수 있습니다. 예를 들어, 에이전트는 단순히 자주 만난 사람을 선택하는 것보다 더 깊은 관계나 관심사를 바탕으로 결정을 내릴 필요가 있습니다.
- 접근 방식: 에이전트는 주기적으로 자신과 다른 사람에 대해 추론하는 고차원적인 반성을 생성합니다. 반성은 에이전트의 기억 스트림에 저장되며, 이후 기억 검색 시 중요한 정보로 사용됩니다. 반성은 에이전트가 최근 경험한 중요도가 높은 사건들이 누적될 때 생성되며, 에이전트가 스스로에 대한 중요한 질문을 던지고 그 답을 도출하는 방식으로 이루어집니다.
- 반성 트리: 반성은 단순한 관찰뿐만 아니라 다른 반성들을 기반으로 생성될 수 있습니다. 이를 통해 에이전트는 반성 트리를 형성하며, 시간이 지남에 따라 더욱 추상적이고 고차원적인 결론을 도출할 수 있습니다.
4.3 Planning and Reacting
- 4.3 장에서는 에이전트가 행동의 일관성을 유지하고, 상황 변화에 적응하는 방식인 'Planning and Reacting' 에 대해 설명합니다.
- 문제: 단순히 현재 상황에 맞는 행동을 생성하는 방식만으로는 에이전트의 행동에 일관성이 부족할 수 있습니다. 예를 들어, 동일한 시간에 두 번 점심을 먹는 것 같은 비일관적 행동이 발생할 수 있습니다.
- 접근 방식: 에이전트는 위치, 시작 시간, 지속 시간을 포함한 계획을 세워 일관된 행동을 유지합니다. 계획은 상위 일정에서 시작하여 필요에 따라 더 세분화됩니다.
- 유연한 반응: 에이전트는 계획을 따르면서도, 새로운 정보나 상황 변화가 생기면 이를 반영하여 계획을 수정할 수 있습니다.
이 이미지는 생성적 에이전트 아키텍처를 설명하는 다이어그램입니다. 에이전트가 어떻게 정보를 인식하고, 기억을 관리하며, 이를 기반으로 행동을 결정하는지를 보여줍니다. 아래는 각 구성 요소의 설명입니다:
- Perceive (인식): 에이전트는 자신이 속한 환경을 인식합니다. 이는 주변에서 일어나는 사건이나 다른 에이전트와의 상호작용을 포함합니다.
- Memory Stream (기억 흐름): 에이전트가 인식한 모든 정보는 Memory Stream에 저장됩니다. 여기에는 에이전트가 경험한 모든 사건과 상호작용에 대한 기록이 포함됩니다.
- Retrieve (기억 검색): 행동을 결정하기 전에, 아키텍처는 Retrieve 단계에서 에이전트의 기억 흐름에서 현재 상황과 관련 있는 기억을 검색합니다. 검색된 기억은 행동을 결정하는 데 중요한 역할을 합니다.
- Retrieved Memories (검색된 기억): 검색된 기억은 에이전트가 다음에 무엇을 할지를 결정하는 데 활용됩니다. 에이전트는 이 기억을 바탕으로 계획을 세우거나, 과거 경험에 따라 상황에 적절히 반응합니다.
- Plan (계획): 에이전트는 검색된 기억을 바탕으로 장기적 또는 단기적 계획을 세울 수 있습니다. 이 계획은 현재 상황에 맞게 행동을 조정하는 데 사용됩니다.
- Reflect (반성): 에이전트는 자신의 행동이나 과거 경험에 대해 반성하고, 이를 통해 새로운 통찰을 얻습니다. 이 반성은 고차원적인 결론을 도출하는 데 도움을 주며, 다시 Memory Stream에 저장됩니다.
- Act (행동): 최종적으로 에이전트는 검색된 기억과 계획에 기반하여 특정 행동을 실행합니다. 이 행동이 다시 환경에 영향을 미치고, 새로운 경험으로 Perceive 단계로 돌아가게 됩니다.
요약
이 아키텍처는 생성적 에이전트가 경험을 기억하고, 그 기억을 바탕으로 행동을 계획하며, 자신의 행동을 반성함으로써 더 나은 결정을 내리는 구조를 나타냅니다. 각 단계는 에이전트가 환경에 어떻게 반응하는지를 정교하게 제어하여, 더욱 인간다운 행동을 가능하게 합니다.
Keyword 정리
1. Perceive (인지)
• 정의: 에이전트가 주변 환경에서 시각적, 상황적 정보를 수집하는 단계입니다.
• 세부 설명: 에이전트는 자신이 위치한 환경에서 다른 에이전트의 활동이나 주변 객체의 상태 등을 인지합니다. 이 과정에서 에이전트는 현재 상황과 관련된 데이터를 감지하여 이를 기반으로 다음 행동을 결정하게 됩니다. 예를 들어, 특정 에이전트가 “스토브가 켜져 있는지” 또는 “다른 에이전트가 대화를 하고 있는지”를 인지할 수 있습니다.
2. Memory Stream (기억 스트림)
• 정의: 에이전트가 경험한 모든 이벤트와 관찰을 저장하는 장기적인 데이터 저장소입니다.
• 세부 설명: 기억 스트림은 에이전트의 모든 기억을 자연어 형식으로 기록하며, 각 기억은 생성 시각과 최근 접근 시각을 포함합니다. 기억 스트림은 에이전트가 자신의 경험을 잊지 않도록 돕고, 에이전트가 필요할 때 특정 경험을 꺼내어 참고할 수 있도록 합니다. 이 기억은 기본적인 관찰(예: “아침에 커피를 마심”)부터 더 고차원적인 반영(예: “커피를 마시는 것을 즐긴다”)까지 포함됩니다.
3. Retrieve (검색)
• 정의: 에이전트가 기억 스트림에서 현재 상황에 맞는 기억을 선택적으로 찾아내는 과정입니다.
• 세부 설명: 에이전트가 행동을 결정할 때 모든 기억을 고려하는 것은 비효율적이므로, 현재 상황과 관련 있는 기억만을 선택적으로 검색합니다. 이 과정에서 중요성, 최근성, 관련성 등의 요소를 고려해 적절한 기억을 점수화하고 우선순위가 높은 기억들을 검색해냅니다. 예를 들어, 특정 에이전트와 대화할 때 해당 에이전트와의 과거 상호작용을 기억하는 것은 대화를 더욱 자연스럽고 일관성 있게 만듭니다.
4. Retrieved Memories (검색된 기억)
• 정의: 검색된 기억은 현재 상황과 직접적으로 관련이 있는 기억들로, 에이전트의 즉각적인 행동에 반영됩니다.
• 세부 설명: 예를 들어, 에이전트가 어떤 특정한 작업을 해야 한다는 상황에서 이전에 비슷한 상황에서 어떤 결정을 내렸는지를 참고할 수 있습니다. 이 검색된 기억들은 에이전트가 환경에 더 자연스럽게 반응할 수 있도록 돕습니다. 예를 들어, 특정 에이전트가 과거에 같은 문제를 해결했던 기억을 검색했다면, 비슷한 방식으로 다시 접근할 가능성이 큽니다.
5. Act (행동)
• 정의: 에이전트가 인지한 정보와 검색된 기억을 바탕으로 실행하는 실제 행동입니다.
• 세부 설명: 에이전트는 현재 상황에 맞는 행동을 수행하며, 이는 주변 환경과의 상호작용을 포함할 수 있습니다. 예를 들어, “음식이 타고 있다”는 것을 인지한 에이전트는 “스토브를 끈다”는 행동을 선택할 수 있습니다. 에이전트의 행동은 주변의 다른 에이전트나 객체와 자연스럽게 상호작용하도록 설계됩니다.
6. Reflect (반영)
• 정의: 에이전트가 기억을 기반으로 고차원적인 통찰을 생성하고 경험을 요약하는 과정입니다.
• 세부 설명: 반영은 에이전트가 경험한 사건들을 더 깊이 이해하게 해주며, 에이전트의 성격이나 관심사를 형성하는 데 중요한 역할을 합니다. 반영은 단순히 사실을 기억하는 것 이상으로, 경험에서 중요한 패턴이나 관계를 도출해냅니다. 예를 들어, Klaus라는 에이전트가 연구에 몰두한 기록들을 반영해 “나는 연구에 헌신적인 사람이다”와 같은 추론을 도출할 수 있습니다. 이러한 고차원적 반영은 에이전트가 더 일관성 있고 자연스러운 결정을 내리는 데 도움을 줍니다.
7. Plan (계획)
• 정의: 에이전트가 현재의 목표와 기억을 바탕으로 향후 행동을 미리 설계하는 과정입니다.
• 세부 설명: 계획은 에이전트가 하루의 일정을 설계하거나 특정 목표를 이루기 위해 필요한 일련의 행동을 나열하는 과정입니다. 예를 들어, “오전에는 연구를 하고 오후에는 친구와 만난다”는 방식으로 하루를 계획할 수 있습니다. 계획은 고차원적 수준에서 시작해 점차 구체적인 단계로 세분화되며, 필요에 따라 조정될 수 있습니다. 계획된 행동은 에이전트가 상황 변화에 맞게 적응하며 장기적인 목표를 지속적으로 추구하도록 돕습니다.
'AI > 아이펠_리서치' 카테고리의 다른 글
Transformer Decoder 구현 및 학습 (1) | 2024.11.26 |
---|---|
Transformer Encoder 구현 및 학습 (2) | 2024.11.25 |
KerasTuner 와 Tensorboard 로 HyperParameter 시각화하기 (1) | 2024.11.23 |
TensorFlow 사용자 정의 metric 만들기 (1) | 2024.11.17 |
CNN 과 RNN 대표 모델 (3) | 2024.11.09 |