본문 바로가기
카테고리 없음

Generative Agents: Interactive Simulacra of Human Behavior

by 혜룐 2024. 6. 3.

https://arxiv.org/pdf/2304.03442

게임과 같은 상호작용 환경에서 믿을 만한 인간 행동을 시뮬레이션하는 생성 에이전트의 개발과 평가에 중점을 둔 논문이다.

자기인식(자신을 소개하거나 일상 일정을 설명하는 질문에 얼마나 잘 응답하는지), 기억(특정 사건이나 대화를 기억에서 검색하여 적절히 응답하는 능력), 계획(미래 행동을 계획하는 능력), 반응(예상치 못한 사건에 적절히 반응하는 능력), 반성(하루를 반성하고 미래 행동을 개선할 수 있는 능력)

생성 에이전트 아키텍처:

  • 이 아키텍처는 큰 언어 모델을 사용하여 관련 기억을 저장, 합성 및 적용하여 믿을 만한 행동을 생성하도록 설계되어있다.
  • 행동의 틀을 제공하는 것을 목표로 한다.
  • 다른 에이전트와 상호작용하고 환경 변화에 반응할 수 있는 틀이다.
  • 현재 환경과 과거 경험을 입력으로 받아 행동을 출력으로 생성한다. 즉 에이전트는 과거 경험을 바탕으로 반응하지 못하거나 중요한 추론을 하지 못하며, 장기적인 일관성을 유지하지 못랄수 있다. 생성 에이전트는 대량의 이벤트와 기억을 생성해야 하므로 필요할때 가장 관련 있는 기억을 검색하고 합성하는게 가장 중요하다.
  • 핵심 구성 요소는 기억 스트림, 반성, 계획을 포함합니다. 기억 스트림은 에이전트의 경험을 기록하고, 반성은 기억을 고차원적인 추론으로 합성하며, 계획은 이러한 추론을 행동 계획과 행동으로 변환합니다​​.

기억스트림+검색

메모리스트림으로 시간순으로 기록된 다양한 이벤트와 행동을 기록한다. 행동을 취할 수 있는 프롬프트를 던진 후 질문에 대한 응답을 생성하는 과정이 우측이 있다. 생성에이전트가 기억 스트림을 통해 어떻게 질문에 대해 적절하고 그럴듯한 응답을 생성하는지를 보여준다. 에이전트가 최근의 기억을 검색하고 가장 관련성 높은 항목을 기반으로 응답을 생성하도록 유도한다. 1) 기억항목들 검색 -> 2) 각 기억의 점수를 계산(최신성/중요성/관련성 = 최종점수) -> 3) 최종응답생성 : 검색된 기억항목중에서 가장 높은 점수를 받은 항목을 기반으로 응답을 생성

  • 에이전트의 경험을 자연어로 기록하는 데이터베이스
  • 검색은 에이전트의 현재 상황에 따라 관련 기억을 식별, 최신성, 관련성, 중요성을 균형있게 고려한다.
  • 기억스트림에서 기록은 에이전트의 행동을 계획하고, 환경에 적절히 반응하기 위해 검색된다. 기록은 재귀적으로 합성되어 행동을 안내하는 고차원적인 반성을 만들어낸다.
  • 접근방법
    • 에이전트의 경험을 포괄적으로 기록한다. 
    • 에이전트가 직접 인식한 이벤트인 관찰이다. 현재상황과 관련이 있거나, 없는 많은 관찰들이 구성된다. 검색상황에 대한 에이전트의 반응을 조절하기 위해 언어모델에 전달해야 하는 관찰들의 하위집합을 식별한다.
    • 에이전트의 현재상황을 계속 입력받아 메모리스트림의 하위집합을 언어모델에 전달하는 검색 기능을 구현해야 한다.검색기능의 구현방법은 에이전트가 행동을 결정할 때 고려해야할 중요사항에 따라 달라진다.
      • 예를 들어, 커피숍에 일하는 Isabella가 관찰해야 하는 이벤트
        • 페스트리를 준비
        • maria가 커피를 마시면서 시험공부중
        • 이사벨라가 마리아와 카페에서 발렌타인데이 파티를 계획
        • 냉장고가 비어있다.
    • 기억객체 스키마: 자연어 설명 / 생성 타임스탬프 / 최근 접근 타임스탬프
    • 검색함수
      • 최종 검색 점수를 계산하기 위해 에이전트메모리스트림에 최신성/중요성/관련성 점수를 0,1 범위로 정규화하며 검색 함수
      • score = α_recency · recency + α_importance · importance + α_relevance · relevance. 우리의 구현에서는 모든 α 값을 1로 설정합니다. 언어 모델의 컨텍스트 창에 맞는 상위 순위의 기억은 프롬프트에 포함시킨다. 
    • 검색스키마를 위한 주요요소
      • 최신성
        • 최근에 접근한 기억객체에 더 높은 점수를 부여 = 바로 전에 일어난 일이나 오늘 아침에 일어난 사건이 에이전트의 주영역에 남아 잇도록 한다. 최신성 = 메모리가 마지막으로 검색된 이후 게임시간의 수에 따른 지수 감쇠 함수로 처리(0.995)
      • 중요도
        • 에이전트가 중요하다고 생각하는 기억 객체에 더 높은 점수를 부여하여, 일상적인 사건과 핵심기억을 구분
          • 예. 연인과의 이별은 높은 점수를 준다. 아침에 일어나고 밥먹는 일상생활은 낮은 중요도부여
          • 프롬프트
          • 1에서 10까지의 척도에서, 1은 순전히 일상적인 것(예: 양치질, 침대 정리)이고 10은 매우 중요한 것(예: 이별, 대학 합격)입니다. 다음 기억 조각의 중요도를 평가하세요.
            기억: 윌로우 마켓과 약국에서 식료품 구매
            평가: <입력>
      • 관련기억을 식별
        • 현재 상황과 관련이 있는 기억객체에 더 높은 점수를 부여한다.
        • 무엇이 관련 있는지, 무엇과 관련이 있는지 = 각 기억의 텍스트설명의 임베딩 벡터모델 필요하고, 기억의 임베딩벡터와 쿼리 기억의 임베딩 벡터 사이의 코사인 유사도를 계산하여 관련성을 평가
          • 예. 학생이 동급생과 시험공부에 대해 논의하고 있다는 쿼리 --> 아침식사는 낮은 고나련성 / 교사와 학생공부에 대한 기억은 높은 관련성
        • 최근에 접근한 메모리일수록 가중치 부여 : decay_factor*time_interval
        • 중요도에 따라: 일상기억, 핵심기억을 구별
  • 검색: 현재 상황과 관련된 메모리에 더 높은 점수를 부여한다.
    • 인식을 바탕으로 아키텍쳐는 관련 기억을 검색하고, 검색된 행동을 사용하여 행동을 결정한다.
    • 검색된 장기기억은 장기계획을 세우고, 고차원적인 반성을 만드는데에도 사용되며, 둘 다 향후 사용을 위해 기억 스트림에 입력한다.

반성 = tree structure of reflection

관찰된 노드들은 검색 할 수 있도록 관리하고, 리플렉션이 일어난 노드도 관리하고, 계획을 추론하고, 최상위 리플렉션을 관리 한다.

tree로 관리되는 리플렉션은 서로 영향을 받으며, 특정 관찰에 기반하여 더 고차원적인 생각으로 상위 노드를 리플렉션한다.

단순한 관찰을 통해 -> 고차원적인 생각으로 발전 -> 더 나은 행동을 계획하고 수행한다. 

예) 단순히 여러가시를 읽고 사서와 상호작용하는 관찰 -> 연구에 헌신하고 열정을 리플렉션 -> 현재 상황뿐만 아니라 과거의 관찰된 경험을 고려하여 더 신뢰할 수있는 결정을 내린다.

  • reflection = 유형의 기억을 도입한다. 에이전트가 생성하는 더 높은 수준의 추상적인 생각을 말한다. 일종의 기억이다. 그래서 검색이 발생할때 다른 관찰과 함께 포함된다. 리플렉션은 주기적으로 생성된다.(최신 이벤트의 중요도 점수의 합이 입계값을 초과할때 생성한다. 대략 하루에 2,3번 리플렉션이 일어난다.)
  • 1단계 : 최근 경험을 바탕으로 질문할수있는 질문을 식별하여, 무엇을 리플렉션 할지 결정한다.
    • 최근 100개의 기록을 쿼리하고 -> 위의 정보만을 가지고 이 진술의 주제에 대해 우리가 대답할 수 잇는 가장 중요한 고차원적인 질문3가지는 무엇입니까? 라고 프롬프팅태운다. -> 생성된 질문을 검색쿼리로 사용해 각 질문에 대한 다른 관련 기억을 수집한다. -> 언어 모델에 통찰력을 추출하고, 근거가 되는 특정 기록을 인용하도록 요청한다. -> 인용된 기억 객체에 대한 포인터를 포함한다. -> tree, leaf구조로 위로 갈수록 더 추상적이고 고차원적인 생각을 저장한다.
    • 프롬프트
    • ```
      Klaus Mueller에 대한 진술
      1. Klaus Mueller는 연구 논문을 작성하고 있습니다.
      2. Klaus Mueller는 젠트리피케이션에 관한 책을 즐겨 읽습니다.
      3. Klaus Mueller는 Ayesha Khan과 운동에 대해 대화하고 있습니다 [...]
      위의 진술에서 5가지 고차원적인 통찰력을 추론할 수 있습니까? (예: 통찰력 (1, 5, 3 때문에))
      ```

계획

  • 에이전트가 일관된행동을 할수 있는 행동유지 계획이다. 미래 행동 시퀀스를 설명하고 행동을 장기적으로 일관되게 유지하는데 사용한다. 계획도 기억 스트림에 저장되며 검색과정에 포함된다. 이를 통해 에이전트는 행동을 결정할때 관찰, 반사, 계획을 모두 고려할 수 있다.
  • 스키마 : 위치 / 시작시간 / 지속시간
  • 1단계: 하루의 일정을 대략적으로 계획한다. 초기계획을 위해 에이전트의 요약설명(이름, 특성, 최근경험요약) + 전날의 요약을 언어모델에 프롬프트 한다. 아래 프롬프트는 하루를 5,8개의 청크로 나눈 에이전트의 대략적인 계획을 생성한다.
  • 프롬프트
    • ```
      이름: Eddy Lin (나이: 19)
      타고난 특성: 친절함, 외향적, 환대적
      Eddy Lin은 Oak Hill College에서 음악 이론과 작곡을 공부하는 학생입니다. 그는 다양한 음악 스타일을 탐구하는 것을 좋아하며 항상 자신의 지식을 확장할 방법을 찾고 있습니다. Eddy Lin은 대학 수업을 위한 작곡 프로젝트를 진행 중입니다. 그는 음악 이론에 대해 더 배우기 위해 수업을 듣고 있습니다. Eddy Lin은 그가 작업하고 있는 새로운 작곡에 대해 매우 흥분해 있지만, 앞으로 더 많은 시간을 할애하고 싶어합니다.

      2월 12일 화요일, Eddy는 1) 오전 7시에 일어나 아침 일과를 완료했습니다, [...] 6) 오후 10시경 잠자리에 들 준비를 했습니다.

      오늘은 2월 13일 수요일입니다. 다음은 Eddy의 오늘 대략적인 계획입니다: 1)
      ```

반응 및 계획 업데이트

  • 맥락요약 : 관찰자가 [관찰된엔티티]와 어떤 관계가 있는가? 와 [관찰된엔티티]의 [행동상태]는 무엇인가? 라는 쿼리를 통해 기억을 검색하고, 그 답변을 요약하여 생성된다.
  • 행동이 에이전트 간의 상호작용을 나태내는경우 대화를 생성한다.