AI・機械学習
上級

エピソード記憶(エピソードキオク)

LLMエージェントが過去の対話・行動・イベントを時系列で構造化して保存し、類似状況での意思決定に活用する記憶システム。認知科学のエピソード記憶概念をAIに応用したもので、Generative AgentsやVoyager等で実装される。

0 回閲覧
0 いいね

エピソード記憶とは

エピソード記憶(Episodic Memory)は、LLMエージェントが「いつ・どこで・何を・どのように」経験したかを時系列で構造化して保存し、将来の類似タスクで参照・活用する記憶メカニズムである。認知心理学者Endel Tulvingが1972年に提唱した人間のエピソード記憶概念を、AIエージェント向けに再解釈・実装したものだ。

2023年のStanford「Generative Agents: Interactive Simulacra of Human Behavior」論文(Park et al.)がエピソード記憶のAI実装を本格化させた。この研究では25体のエージェントが仮想町で生活し、各エージェントが経験を「観察→振り返り→計画」のサイクルで処理・蓄積することで、人間らしい社会的行動を創発した。

エピソード記憶の構造

各エピソードは以下の要素で構造化される。

フィールド型説明例
timestampdatetime発生時刻2026-06-22T03:30:00Z
actorstring行動主体user / agent / system
actionstring実行した行動"PostgreSQLクエリを実行"
observationstring結果の観察"13,902件のレコードを確認"
outcomeenum成功/失敗/部分成功success
importancefloat重要度スコア(1-10)7.5
embeddingvectorベクトル表現(768-4096次元)[0.023, -0.156, ...]
tagsstring[]分類タグ["database", "glossary"]
reflectionstring振り返りメモ"バッチ挿入は5件単位が最適"

Generative Agentsの記憶ストリーム

Park et al.の実装では、エピソード記憶を「Memory Stream」として管理する。

記憶の書き込みフロー

  1. 観察(Observation): エージェントが環境から情報を取得(例: 「Isabellaがカフェで絵を描いている」)
  2. 重要度評価: LLMが1〜10でスコアリング(「朝食を食べた」=2、「恋人との別れ」=9)
  3. タイムスタンプ付与: ゲーム内時刻と実時刻の両方を記録
  4. 埋め込み生成: text-embedding-ada-002(当時)で768次元ベクトル化
  5. ストリーム追加: 全観察を時系列順にメモリストリームへ追記

記憶の検索アルゴリズム

検索スコアは3要素の加重和で計算される:

  • Recency(新しさ): 指数減衰関数 score_r = exp(-λ × Δt)、λ=0.995/時間
  • Importance(重要度): 書き込み時のスコア正規化値 score_i ∈ [0,1]
  • Relevance(関連性): クエリとのコサイン類似度 score_v ∈ [0,1]
  • 統合スコア: α × score_r + β × score_i + γ × score_v(α=β=γ=1が基本)

主要実装フレームワーク

フレームワークエピソード記憶の実装振り返り機能ストレージ
Generative AgentsMemory StreamReflection Treeインメモリ+JSON
Voyager (NVIDIA)Skill Library自動カリキュラムJSON+ChromaDB
ReflexionTrial MemorySelf-Reflectionインメモリ
GITMGoal-conditionedTask DecompositionSQLite
AgentGPTTask History要約ベースWeaviate

Voyagerのスキル記憶

NVIDIA/Voyager(Wang et al., 2023)はMinecraftエージェントで、エピソード記憶を「スキルライブラリ」として実装した特徴的な例である。

  • エージェントが新しいタスク(例: 「鉄のツルハシを作る」)を達成するたびに、成功した行動シーケンスをJavaScriptコードとして保存
  • 次回類似タスクでは、ベクトル検索で関連スキルを取得し、ゼロからの試行錯誤を省略
  • 3,000以上のスキルを蓄積し、GPT-4単体と比較して3.3倍のアイテム取得率を達成

エピソード記憶の実装パターン

パターン1: Append-Only Log

全エピソードを時系列で追記。検索時はベクトル類似度+時間減衰でランキング。

パターン2: Summarization Chain

一定件数(例: 100件)蓄積ごとにLLMで要約を生成し、要約を新たなエピソードとして保存。原本は低優先度ストレージに退避。

パターン3: Graph-structured Episodes

エピソード間の因果関係・時系列関係をナレッジグラフで管理。Neo4j/NetworkXで実装。

エピソード記憶の評価指標

指標説明目標値
Recall@K関連エピソードの検索再現率≥0.85 (K=10)
Latency P95検索応答時間95パーセンタイル≤200ms
Memory Utilization有効に参照された記憶の割合≥30%
Staleness Rate陳腐化した記憶の割合≤10%

よくある質問(FAQ)

Q1: エピソード記憶と意味記憶の違いは何ですか? A: エピソード記憶は「いつ・どこで・何が起きたか」という具体的な経験の記録であり、意味記憶は「犬は哺乳類である」のような一般的知識の記憶である。LLMエージェントでは、エピソード記憶が対話ログや行動履歴、意味記憶がファインチューニングされた知識やRAGのドキュメントに対応する。

Q2: エピソード記憶はどのくらいの量を保持すべきですか? A: タスクの性質に依存するが、一般的には直近1,000〜10,000エピソードをアクティブストアに保持し、それ以前はアーカイブストア(要約済み)に退避させる。Generative Agentsの実験では1エージェントあたり約2,000エピソード/日が生成された。

Q3: 記憶の「忘却」は実装すべきですか? A: はい。人間の忘却曲線(Ebbinghaus)を模倣した時間減衰は、検索精度の向上とストレージコスト削減の両面で有効である。重要度スコアが低く、最終参照から30日以上経過したエピソードを自動アーカイブするのが一般的。

まとめ

  • エピソード記憶はLLMエージェントの経験を時系列で構造化・保存する仕組み
  • Generative AgentsのMemory Streamが代表的な実装アーキテクチャ
  • 検索スコアはRecency・Importance・Relevanceの3要素で計算
  • Voyagerのスキルライブラリのように、成功体験の再利用で効率を大幅向上
  • 記憶の肥大化対策として要約・忘却・階層化が必須