Notice
Recent Posts
Recent Comments
Link
공부하는 안씨의 기록
[논문 리뷰] Generative Agents: Interactive Simulacra of Human Behavior (3,4장) 본문
논문 리뷰
[논문 리뷰] Generative Agents: Interactive Simulacra of Human Behavior (3,4장)
an씨 2024. 11. 25. 09:39Generative Agents: Interactive Simulacra of Human Behavior
프로젝트의 선행 연구로 위 논문을 학습하고 있다.
구현과 직접적인 관련이 있는 3,4장을 중심으로 내용 정리 및 요약을 진행하였다.
핵심 요약
- Smallville 환경: 에이전트가 자연스러운 행동을 수행하며 상호작용할 수 있는 디지털 샌드박스.
- 행동 특징:
- 환경과 상황 변화에 따라 유연한 반응.
- 사회적 행동(정보 확산, 관계 형성, 협력 등)을 자율적으로 수행.
- Generative Agent 아키텍처란?
- 에이전트가 기억, 반영, 계획을 통해 행동을 결정하고 조정하는 구조
- 기억: 경험을 체계적으로 저장하고 필요한 정보를 검색해 행동에 반영.
- 반영: 관찰을 고차원적 통찰로 일반화하여 더 깊은 행동을 가능하게 함.
- 계획: 장기적인 일정을 생성하고, 상황 변화에 따라 유연하게 수정.
3. Generative Agent Behavior and Interaction 요약
Smallville 환경 개요
- Smallville: The Sims와 유사한 작은 마을을 시뮬레이션한 스프라이트 기반 샌드박스 세계.
- 목적: 에이전트 간의 자연스러운 상호작용과 인간다운 행동을 시뮬레이션.
- 구성 요소: 카페, 공원, 학교, 주택 등 다양한 공간으로 이루어진 마을.
- 에이전트 특징:
- 25명의 에이전트가 고유의 아바타와 초기 기억을 가지고 있음.
- 초기 기억은 자연어로 작성된 문단 설명으로 초기화됨.
1. 에이전트 초기화
- 초기 상태 정의:
- 각 에이전트는 자신의 성격, 직업, 관계, 선호도를 포함한 문단 설명을 가짐.
- 예: John Lin
- 약국 직원으로, 가족 및 이웃과의 관계가 초기 기억으로 정의됨.
- 초기 기억 예시:
- John Lin is a pharmacy shopkeeper who loves to help people. He lives with his wife Mei Lin, a college professor, and son Eddy Lin, a student studying music theory.
- 이 초기 기억은 시뮬레이션 시작 시 기억 스트림(memory stream)에 저장됨.
2. 행동 및 의사소통
행동 결정
- 에이전트는 저장된 기억과 현재 상황을 기반으로 행동을 선택.
- 구현 방식:
- 행동은 자연어로 기술되며, 이모지나 간단한 시각적 요소로 표현.
- 예:"Isabella Rodriguez is writing in her journal"이 이모지로 변환되어 표시됨.
의사소통
- 에이전트 간의 대화는 자연어를 사용하며, 서로의 관계와 환경을 고려해 동적으로 생성.
- 대화 예시:Isabella Rodriguez와 Tom Moreno가 선거에 대해 논의:
- Isabella: I’m still weighing my options, but I’ve been discussing the election with Sam Moore. What are your thoughts on him?
- Tom: To be honest, I don’t like Sam Moore. I think he’s out of touch with the community and doesn’t have our best interests at heart.
사용자 상호작용
- 사용자 제어:
- 사용자는 자연어로 에이전트와 대화하거나 특정 행동을 지시할 수 있음.
- 예: 사용자가 John에게 "You are going to run for mayor"라고 명령하면, John은 시장 선거에 출마하도록 행동을 조정.
3. 환경 변화에 따른 반응
- 에이전트는 환경에서의 변화를 감지하고 적절히 반응.
- 예:사용자가 "Isabella’s apartment: kitchen: stove is burning"이라고 상태를 변경하면:
- Isabella는 이를 감지하고 스토브를 끄고 다시 요리를 시작.
4. 예시: 하루 일과
- 에이전트가 하루 동안의 활동을 계획하고 실행하며, 이를 통해 기억과 관계를 쌓음.
- John Lin의 하루 (예시):
- 아침 (7:00):
- 양치질, 샤워, 아침 식사, 뉴스를 확인하며 하루를 시작.
- 가족과의 대화:
- 아들 Eddy와 대화:
- John: Good morning Eddy. Did you sleep well? Eddy: Good morning Dad. Yeah, I slept great.
- Eddy가 학교에 간 후, 아내 Mei와 Eddy의 음악 과제에 대해 이야기.
- 업무 시작 (9:00):
- Willow Market and Pharmacy에서 근무 시작.
- 아침 (7:00):
5. 사회적 행동
1) 정보 확산 (Information Diffusion)
- 에이전트가 대화를 통해 정보를 전파.
- 예: Sam이 시장 선거 출마 소식을 전파:
- Sam이 Tom에게 출마 소식을 알림:
- Sam: I’m actually running for mayor in the upcoming local election.
- Tom은 이를 기억하고 John과 논의:
- John: I heard that Sam Moore is running for mayor. Do you think he has a good chance of winning?
- Sam이 Tom에게 출마 소식을 알림:
2) 관계 형성 및 유지 (Relationship Memory)
- 에이전트는 새로운 관계를 형성하고 기존 관계를 기억.
- 예: Sam이 Latoya를 공원에서 만나 대화를 시작:
- Latoya는 사진 프로젝트를 작업 중이라고 말함.
- 이후 Sam이 "How is your project going?"이라고 질문하며 관계를 유지.
3) 협업 및 조정 (Coordination)
- 에이전트가 공동 목표를 위해 자율적으로 협력.
- 발렌타인데이 파티 예시:
- Isabella가 파티를 계획하고 친구들에게 초대장을 전달.
- Maria는 Klaus를 파티에 초대.
- 파티 당일, 여러 에이전트가 모여 함께 시간을 보냄.
6. 행동 시뮬레이션의 결과
- 결과: 에이전트는 자율적으로 정보를 교환하고, 새로운 관계를 형성하며, 공동 활동을 조직.
- 장점: 행동과 상호작용이 사전에 정의되지 않고, 에이전트 간의 자율적 상호작용에서 발생
- 목표: 에이전트가 인간다운 행동을 수행하고, 변화하는 환경에 적응할 수 있도록 함.
- 구성 요소: 기억(Memory), 반성(Reflection), 계획(Planning).
- 기능:
- 자연어를 기반으로 정보를 저장하고, 필요한 정보를 검색 및 활용.
- 에이전트가 자신의 과거 경험을 바탕으로 행동을 결정하고 수정.
4. Generative Agent Architecture 요약
1. Memory (기억)
- 역할: 에이전트의 모든 경험과 사건을 자연어로 기록하여 행동을 결정할 때 사용.
- 구성 요소:
- 기억 객체 (Memory Object):
- 내용: 자연어로 기술된 사건.
- 생성 시간: 사건이 기록된 시점.
- 최종 액세스 시간: 최근에 사용된 시간.
- 기본 요소: 관찰(observations).
- 예: "Isabella Rodriguez is setting out the pastries."
- 기억 객체 (Memory Object):
- 기억 저장 방식: 모든 관찰은 에이전트의 기억 스트림(memory stream)에 저장.
기억 검색 (Memory Retrieval)
- 문제점: 모든 기억을 참조하면 비효율적이고, 관련 없는 정보로 인해 혼란 발생.
- 해결: 3가지 기준으로 검색 우선순위를 설정.
- Recency:
- 최근 액세스된 기억일수록 높은 점수.
- 수학적 처리: 시간이 지남에 따라 지수 함수로 점수 감소.
- 예: 감쇠 계수(decay factor) 0.995.
- Importance:
- 기억의 중요도를 숫자 점수(1~10)로 평가.
- 프롬프트 예시:
- 결과: 단순 행동(방 정리하기) → 중요도 2, 중요한 사건(데이트 신청) → 중요도 8.
- On the scale of 1 to 10, where 1 is purely mundane (e.g., brushing teeth, making bed) and 10 is extremely poignant (e.g., a break up, college acceptance), rate the likely poignancy of the following piece of memory.
- Relevance:
- 현재 상황과의 연관성을 계산.
- 구현: 언어 모델을 사용해 텍스트 임베딩을 생성 후, 코사인 유사도를 기반으로 관련성 평가.
- Recency:
검색 결과:
- 기억은 세 가지 점수를 조합한 가중치로 순위를 매기며, 상위 항목만 언어 모델의 컨텍스트에 포함.
- 공식: \[ \text{score} = \alpha_\text{recency} \cdot \text{recency} + \alpha_\text{importance} \cdot \text{importance} + \alpha_\text{relevance} \cdot \text{relevance} \] (기본적으로 모든 \(\alpha\) 값은 1로 설정)
2. Reflection (반영)
- 역할: 에이전트가 단순한 관찰을 넘어서 고차원적인 추론과 통찰을 생성.
- 필요성: 단순 기억으로는 행동의 깊이를 만들기 어려움.
- 예: Klaus가 단순히 빈번하게 만나는 사람(Wolfgang)을 선택하는 대신, 공통 관심사를 가진 Maria를 선택하도록 유도.
- 작동 방식:
- 질문 생성: 최근 100개의 기억에서 높은 수준의 질문을 도출.
- 예: "What topic is Klaus Mueller passionate about?"
- 기억 검색: 질문과 관련된 기억을 검색.
- 추론 생성: 기억을 바탕으로 통찰 생성.
- 프롬프트 예시:
- 결과: "Klaus Mueller is dedicated to his research on gentrification (because of 1, 2, 8, 15)."
- What 5 high-level insights can you infer from the above statements? (example format: insight (because of 1, 5, 3))
- 프롬프트 예시:
- 결과 저장: 생성된 통찰을 기억 스트림에 저장.
- 질문 생성: 최근 100개의 기억에서 높은 수준의 질문을 도출.
반영 트리 (Reflection Tree)
- 반영은 트리 형태로 저장:
- 리프 노드: 관찰에서 도출된 기억.
- 상위 노드: 추상적이고 고차원적인 통찰.
- 효과: 점진적으로 더 깊은 행동과 판단을 가능하게 함.
3. Planning (계획)
- 역할: 에이전트가 장기적인 행동 계획을 수립하고, 상황 변화에 맞춰 조정.
- 필요성: 단기적 상황만 고려하면 행동이 비논리적일 수 있음.
- 예: Klaus가 점심을 반복적으로 먹는 대신, 연구와 산책을 포함한 균형 있는 일정을 계획.
계획 수립
- 일정 생성 (Top-down Approach):
- 하루를 큰 틀로 나눈 계획 생성.
- 프롬프트 예시:
- 결과:
- "1) wake up at 8:00 am"
- "2) attend classes at 10:00 am"
- 결과:
- Name: Eddy Lin (age: 19) ... Today is Wednesday February 13. Here is Eddy’s plan today in broad strokes: 1)
- 세부 행동 분해: 큰 틀의 계획을 1시간 단위로 분해.
- 더 작은 행동으로 세분화: 5~15분 단위로 행동 정의.
- 예: "4:00 pm: grab a light snack, such as a piece of fruit or granola bar."
계획 수정 및 반응
- 상황 변화에 따른 수정:
- 에이전트는 감지된 이벤트에 따라 기존 계획을 업데이트.
- 예: Eddy가 정원에서 산책 중일 때, 아버지가 대화를 시작하면 계획 변경.
- 대화 생성: 대화는 기억과 요약을 바탕으로 동적으로 생성.
- 프롬프트 예시:
- 결과: "Hey Eddy, how’s the music composition project for your class coming along?"
- John is asking Eddy about his music composition project. What would he say to Eddy?
- 프롬프트 예시: