仮想空間の街の中で25人のAIエージェントの行動をシミュレーション!?
3つの要点
✔️ 大規模言語モデルと対話型エージェントを用いることで、人間の行動をシミュレートするアーキテクチャを構築
✔️ 25人のエージェントと仮想的なゲーム環境による人工的な村社会を構築し、集団行動をシミュレーション
✔️ 検証の結果より、エージェント間の創発的なグループダイナミクスの形成を確認
Generative Agents: Interactive Simulacra of Human Behavior
written by Joon Sung Park, Joseph C. O'Brien, Carrie J. Cai, Meredith Ringel Morris, Percy Liang, Michael S. Bernstein
(Submitted on 7 Apr 2023)
Comments: Published on arxiv.
Subjects: Human-Computer Interaction (cs.HC); Artificial Intelligence (cs.AI); Machine Learning (cs.LG)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
人間の行動のシミュレーションは、仮想空間でのコミュニティ形成の検証や社会ロボット、オープンワールドにおけるよりリアルなゲームキャラクターの開発など様々な分野における重要な研究分野であり、古くから数多くの研究がされてきました。
しかし、既存研究ではエージェントに現在の環境のみを条件とする行動(例:ロボットが部屋に入るためにどのような行動を取る必要があるか)しかシミュレーションさせる事ができないという問題点があり、現実世界のような複雑な環境を再現する事が不可能でした。
本稿では、Memory Stream・Reflection・Planningの3つの要素で構成されたアーキテクチャにより上記の問題を解決し、これにより生成された25人のエージェントから人工的な村社会を構築することで、集団行動のシミュレーションを行うことに成功した論文について解説します。
Agent Avatar and Communication
本論文では集団行動のシミュレーションを行うにあたり、大人気RPGゲームであるThe Simsを参考に小さな町から構成された仮想環境「Smallville」と、その住民である25人のエージェントを作成しました。(下図参照)
Smallvilleの仮想環境はWebゲームの開発フレームワークであるPhaserを用いて構築されており、エージェントの出力アクションによりJSONデータが更新され、次のタイムステップのためのプロセスが処理されます。また、各エージェントの職業や他のエージェントとの関係などのプロフィールを設定するため、以下のような自然言語処理による記述をエージェントの初期メモリとして入力しています。
この文であれば、薬局の店員で人助けが好きなJohn Linという男性という初期メモリがエージェントに与えられます。こうして生成されたエージェントは、Smallvilleの中で日々の生活やエージェント同士の関係の構築といった動作を創発的に行うようになります。上記のJohn Linを例に挙げると、下図のように午前6時ごろに起床→歯磨き・シャワー・朝食を食べるといった朝のルーティーンを行う→妻のMeiと息子のEddyと軽く挨拶を交わした後に出勤するといった一連の流れが行われている事が確認できます。
もう一つの例として、Hobbs Cafeというお店で2月14日の午後5時〜7時にバレンタインデーのパーティーを企画するという初期メモリのもとに行われた、Isabella Rodriguesというエージェントによる検証が挙げられます。
Isabellaは、友人や顧客を見かけたらHobbs Cafeでのパーティーに招待するようになり、13日の午後には当日のためにカフェの飾り付けを行っていることが確認されました。こうして、当日にはIsabellaを含む5人のエージェントがHobbs Cafeに集まり、下図のようにそれぞれがパーティーを楽しんでいる様子が確認されました。(IRがIsabella Rodrigues)
この検証において、人為的に設定したのはIsabellaがパーティーを開くという初期メモリだけであり、友人達に情報を広める・カフェを飾りつける・当日に友人達と交流するといった社会的行動は、全てエージェントによる創発的に行われたものになります。
2つの例に見られるように、注目すべきはこれらの社会的行動はあらかじめプログラムされたものではなく、初期メモリからエージェント同士が創発的に行動している点になります。
Generative Agent Architecture
上述したエージェントの行動の根底には、大規模言語モデルと言語モデルの出力条件となる関連情報を合成・検索するメカニズムを組み合わせた新しいエージェントアーキテクチャが不可欠であり、これらのアーキテクチャがなければエージェントは過去の経験に基づいた一貫性のある社会的行動を振る舞うことができません。下図のように、本論文のエージェントアーキテクチャはMemory Stream・Reflection・Planningの3つの要素から構成されており、これらのアーキテクチャと大規模言語モデル(本論文ではChatGPTのgpt3.5-turboを使用)を活用することで前述した振る舞いを行うエージェントの生成を可能にしています。
一つずつ見ていきましょう。
Memory Stream
Memory Streamの主な役割は、エージェントの経験の記録を維持することであり、これはメモリオブジェクトのリストから構成され、各オブジェクトには自然言語による説明・作成時のタイムスタンプ・最新のアクセス時のタイプスタンプが含まれています。(下図参照)
Memory Streamの最も基本的な要素は、エージェントによって直接知覚されたイベントであるObservationであり、一般的なObservationにはエージェントが自ら行なった行動や他のエージェントによって行われていると認識した行動が含まれます。(例:椅子を並べる、コーヒーを飲みながらテスト勉強をする)
エージェントが行動を決定する際、何を考慮するかが重要であり、本コンテキストではrecency・importance・relevanceの3つの要素からスコアリングすることで最も効果的な行動を決定します。
recencyは、最近アクセスされたオブジェクトに高いスコアを割り当てることで、直近の行動や出来事がエージェントの行動に高い影響を与えるようにします。
importanceは、エージェントが重要だと考えるオブジェクトに高いスコアを割り当てることで、平凡なオブジェクトとコアとなるオブジェクトを区別します。例えば、自分の部屋で朝食を食べるといった日常的な出来事はimportanceが低く、大切な人との別れといった出来事はimportanceが高くなります。
relevanceは、現在の状況に関連するオブジェクトに高いスコアを割り当てます。例えば、学生がクラスメイトと化学のテストのために何を勉強するか話し合っているという状況であれば、彼らの朝食に関するオブジェクトはrelevanceが低く、先生や学校の勉強に関するオブジェクトはrelevanceが高くなります。
最終的なスコアは、recency・importance・relevanceのスコアをmin-max scalingによって[0, 1]の範囲の正規化し、3つの要素の加重合計(weighted combination)することによって決定します。
Reflection
Reflectionは、エージェントが生成するより高度で抽象的な思考であり、エージェント内で定期的に生成されます。
本論文の実装では、エージェントが認識したイベントに対して、前述したimportanceスコアの合計がある閾値を超えた時にReflectionが生成され、実際にエージェントは1日におよそ2〜3回のReflectionが生成されていました。
Reflectionの最初のステップは、エージェントが何をReflectionするかを決めることであり、そのためにエージェントのMemory Streamにある最新の100件のイベント(例:Klaus Muellerは高級住宅地に関する本を読んでいる)を大規模言語モデルに問い合わせます。
その後、言語モデルに対して「Given only the information above, what are 3 most salient high-level questions we can answer about the subjects in the statements?」(上記の情報だけで文中の対象者について回答できる、最も顕著で高レベルな3つの質問はなんですか?)という質問をします。
この質問に対する言語モデルの応答により、「What topic is Klaus Mueller passionate about?」(Klaus Muellerが情熱を注いでいるトピックはなんですか?)といった質問の候補が生成されます。
生成された質問を検索クエリとして使用し、それぞれの質問に対して関連するMemoryを収集し、質問の回答の根拠となる特定のMemoryを引用するように促します。これらのプロンプトの全文は以下のようになります。
この処理により、「Klaus Mueller is dedicated to his research on gentrification」(Klaus Muellerはジェントリフィケーションに関する研究に専念している)といった文が生成されます。その後、これらの文は引用されたメモリオブジェクトへのポインタを含むReflectionとしてMemory Streamに保存されます。
これらの一連の流れより、エージェントは下図のように、葉のノードで表現されるエージェントの外部環境に対する影響(Observation)とその結果生成される抽象的な思考(Reflection)からなるツリー構造(Reflection tree)を生成します。
図はKlaus MuellerのReflection treeであり、ObservationとReflectionが合成を繰り返して最終的に「Klaus Mueller is highly dedicated to research」という自己認識が生成されている事が確認できます。
Planning
エージェントが首尾一貫した行動をするためには、過去の出来事も含めたより長い時間軸で1日のプランを立てる必要があります。こうしたエージェントの将来の行動を記述し、時間経過ごとのエージェントの行動に一貫性を持たせるためにPlanningが用いられます。
Planningには、location(場所)・starting time(開始時間)・duration(期間)という3つの要素含まれ、Reflectionと同様にMemory Streamに保存されます。
Planningを作成するために、まず初めにその日の予定を大まかに示すプランを作成し、その後言語モデルによって再帰的にプランの詳細を生成するというトップダウン方式を用います。最初のプランを作成するために、エージェントの概要の説明(名前、特徴、最近の出来事の要約など)と前日の要約を言語モデルに入力します。プロンプトは以下のようになり、言語モデルが詳細を生成するため後半部分が未完成の文になっています。
これらのプロンプトによって、エージェントの1日のプランが5〜8個に分けられたラフスケッチになり、上記のEddy Linというエージェントのプロンプトを例に挙げると、1日のプランが以下のように分けられます。
8時に起床し、朝のルーティーンをこなす → 10時からOak Hill Collegeに行って授業を受ける → ・・・ → 午後1時から5時まで、新しい音楽の作曲に取り組む → 午後5時30分に夕食を食べる → 学校の課題を終えて、午後11時までに就寝する
次に、エージェントはこのプランをメインストリームに保存し、それさらに分解してより細かいアクションを作成します。例えば、上記の午後1時から5時まで新しい作曲に取り組むというプランを次のように分解します。
午後1時: 作曲のためのいくつかのアイデアをブレインストーミングすることから始める → 午後4時: 作曲を見直し、修正する前に一休みしてリフレッシュする
その後、下のようにこれをさらに5〜15分ごとのアクションに分解します。
午後4時: 果物やグラノーラバー、ナッツ類などの軽いスナックを食べる → 午後4時5分: ワークスペースの周りを少し歩く → ・・・ → 午後4時50分: ワークスペースの片付けをする
エージェントは環境の影響やエージェント間の相互作用に応じてこれらのプランを途中で変更することができ、時間ステップごとにこれらのプランは動的に更新されます。
End-to-end Evaluation
本論文では、前述したアーキテクチャがより信頼性の高い集団行動のシミュレーションを可能にしていることを実証すべく、Smallvilleに住んでいる25人のエージェントを対象にした検証を行いました。
Measurements
Information diffusionは、社会科学や行動科学の分野において一般的に研究されている現象であり、重要な情報があれば、エージェント間でこのような情報の拡散が行われる事が予想されます。
このような現象が起こるかどうかを検証するために、Smallvilleで25人のエージェントを対象に2日間に渡り、以下の2つの特定の情報の広がりを測定しました。
- Sam's candidacy for village mayor(Samが村長に立候補したこと)
- Isabella's Valentine's Day party at Hobbs Cafe(IsabellaがHobbs Cafeでバレンタインデーパーティーを開催すること)
検証開始時には、両情報はそれぞれの発信者(村長の立候補者のSam、パーティー開催者のIsabella)しか持っていません。
Information diffusionの発生を確認するため、2日間の検証後に25人のエージェントそれぞれに対して
- 「Do you know who is running for mayor?」(誰が村長に立候補しているか知っていますか?)
- 「Did you know there is a Valentine's Day party?」(バレンタインデーパーティーがあることを知っていましたか?)
と質問し、知っていると答えた場合はYES、知らないと答えた場合はNOとラベルを付けてエージェントの回答の分析を行いました。
また、本実験ではこれに加えて、シミュレーション中にエージェント同士の会話を通じて形成される交友関係の密度(network density)の変化も測定しました。
シミュレーション前後で各エージェントに「Do you know of <name>?」と質問し、2人のエージェントがお互いのことを知っていれば交友関係が形成されたとみなします。
その後、その回答を用いてエージェントを表す25個の頂点をvertices(V)、Vertices同士を結ぶ線をedges(E)とする無向グラフを形成し、このグラフに基づいてnetwork density = 2 * |E| / |V| (|V| - 1)としてシミュレーション前後のnetwork densityの変化を調べました。
Results
2日間のシミュレーションの結果、Samが村長に立候補したことについて知っているエージェントは1人(4%)から8人(32%)に、Isabellaが開催したパーティーについて知っているエージェントは1人(4%)から12人(48%)に増加していました。
Isabellaが開催したパーティーに関する情報の拡散経路を下図に示します。
図から読み取れるように、Isabella → Sam → Jenniferといったようにエージェント同士の交流を通じて情報が拡散されていた事が確認できました。
また、シミュレーション前後のnetwork densityは0.167 → 0.74と顕著に増加しており、シミュレーション中にエージェント同士が新たな交友関係を形成していた事が分かりました。
まとめ
いかがだったでしょうか。今回は、Memory Stream・Reflection・Planningの3つの要素で構成されたアーキテクチャを構築し、これにより生成された25人のエージェントから人工的な村社会を構築することで、集団行動のシミュレーションを行うことに成功した論文について解説しました。
本文において、今回行われた実験は総じて不十分であると述べられており
- 本研究で生成されたエージェントに対する実験は2日間という短い期間に限定されたものであり、今後の研究ではエージェントの能力と限界をより包括的に検証する必要がある
- 言語モデルにはバイアス含まれている事が確認されており、エージェントがこうしたバイアスを反映した行動をしている可能性がある
といった問題点があるため、さらなる研究が必要になると思われます。
しかし、本研究で実証されたエージェントの行動はソーシャルロボットやソーシャルコンピューティングシステムなど、様々な分野に活用することが可能であり、今後の進展が非常に楽しみです。今回紹介したエージェントのアーキテクチャや検証結果の詳細は本論文に載っていますので、興味がある方は参照してみてください。
この記事に関するカテゴリー