[paper] Generative Agents: Interactive Simulacra of Human Behavior

MS·2025년 3월 8일
0

서론

  • 사람의 행동을 그럴듯하게 모사하는 모델은 사람들끼리 소통하는 공간, 프로토타입, 몰입해야하는 환경 등 상호작용이 필요한 다양한 어플리케이션에서 활용될 수 있음

  • 본 논문의 generative agents는 이침 식사 준비, 회사 출근, 작가의 글쓰기, 예술가의 그림 그리기 등의 행동을 수행하고, 의견을 나누며, 때로는 대화를 시작하고, 과거의 경험에 따라서 다음 날의 계획을 세움

  • generative agents 만들기 위해 LLM을 사용하여 에이전트의 경험을 자연어로 기록하고, 이러한 기록을 reflection으로 조합하며, 쌓인 기록을 동적으로 검색하여 행동을 계획하는 아키텍처를 제안

  • 심즈 게임에서 영감을 얻어 상호작용 가능한 환경을 구축하였고, 마을에서 25명의 에이전트가 상호작용 가능

  • 평가 결과, 특정 에이전트가 파티를 열고 싶어할 때, 초대장 전달, 친구 사귀기, 파티에 함께 갈 것을 요청하기, 약속 시간에 맞춰 파티에 참석하기 등의 행동을 상호작용을 통해 수행

  • 또한, 에이전트 아키텍처의 구성 요소 중 observation, planning, reflection이 신뢰할 수 있는 행동을 하는데 기여한다는 것을 입증하였음

작동 과정

  • Smalvile에 25명의 LLM Agent가 생활하며, 각 Agent의 정체성을 나타내는 자연어 문장이 seed memories로 입력 됨
  • Smalvile에서 Agent가 시뮬레이션 할 때는 step 단위로 진행되며, 1-step은 10초
  • step별 각 Agent의 큰 작동 흐름은 다음과 같다

1. Observation : 주변에서 벌어지는 일, 대화, 관찰한 것을 서술형 문장으로 MemoryStream에 저장
이때, Observation이 Agent에게 얼마나 중요한지 1~10점 척도로 평가하여 사소한 일과 중요한 일을 구분하여 저장

2. 행동 결정 : 에이전트의 성격, 목표, 계획, 현재 상황, Observation, 자신의 기억 정보를 바탕으로 현재 상황에 반응해야 하는가? 반응해야 한다면, 어떻게 반응해야 하는가?를 결정
이때, MemoryStream에서 현재 상황과 관련된 기억을 쿼리하여 Agent의 과거 경험을 반영

3. 행동 실행 : 해당 상황에 반응하기로 결정했다면, 2에서 결정한 행동을 즉시 실행하며 에이전트가 그날 하루에 수행하기로 예정했던 계획을 재수립
반면, 반응하지 않기로 결정했다면, 현재의 예정된 행동을 계속 이어나감

MemoryStream Detail

  • 여기서 MemoryStream이 상기한 작동 흐름을 원활하게 수행하기 위한 가장 핵심적인 역할을 한다
  • 본 논문에서는 크게 4종류의 기억을 MemoryStream에 저장한다!

업로드중..

1. Observation : 매 스텝마다 자신의 행동하거나 본 모든 것을 서술형 문장으로 저장

2. Reflection : Agent가 단편적인 기억만 가지고 판단하는 것을 방지하기 위해 최근 사건의 중요도 합이 150이상이 되면 새로운 reflection을 만든다. 여기서 reflection은 한국어로 치면, "성찰" 또는 "에이전트가 스스로 느끼는 깨달음"이라고 이해하는게 적절할 것 같다.
논문의 저자는 reflection이 필요한 이유를 아래의 예시로 설명한다.

클라우스에게 "같이 있고 싶은 사람은 누구야?"라고 말하면 단순하게 memory에서 가장 자주 상호작용한 같이 사는 대학 기숙사생인 볼프강을 선택할 것이다.
하지만, 바람직한 응답은 클라우스가 연구 프로젝트에 많은 시간을 쏟은 기억을 일반화해서 클라우스가 연구에 열정을 가지고 있다는 더 높은 수준의 reflection을 생성하여 공통 연구 관심사를 공유하는 마리아를 선택해야 한다.

3. Dialogue : 다른 Agent와 주고 받은 대화 내용을 각 turn마다 저장

4. Plan : Agent가 하루의 시작 시점에 생성하는 오늘의 대략적인 계획, 각 시간대별 구체적인 계획, 돌발 상황 또는 특수 상황으로 인한 재계획을 저장
Plan 또한 저자가 필요 이유를 아래 예시로 설명하였음

클라우스에게 "현재 12시인데 넌 뭐할꺼야? 라고 물으면 "점심을 먹는다"고 답한다.
그런데 12:30에 또 물어보면 다시 점심을 먹는다고 하고 1시에도 똑같이 점심을 먹는다고 답할 수 있다.
즉, 현재의 순간적인 상황만 생각해서 행동하고, 이미 지나가버린 과거의 경험은 반영하지 못해 이해할 수 없는 행동을 한다.

MemoryStream Query

  • Agent가 어떤 행동을 할지 말지 여부와 어떤 행동을 해야할지 결정하는 과정에서 Agent의 기억이 반영되어야 함
  • 그럼 현재 상황과 관련있는 기억을 어떻게 가져올까?

1. 최근 기억 : 마지막으로 특정 기억이 검색한 날을 기준으로 지수 감소 함수로 점수가 줄어든다. 즉, Agent가 타 Agent와 상호작용하고 생활하면서 필요없었던 기억은 점수가 급격하게 떨어짐

2. 중요도 : 에이전트가 중요하다고 생각하는 기억에 높은 점수를 부여하여 평범한 기억과 중요한 기억을 구별. 예를 들어 아침을 먹는 것과 이별을 한 것의 중요도는 당연히 달라야 함(LLM이 직접 1~10점 척도로 감정적 강도를 평가)

3. 관련성 : 현재 상황과 관련된 기억에 높은 점수를 부여한다. 임베딩 모델을 통해 코사인 유사도로 관련성을 계산한다

위 3가지 요소를 min-max normalization로 Scaliling 한 다음,
score = 최근 기억 점수 + 중요도 + 관련성으로 계산하여 높은 점수의 기억을 검색

엄청난 LLM 사용량

  • 위에서 글을 차례대로 정독한 사람들은 이제 짐작 가능할 것이다. 위 시뮬레이션을 진행하기 위한 LLM 호출 빈도가 엄청나다는 것을..

1. 중요도 점수 판단 LLM : 모든 기억은 이 기억이 얼마나 중요한지를 점수화한 중요도 점수가 포함되어 있는데, 이 중요도 점수를 LLM이 직접 정함

2. 관련 기억 검색 LLM : Observation 문장과 memory 문장을 임베딩으로 바꾸어 코사인 유사도로 관련 기억을 검색하는 과정에서 LLM이 사용된다. 여기선 Embedding model을 사용하기 때문에 시간 소요는 없음

3. Reflection 질문 생성 LLM : 더 깊은 성찰을 수행하기 위해 memory stream에서 최근 기억 100개를 LLM에 주고, 위 정보를 볼 때 답변할 수 있는 가장 중요한 질문 3가지는 무엇인가요?"라고 요청해서 질문 3가지를 추출

4. Reflection 추출 질문 관련 기억 검색 LLM : 3에서 얻은 3가지 질문에 관련된 기억을 Embedding model로 쿼리

5. Reflection 생성 LLM : 4에서 얻은 기억을 기반으로 알 수 있는 5가지 인사이트를 생성해달라고 LLM에게 요청하여 만들어진 reflection 5개를 MemoryStream에 추가

6. Plan 생성 LLM : 하루의 대략적인 계획과 세부적인 계획을 생성해주는 LLM. 역시 MemoryStream에 추가

7. Dialogue 생성 LLM : Agent끼리 대화를 할 때 각 어떤 대답을 해야 할지 생성해주는 LLM. 마찬가지로 MemoryStream에 추가

  • 실시간성이 그 무엇보다 중요한 3D기반 게임이나, 실시간 전장 시뮬레이션에서는 적용하기 어려운 아키텍처라는 것이 느껴졌다

소감

Generative Agents는 인간처럼 생각하고, 판단하며, 반응하게 하는 Agent를 만들려면 어떻게 해야 하는지, 이렇게 만들어진 Agent가 사회를 이루고 서로 상호작용하며 인간과 같은 개연성 있는 행동을 이어나간다는 것을 보여주어 LLM도 인간처럼 행동할 수 있다는 새로운 가능성을 보여준 논문이다.

내가 이 논문을 읽으면서 가장 감탄했던 점은 크게 2가지다.
첫 번째는 LLM이 인간과 똑같이 행동하도록 만들기 위해서 인간이 "밥 먹고 싶다", "누구랑 만나고 싶다", "오늘은 놀러가야지"와 같이 별 생각 없이 느끼는 감정들을 체계적으로 구조화했다는 점이다.
조금만 생각해보면 각 인간은 기본적인 자신만의 성격이 있고 개성이 있다.
여기에 더해 자신이 겪은 경험을 바탕으로 미래의 행동을 결정한다.
논문에서는 사람이 생각하는 일련의 흐름들을 정말 치밀할 정도로 재구성했다.
나의 행동, 내가 관찰한 기억, 타인과의 대화를 단순히 기억으로 끝나는게 아닌 본인이 느끼는 성찰과 깨달음으로 연결되고, 여기서 얻은 성찰과 깨달음은 다음날의 나의 행동과 계획으로 연결된다.
그리고 사람의 행동에 영향을 미치는 기억 또한 동일한 비중으로 기억하지 않는다.
중요한 기억, 내가 보는 것 또는 만나는 사람과 관련된 기억, 너무 오래된 기억 등 결정적인 몇 가지의 기억들이 그 사람의 행동에 결정적인 근거가 되기 때문이다.
이런 내면의 무의식과 행동 과정을 반영하는 하나의 시스템을 만들어냈다는 것이 이 논문의 가장 큰 기여라고 생각한다.

두 번째는 "이렇게 만들어진 Agent가 실제 인간과 똑같이 생각하고 행동할까?"를 평가하기 위한 방법이다.
여기서 사용한 방식은 평가 지표를 통해 정답과 비교하기와 같은 일반적인 방법 대신 5가지 평가 항목을 에이전트에게 질문하여 얻은 에이전트의 무작위 응답 5개를 인간 평가자 100명에게 평가하게 하여 각 응답의 신뢰성에 대해 인간이 순위를 직접 매기는 방식이었다.
그리고 이렇게 매겨진 순위의 신뢰성을 검증하려고 ELO board 점수화, 다양한 통계적 유의성 검증 과정까지 거쳤는데 Agent의 사람다움을 평가하기 위해 엄청난 공수와 검증과정, 노력이 필요하다는 사실 그 자체에 뭐랄까... 넘을 수 없는 벽이 있다면 이런 건가? 싶었다..

profile
한 걸음씩 꾸준하게

0개의 댓글