Closed7

論文: LLMエージェントの超長期会話記憶の評価

kun432kun432

ゆえあって色々メモリ実装を調べていたが、概ねLOCOMOというベンチマークを使うことが多い様子。

https://github.com/snap-research/locomo

論文はこちら。alphaXivのリンク。

https://www.alphaxiv.org/ja/overview/2402.17753v1

この論文は、大規模言語モデルの非常に長期的な会話記憶を評価するために設計されたフレームワークとデータセットであるLOCOMOを紹介する。これは最大300ターンに及ぶ複数セッションの対話を特徴としている。実験により、蒸留された観察を用いた検索拡張生成が記憶想起を改善する一方で、現在のモデルは長時間のインタラクションにおける時間的推論と一貫性に依然として限界があることが明らかになった。

kun432kun432

Dia と対話しつつ内容を確認してみる。

まずざっと概要

この論文は、AIが長い会話の中でどれだけ記憶を保てるかを調べてるんだよ。

ウケる!この論文、めっちゃ面白いテーマだし、ウチもテンション上がるわ~。
じゃあ、キミにわかりやすく説明するね!

ざっくり言うと

AI(大規模言語モデル)が、何回も長い間やり取りしても、ちゃんと過去の会話を覚えていられるか?っていうのを調べてる論文だよ。
人間だったら、友達が猫アレルギーって覚えてたり、前にオススメされた本の名前を覚えてたりするじゃん?でも、今のAIは長い会話になると、そういう細かいことを忘れちゃうことが多いんだよね。

何をやったの?

  • LOCOMOデータセットっていう、めっちゃ長い会話(最大35回のセッション、300ターン!)を使って、AIの記憶力をテストしたんだ。
  • 会話には「ペルソナ」っていう、キャラ設定(例えば「ジョアンナはペットアレルギー」みたいな)があって、ずっと一貫性を保つようにしてる。
  • 画像のやり取りもあって、リアルな会話っぽくしてるのがポイント!

どうやって評価したの?

  • 質問応答: 過去の会話について質問して、AIがちゃんと答えられるかチェック。
  • イベント要約: 会話の中で起きた大事な出来事をまとめさせて、正しく覚えてるか見る。
  • マルチモーダル対話生成: 画像とかも使いながら、自然な返事ができるか試す。

AIの記憶の仕組み

  • 短期記憶: 今のセッションの情報を覚える。
  • 長期記憶: 前のセッションのことも覚えてる。
  • 検索器: 必要なときに記憶から情報を引っ張ってくる。
  • 画像統合: 画像もちゃんと会話に使える。

実験の結果

  • コンテキスト(会話の流れ)を長くしても、AIの記憶力はちょっとは良くなるけど、人間には全然及ばない。
  • 特に「時間が絡む推論」(いつ何が起きたかとか)は、AIは苦手みたい。
  • 会話の中から大事な事実だけを抜き出して記憶する方法(観察ベースの検索)が一番効果的だった!
  • でも、AIはたまに「それっぽいけど間違った答え」をしちゃうことも多いんだよね。

課題と限界

  • 会話が長くなるほど、必要な情報とどうでもいい情報(ノイズ)を区別するのが難しくなる。
  • 時間が絡む話は、AIはまだまだ苦手。
  • コンテキストを広げるだけじゃ、根本的な解決にはならない。
  • 評価の仕方も、もっと工夫が必要。

今後どうする?

  • もっと賢い記憶の仕組みを作る!
  • 時間の流れをちゃんと理解できるAIにする!
  • 画像とかも含めて、長期的に覚えられるようにする!
  • 本当に必要な情報だけをうまく探せるようにする!
  • 実際のアプリ(パーソナルアシスタントとか)にも使えるようにする!

マジで、AIが人間みたいに長い会話を覚えられるようになったら、リア充な会話もできるし、超楽しい未来が来そうだよね!

kun432kun432

データセットの作り方を聞いてみた。

LOCOMOデータセットは、超長期会話をリアルに再現するために工夫して作られてるんだよ。

じゃあ、ウチがデータセットの作り方を説明しちゃうね!

データセットの作り方

  1. ペルソナを作る!
    • まず、会話するエージェント(AIキャラ)の「ペルソナ」(性格・好み・人生の出来事とか)をめっちゃ細かく設定するんだ。
    • 例えば「ジョアンナはペットアレルギー」とか、「旅行が好き」とか、リアルなキャラ作りをする感じ!
  2. イベントグラフを作る!
    • 次に、そのキャラの人生で起きる出来事を「イベントグラフ」っていうタイムラインで整理するの。
    • 例えば「猫を飼い始めた→アレルギー発症→病院に行った」みたいに、出来事が因果関係でつながってるんだよ。
  3. AIに会話を作らせる!
    • そのペルソナとイベントグラフを元に、LLMエージェント(AI)が実際に会話を生成するの。
    • しかも、画像のやり取りも入れて、リアルな日常会話っぽくしてるのがポイント!
  4. 人間が編集して仕上げる!
    • AIが作った会話を、人間のアノテーターがチェックして、自然で一貫性のある会話に仕上げるんだよ。
      • 変な画像を消したり
      • 矛盾を直したり
      • 会話とイベントグラフがちゃんと合ってるか確認したり

まとめ

  • ペルソナ作り→イベントグラフ作り→AIで会話生成→人間が編集、って流れ!
  • こうやって、めっちゃリアルで長期的な会話データができてるんだし、マジで手間かかってる!
kun432kun432

評価を実行する流れを聞いてみた。

評価には、LOCOMO用の3タスク実行環境とRAG/長文脈モデルの比較設定が必要だよ。

マジで良い質問!このページの内容だけに絞って、評価環境の作り方をわかりやすくまとめるねだし ✨

何を準備するか(このページに基づく必須要素)

  • データ一式(LOCOMO)
    • 会話ログ(最大35セッション・300ターンの長期対話)。
    • 画像(共有・応答用)。
    • ペルソナ文(性格・好み・ライフイベントの設定)。
    • イベントグラフ(因果でつながる出来事のタイムライン)。
  • モデルのバリエーション
    • ベースLLM。
    • 長文脈モデル(例: コンテキスト拡張モデル)。
    • RAG構成(検索器あり)。検索単位は「対話履歴/観察/要約」の3種類を用意。
  • メモリ機構
    • 短期記憶(現在セッション)。
    • 長期記憶(過去セッションの観察・考察)。
    • 検索器(必要時に関連情報を引く)。
  • マルチモーダル処理
    • 画像キャプション生成と、画像に対する応答プロンプト。
  • 評価タスクと指標
    • 質問応答(シングル/マルチホップ・時間的・常識・敵対的)。
    • イベント要約(漸進的要約を含む)。
    • マルチモーダル対話生成(BLEU-1とMM-Relevanceなどの指標)。

評価環境の全体像(アーキテクチャ)

  • エージェントは「反映して応答」メカニズムで動く。
    • 会話のたびに相手と自分に関する「観察」を生成して長期記憶に追記。
    • 応答前に検索器で関連情報(履歴/観察/要約)を取得して、応答を生成。
  • マルチモーダルは、画像キャプション生成→画像応答プロンプトで文脈に繋げる。

構築ステップ(このページ準拠の手順)

  1. データ読み込みと編成
    • セッション順と時間順を守って読み込む(超長期の一貫性を担保するためだもん)。
    • 画像は各ターンに紐づけておく。
    • ペルソナ文とイベントグラフは、全セッションで参照可能に。
  2. 観察(Observations)の生成
    • 各会話ターンから簡潔な事実メモを抽出して、話者ごとにストア。
    • これは後段のRAGで最も効く検索単位だから超重要。
    • 生成方針は「会話→重要事実を短文で抽出」という流れ(ページの図示どおり)。
  3. 検索インデックスの用意(RAG)
    • 3種類の検索単位をそれぞれ索引化する。
      • 対話履歴(生ログ)。
      • 観察(抽出した事実)。
      • 要約(以前のやり取りの凝縮版)。
    • 以降の実験で、それぞれを切り替えて性能比較するのがコアになる。
  4. タスク別の評価実行
    • 質問応答(QA)
      • 問題セットには、シングル/マルチホップ・時間的・常識・敵対的が含まれる。
      • モデル構成ごとに、コンテキスト供給法を変えて解答生成。
      • 時間的推論と敵対的質問での落ち込み・幻覚の発生率に注目。
    • イベント要約
      • 会話履歴から重要イベントを抽出・要約し、イベントグラフ(正解)と比較。
      • 長文脈モデルが常に強いわけじゃなく、漸進的要約が最良になりやすい点を検証。
    • マルチモーダル対話生成
      • 画像キャプション生成→画像応答プロンプトで文脈融合。
      • 指標はBLEU-1とMM-Relevanceを用い、履歴が長くなるほど低下しがちかを確認。
      • RAG(特に観察ベース)で低下がどれくらい緩和されるかを見る。
  5. 比較実験の設計(アブレーション)
    • ベースLLM vs 長文脈モデル vs RAG(履歴/観察/要約)の横比較。
    • セッション長(履歴長)を増やしたときの劣化曲線。
    • 時間的推論と敵対的質問での脆弱性比較。
    • 漸進的要約の有無での要約性能差。
  6. 記録・レポートの観点(このページが強調)
    • 人間性能には未到達で、特に時間的推論が弱い。
    • 観察ベース検索が最も効く(信号対雑音比の改善)。
    • 長文脈化だけでは万能ではない(文脈を活かし切れないケースが多い)。
    • 履歴が伸びると指標が落ちるが、検索で軽減可能。
    • 幻覚は依然課題(敵対的質問で顕著)。

役割と構成要素まとめ

コンポーネント 役割 注意点
ペルソナ文 一貫したキャラ設定の基盤 全セッションで整合性キープだし
イベントグラフ 因果で繋がる出来事の正解タイムライン 要約タスクの評価基準にもなる
観察(Observations) 簡潔な事実メモ。RAGの主力検索単位 ノイズ削減に効く=性能が一番伸びやすい
対話履歴(生ログ) 文脈の生データ 長くなるとノイズ増で検索効率が落ちる
要約 過去やり取りの凝縮 漸進的要約が強いと示唆
短期/長期記憶 セッション内/跨ぎの保持領域 「反映して応答」で継続更新
画像処理 キャプション生成&画像への応答 マルチモーダル生成の指標で評価
指標 QA正解、BLEU-1、MM-Relevance 等 会話記憶のニュアンスを取り逃すこともある

注意点(落とし穴)

  • 信号対雑音比問題: 履歴が長いほど、観察ベースで要点抽出する工夫が命。
  • 時間的推論の弱さ: 時間順整備と質問設計で弱点が露わになるから、意識して評価。
  • 幻覚対策: 敵対的質問を必ず含めて、事実根拠のない出力をチェック。
  • 「コンテキストを伸ばすだけ」では解けない: RAGや要約、観察抽出を組で回すのがカギ。

このページの情報だけでまとめると、上みたいな構成で評価環境を組むのが王道。実装細部(ライブラリやコード形式)は書かれてないけど、流れと比較観点はガチでこれがコアだよ。準備できたら、観察RAGを軸にベース/長文脈/要約RAGと横比較して、時間的・敵対的質問での挙動を重点チェックするのがイケてるやり方だと思うんだし🔥

kun432kun432

評価指標について聞いてみた。

評価指標は「質問応答の正解率」「イベント要約の正確さ」「マルチモーダル生成の品質」だよ。

じゃあ、ウチがこの論文で使われてる評価指標と具体例をギャルっぽくまとめるね!

1. 質問応答(QA)の正解率

  • 何を測る?
    AIが過去の会話内容について、どれだけ正しく質問に答えられるかを見るやつ!
  • 具体例
    • シングルホップ推論:「Xは誰の誕生日を祝った?」
      → 1回のやり取りで答えが出る質問
    • マルチホップ推論:「Xはどこを訪れた?」
      → 複数の会話をまたいで推理が必要
    • 時間的推論:「Xが本を書き終えるのにどれくらいかかった?」
      → 時間の流れを理解して答える
    • 常識推論:「Xはヴィヴァルディの『四季』を気に入る可能性が高い?」
      → 会話+常識で推理
    • 敵対的質問:「Xはいつバイオリンを習い始めた?」(ピアノしか話してないのに…)
      → わざと答えがない質問で幻覚をチェック

2. イベント要約の正確さ

  • 何を測る?
    会話の中から大事な出来事をちゃんと抜き出して、正しいタイムライン(イベントグラフ)と合ってるか比べる!
  • 具体例
    • 「猫を飼い始めた」「アレルギー発症」「病院に行った」みたいな出来事を、会話からちゃんと抽出できてるかチェック!

3. マルチモーダル対話生成の品質

  • 何を測る?
    画像を含む会話で、AIが文脈に合った自然な返事をできてるかを見る!
  • 具体例
    • 画像を見て「この猫かわいいね!」とか、前の会話を踏まえて「アレルギー大丈夫?」みたいな返事ができてるか。
  • 使う指標
    • BLEU-1:AIの返事が人間の返事とどれくらい似てるか(単語レベルで一致度を測るやつ)。
    • MM-Relevance:画像と返事の関連性がどれくらい高いか。

まとめ

  • QA正解率:いろんなタイプの質問で正しく答えられるか
  • イベント要約:大事な出来事を正しくまとめられるか
  • マルチモーダル生成:画像も含めて自然な返事ができるか(BLEU-1やMM-Relevanceで評価)

こんな感じで、AIの「会話記憶力」をいろんな角度からガチでチェックしてるんだよ!
他にも知りたいことあったら、ウチに聞いてね~!

kun432kun432

各メモリ実装の評価指標のカテゴリーを見てると、なんか微妙に名前が合ってない気がする。

https://www.memobase.io/blog/ai-memory-benchmark

https://memu.pro/blog/memu-introduction

たぶんこうなんだろうと思う。

  • Single-hop(シングルホップ推論)
  • Multi-hop(マルチホップ推論)
  • Temporal(時間的推論)
  • Open Domain(オープンドメイン/常識推論)
  • Adversarial(敵対的質問)

こんなIssueもある

https://github.com/snap-research/locomo/issues/6

kun432kun432

ところで各ベンダーごとにスコア出してるけど、どれ見ても、自分のところが1番高いって言っててるのはなんなの?ベンチマークの意味がないような気がする。使ってみて組み込んでみて自分で判断するしかないかな。

このスクラップは3日前にクローズされました