エージェント論文:Chat GPTによる人間社会のシミュラクラ
こんにちはこんばんは、teftef です。今回はシミュレーションゲーム「ザ・シムズ」にインスパイアされた、スタンフォード大学と Google の共同研究である「エージェント論文」です。ChatGPT を用いた 25 人の AI エージェントを実際に 2 日間動かし、どのようになったかを調べました。町の様子や家具の動作、人間関係など設定がかなり凝っていて、実世界にかなり近い結果となっています。
私もまだ初学者であり、説明が間違っていたり勘違いがある可能性が 0 ではないということをご了承ください。ぜひコメントなどをいただけたら幸いです。また、この記事を作成するにあたり、GPT-4 による校正、修正が含まれています。
それでは行きます。(今回文章多め)
出典
今回参考にさせていただいた論文はこちら。⇩
1 : Abstract
今回はChatGPT などの大規模言語モデルに接続することにより、ゲーム環境における25人のエージェントの小規模社会を実現しました。(ちなみに GPT-4 にしたかったらしいのですが、招待待ちなので GPT 3.5 turbo を使用したそうです。)
25人の各エージェントは、目覚め、朝食を作り、仕事に向かう。芸術家は絵を描き、作家は文章を書く。など役割が与えられており、生成エージェントを実現するために、大規模な言語モデルを拡張し、自然言語を使ったエージェントの経験の完全な記録を保存し、時間の経過とともにそれらの記憶をより高いレベルの反映に合成し、動的にそれらを取り出して行動を計画します。
2 : ざっくりと何をやったか
近年まで、人間の行動を反映した社会を趣味レーションする研究はされていました。シミュレーションを通じて、オープンワールドの困難な対人関係の扱い方、社会科学理論の検証、ユビキタスコンピューティングアプリケーションや社会ロボットなどに役に立ちます。簡単に言うと人間同士の関係や社会をシミュレーションする中で、どのような問題が生じるかを観察することで問題点が見えてくるよということです。
しかし人間の行動をシミュレーションするのは難しく、長期的な一貫性を確保する完全な一般エージェントは、新しい相互作用、衝突、イベントが時間とともに発生したり衰退したりしながら絶えず増加する記憶を管理をLLM にさせることが難しかったです。(従来は専用のアーキテクチャを設計していた)
今回は LLM (Chat GPT) をベースにした生成エージェントを作成します。これらのエージェントは、社会について様々な推論を行い、自分の特性や経験を反映した日々の計画を立て、その計画を実行し、反応し、適切な場合には計画を立て直すという特徴を持っています。(そのように設計した。)
今回は 3 つの要素で構成されたアーキテクチャを設計します、
自然言後でエージェントの記憶を記録する記憶部分 (Memory)。
関連性、最新性、重要性を組み合わせて、エージェントの瞬間瞬間の行動に必要な記録を表示する検索モデル。
上記の2つに基づいて計画を作成し、行動と詳細な動作に反映するアーキテクチャ。
また自然言語でエージェントに「インタビュー」することで、エージェントの知識と行動を評価する方法論を活用し、エージェントの性格維持、記憶、計画、反応、反射を正確に行う能力を探りました。これによってアーキテクチャの構成要素の重要性の因果関係を確立し、不適切な記憶検索などに起因する故障を特定しました。
3 : 詳しい設定
エージェントの初期設定
Smallville には、25人の個性豊かなエージェントが住んでいて、それぞれが職業や他のエージェントとの関係などのアイデンティティを持っています。これは以下のように記述されます。
セミコロンで区切られた各フレーズは、シミュレーション開始時に記憶としてエージェントの初期メモリに入力されます。
エージェント間の通信
各エージェントは自然言語によって「Isabella Rodriguezは日記を書いている」は 、「Isabella Rodriguezはメールをチェックしている」などといった行動がタイムスタンプによって出力され、これは動作に変換される。一目で見て分かりやすいように「📚✎」、「💻✉」などのように吹き出しで表示されるように作られています。エージェントをクリックすることでより詳細な自然言語の説明を見れます。
また近くにいるエージェントの会話に参加するか参加しないかを決することもできますす。
ユーザーによるエージェントコントロール
ユーザーは神視点で、会話を通じてエージェントとコミュニケーションをとるか、「内なる声」の形でエージェントに指令を出すことで、シミュレーションを操縦したり、介入したりすることができます。この「内なる声」によってエージェントの行動をユーザー(私たち)が決めることができます。
例えばジョンの「内なる声」として以下を入力すると
と言われたジョンは、選挙に出ることを決意し、妻と息子に立候補を伝えます。
環境
Smallville 環境内にはカフェ、バー、公園、学校、寮、家、店などがあり、家の中にもベッド、机、クローゼット、棚、バスルームやキッチンなどがあります。
エージェントたちは、生成エージェントアーキテクチャとサンドボックスゲームエンジンによって指示され、ゲームのように Smallville の中を移動し、建物に入ったり出たり、マップをナビゲートしたり、他のエージェントに近づいたりできます。またユーザーはエージェント (Smallvilleのエージェントでも、新たに作成してもよい) に入ることができます(Matrix かな?!)
また家具や家電のような環境にも細かい設定がついており、その設定は行動によって変化します。例えば、エージェントが朝食を作ると冷蔵庫の食糧が減ります。また外部から操作をすることができ、例えば、トイレを水漏れをさせるとエージェントはそれを直しに行きます。かなり作りこまれてますね。
デイリールーティン
エージェントの初期設定には 1 段落の説明によってエージェントは自分の日々のルーティンを計画します。この世界では時間が経過するにつれて、エージェントの行動は、エージェント同士や世界との相互作用、記憶や関係の構築、共同活動の調整によって進化していきます。
例えば以下のようになります。
影響
エージェントが互いに気付くと、対話をすることがあり、そうすることでエージェントからエージェントへ情報が拡散することがあります。例えば2人のエージェントが会話することによって、その会話が他の人に影響を与えます。
人間関係の記憶
Smallville のエージェントは、時間の経過とともに新しい人間関係を形成し、他のエージェントとのやりとりを記憶しています。
協力
エージェント間はお互いに「協力」します。例えば Hobbs Cafe を経営するイサベラは 2月14日の午後 5 時から午後 7 時までバレンタインデーのパーティーを企画するという意図を持って初期化されています。これによって他エージェントは友人や顧客をHobbs Cafeや他の場所で見かけたら招待するようになる。また飾り付けなどの手伝いをしたり、他のエージェント同士がデートに誘ったりもします。
4 : アーキテクチャ
記憶
各エージェントは大規模自然言語モデル (LLM) を用いて、最近の環境と過去の経験から次の行動を生成するアーキテクチャです。しかしいくらGPT 4 のような LLM でも長期的な記憶の一貫性を正確に保つこと困難トンなっています。そこで今回のアーキテクチャの中心的な課題は、エージェントの長期的な記憶となっています。そこで記憶に大きな影響を与えるものとして 3 つの要素を用意しました。
1つ目 : Recency
これは直近に会った出来事に対しては高いスコアを与え、時間(タイムスタンプがある)がたつごとに指数関数的に減衰させます。減衰係数は0.99 を使用しました。
2つ目 : importance
これは出来事の重要性を表します。ありふれた出来事(朝食をとるなど)は低いスコアを与え、たいして衝撃的な出来事(別れ、合格通知)などは高いスコアを与えました。この時に使用した Prompt としては以下のようなものdで、最後の空欄に1~10の数字で記入させます。
3つ目 : Relevance
関連性が高い出来事に与えるスコアであり、例えば、学生がクラスメートと化学のテストのために何を勉強するか話し合っているというクエリであれば、彼らの朝食に関する記憶オブジェクトは関連性が低く、先生や学校の勉強に関する記憶オブジェクトは関連性が高くなります。これは記憶テキストを embedding ベクトルにし、これらの cos 類似度を取ることで、関連性の高さを計算しています。
最終的にこの3つのスコアはこのように合計され Prompt の出力に影響されることになります。
𝑠𝑐𝑜𝑟𝑒 = 𝛼𝑟𝑒𝑐𝑒𝑛𝑐𝑦 · 𝑟𝑒𝑐𝑒𝑛𝑐𝑦 + 𝛼𝑖𝑚𝑝𝑜𝑟𝑡𝑎𝑛𝑐𝑒 ·𝑖𝑚𝑝𝑜𝑟𝑡𝑎𝑛𝑐𝑒 +𝛼𝑟𝑒𝑙𝑒𝑣𝑎𝑛𝑐𝑒 ·𝑟𝑒𝑙𝑒𝑣𝑎𝑛𝑐𝑒
振り返り
共通の趣味を持つような人は惹かれやすいように、エージェントが共通の関心ごとがある時により強く影響されるアーキテクチャです。エージェントは1日におよそ2〜3回振り返りを行います。振り返りではまず、エージェントの記憶の中の最新の100件を抜き取り、質問(Prompt)をします。例えば「100の記憶の中で文中の対象について答えられる最も鋭いハイレベル質問3つは何?」というような問に対し、モデルの反応を見ます。その時になぜそれを挙げたのか、引用もします。Prompt は以下の通りです。
計画と反応
人間の行動は計画首尾一貫性を保つ必要があります。より長い時間軸で計画を立てることが信頼性にもつながります。しかし、例えばエージェントの背景を言語モデルに促し、時間を記述し、与えられた瞬間にどのような行動を取るべきかを尋ねると、近い時間に2 回の昼食を食べてしまうことがある。このように瞬間的な信憑性を高めると、時間的な信憑性が損なわれてしまいます。一貫性のある計画のためにまず、その日の一日の計画を大まかに Prompt に書き示します。エージェントはこの計画をベースに一日の行動を細かく1時間ごとに作成していきます。(私たち人間もおおよそそんな感字ではないでしょうか?)
計画のアップデート
各エージェントは、アクションループで動作し、各時間ステップで周囲の世界を認識し、それらの認識された「観測」は記憶に格納されます。このような観察を言語モデルに促し、エージェントが既存の計画を続けるべきか、変更すべきかを決定します。 Prompt は以下のようになります。
対話
エージェントたちはお互いの記憶を元に対話をします。例えば、以下のような記憶に対して、
という文に対して、
と返します。これをもう一人の対話相手の記憶の最後に付加します。
これに対する問は以下のようになります
5 : 実装
このシステムは Phaser web game development framework によって構成されました。 各エージェントの情報を含むJSONデータ構造を取り、サーバーで維持されます。サンドボックス環境を部屋やオブジェクトのツリー構造で表現し、エージェントはこの木構造を自分自身の環境表現として利用し、環境をより効率的に理解することができます。また、この木構造を自然言語に変換してエージェントが行動する場所を特定することができます。
そして、エージェントがオブジェクトに対してアクションを実行する場合、オブジェクトの状態に何が起こるかを言語モデルに問い合わせます。
例えば、"making espresso for a customer"コーヒーマシンの状態が "off" から "brewing coffee" に変わることになります。
6 : 評価
エージェントに対して 5 つの質問を投げかけます。
Self-knowledge : 自己紹介、計画紹介など
Memory : ~について覚えていますか?など
Plans : 明日の10時に何をしますか?など
Reactions : 朝食が燃えています!あなたならどうしますか?など
Reflections :"最近会った人の中で一人と一緒に過ごすとしたら、それは誰ですか?など
などの質問を投げかけることで生成された回答を評価しました。また機械的な評価だけではなく、人間によるアンケートの実施しています。
結果
Reflections、Plans、Memory の3つの要素を持つ完全なアーキテクチャーを使用している生成エージェントが、他の条件よりも最も信頼性が高い振る舞いを生成することを示しました。これに対し、Memory、Plans、Reflections いずれかを取り除いたアブレーション実験では、性能が低下していることが明らかになりました。またエージェントたちは記憶を持っていることが分かったが、、正確な記憶を引き出すことができない場合もありました。また誇張するようなこともありました。
また Reflections が最も大きな影響を及ぼすことがわかりました。エージェントは自分自身の経験や知識を総合的に考慮し、これを元に常に適切な行動を選択できました。私たち人間は過去の知識や経験をもとに行動を選ぶというのは至極当たり前のようであり、再認識させられる結果です。
また、25体のエージェントを用いて20日間にわたってシミュレーションした結果の社会的なふるまいをまとめました。その中でも情報の拡散、関係形成、エージェントの調整という3つの減少を観察することができました。(詳しくは書きません。)
応用
サンドボックス以外のこの研究の応用として、メタバースでの応用、社会ロボットなどがあげられます。(個人的に何でもかんでもメタバースに常げるのは良くないと思っている。)人間の振る舞いをより強力なシミュレーションでテストし、社会システムや理論をプロトタイプ化することで、新たな体験をもたらすことが可能です。また、製品やサービスの開発において、ユーザーのニーズや要件を中心に考え、それらに合わせた設計を行うこと応用が利きます。例えば、ある特定の人間 A さんの代理人としてエージェントを作成し、シミュレーションします。これによって A さんの一日の行動に沿ったシステム開発が実現で、特定の時間(朝など)に自動でコーヒーを淹れ、 Aさんの出社とともにエアコンを止め、帰ってくる前にエアコンをつける、などのようなことができます。
今後の展開
今後の展開として、より早いシミュレーションの開発があげられます。今回は25 人のエージェントを 2日間にわたってシミュレーションしましたが、並列処理などを用いて早くすることが期待されます。また、より長期間にわたってエージェントの振る舞いを観察し、その能力や限界についてより包括的な理解をすることが今後の目標として挙げられます。特にエージェントは特定の偏った行動を反映することもあり、これらを減らすための工夫も必要です。つまり、より早く、より人間の社会に近づくようなエージェントシミュレーションが求められてます。
最後に
最後まで読んでいただきありがとうございました。今回の論文は自然言語処理をベースに構築されたアーキテクチャを用いたエージェントたちを使用し、人間の行動をシミュレーションすることで、信頼できる行動を生み出すことができるとわかりました。生成エージェントは、デザインツール、ソーシャルコンピューティングシステム、没入型環境に至るまで、多くのインタラクティブなアプリケーションで役割を果たすことが期待されています。
次回予告と宣伝
正直、今回の論文は読んでいて疲れました。というのもほとんどが設定で、読んだ内容がそのままで、あんまりかみ砕けないからです(笑)。しかし、映画 matrix を連想される内容であり、まだまだ現実的ではないですが、SF に一歩近づいたのかなという期待感がありました。
最後に少し宣伝です。主のteftefが運営を行っているdiscordサーバーを載せます。このサーバーではMidjourneyやStble Diffusionのプロンプトを共有したり、研究したりしています。ぜひ参加して、お絵描きAIを探ってみてはいかがでしょう。(teftef)
↓↓もしよろしければこの記事と開発の支援お願いいたします!
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?