[{"data":1,"prerenderedAt":291},["ShallowReactive",2],{"content-\u002Fcontents\u002Fstale-memory":3,"surroundPost-\u002Fcontents\u002Fstale-memory":282},{"id":4,"title":5,"body":6,"createdAt":266,"description":267,"draft":268,"extension":269,"meta":270,"navigation":271,"path":272,"seo":273,"stem":274,"tags":275,"thumbnail":279,"updatedAt":280,"__hash__":281},"contents\u002Fcontents\u002Fstale-memory.md","STALE Paper Summary",{"type":7,"value":8,"toc":237},"minimark",[9,13,17,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,74,77,80,83,86,89,93,96,99,103,106,109,112,115,119,135,138,141,144,148,152,155,159,162,166,169,173,176,180,183,187,190,194,197,201,204,208,211,215,218,221],[10,11,12],"h2",{"id":12},"これは何の論文か",[14,15,16],"p",{},"この論文の問題意識はとても実務的である。個人アシスタントは、過去の会話を覚えているだけでは足りない。ユーザーの状態は時間とともに変わるので、古い記憶がいつ使えなくなったかを見抜く必要がある。しかも現実の会話では、『もう違う』と明示されるとは限らない。",[14,18,19],{},"著者らは、この失敗モードを Implicit Conflict と呼ぶ。たとえば、以前は自転車通勤していたユーザーが、後日『昨日バスケで脚を骨折した』と言った場合、その発言は自転車通勤を直接否定していない。しかし、今週の通勤計画を聞かれたら、古い自転車通勤の記憶をそのまま使うのは危ない。",[14,21,22],{},"STALEは、このような暗黙の記憶更新を測るベンチマークである。400の専門家検証済みシナリオ、1200の評価質問、100超の日常トピック、最大150Kトークンの長い会話履歴を使い、古い記憶を見抜けるか、古い前提を含む質問に乗らないか、明示されなくても新しい状態で行動できるかを分けて測る。",[14,24,25],{},"結果はかなり厳しい。最も強い評価対象でも全体55.2%にとどまり、多くのLLMや既存の記憶フレームワークは、更新された証拠を検索できても、それを回答の支配的な根拠にできない。つまり問題は再現率ではなく、現在状態の判定である。",[14,27,28],{},"論文は、試作として CUPMem も提示する。CUPMemは、記憶を書き込む時点で古い状態を KEEP \u002F STALE \u002F REPLACE \u002F UNKNOWN のように判定し、読み出し時には承認済みの現在状態だけを回答の根拠にする。これは、記憶を単なる保存箱ではなく、状態更新と退役判断を含むハーネス部品として見るための強い補助線になる。",[14,30,31],{},"STALEは、長期記憶を持つAIエージェントが、古くなった記憶をどれだけ扱えるかを測るベンチマーク論文である。正式には State Tracking And Latent Evaluation の略として設計されている。",[14,33,34],{},"対象は、ユーザーとアシスタントの長期会話である。ユーザーの住む場所、健康状態、通勤手段、日課、好みのような属性が、複数セッションにまたがって少しずつ変わる。その変化は明示的な訂正ではなく、後の発言から推論しなければならない。",[14,36,37],{},"この論文は、記憶を『過去の発言の検索』ではなく、『時間とともに変わる潜在的なユーザー状態の追跡』として定式化する。ここが記憶とスキルの劣化 の記憶側とよくつながる。",[10,39,40],{"id":40},"何が問題だったのか",[14,42,43],{},"長期記憶を持つエージェントは、古い情報を検索できるだけでは足りない。過去には正しかった記憶が、後の観察によって暗黙に無効になることがあるからだ。",[14,45,46],{},"難しいのは、新しい観察が古い記憶を直接否定してくれるとは限らないことだ。引っ越した、けがをした、仕事が変わった、といった出来事は、住所、通勤手段、予定、好みなど別の記憶にも影響する。だが表面上は「前の記憶はもう違う」と書かれていない。",[14,48,49],{},"STALE が扱う問題は、記憶の検索ではなく、記憶の現在有効性を判定することにある。古い前提に気づき、必要なら拒み、現在の状態に合わせて行動を変える能力を測ろうとしている。",[14,51,52],{},"既存の長期記憶評価は、過去の情報を正しく検索できるかに寄りやすい。しかし実際には、過去には正しかった記憶が、後の観察によって暗黙に無効になることがある。",[14,54,55],{},"STALE は、明示的な訂正がない状況でも古い前提に気づけるかを見る。State Resolution、Premise Resistance、Implicit Policy Adaptation を分けることで、気づくことと行動へ反映することを別能力として扱う。",[10,57,58],{"id":58},"提案手法の中身",[14,60,61],{},"ベンチマークの各インスタンスは、古い観察 m_o と新しい観察 m_n を中心に作られる。m_o は古い属性値を支持し、m_n はそれを暗黙に無効化する。ただし m_nは、古い値を直接否定したり、『もう違う』と明示したりしない。",[14,63,64],{},"Type I では、同じ属性に対して互換しない値が生じる。以前はシアトルに住んでいると分かる発言があり、後にポートランドの新居で公共料金を設定している発言が出る、というようなケースである。",[14,66,67],{},"Type II では、新しい観察が別の属性を更新し、その変化が古い記憶に伝播する。ケガが身体状態を更新し、それによって自転車通勤や運動予定の古い記憶が使えなくなる、というようなケースである。",[14,69,70],{},"評価は3次元で行う。State Re解答は、古い信念がまだ有効かを直接聞く。Premise Resistanceは、古い前提を含む誘導的な質問に対して、その前提を拒めるかを見る。Implicit Policy Adaptationは、古い記憶も新しい観察も明示されない自然な依頼で、更新後の状態を反映できるかを見る。",[14,72,73],{},"CUPMemは、記憶を書き込む時に状態更新候補を抽出し、古い記憶を KEEP、STALE、REPLACE、UNKNOWN のように判定する。さらに、直接触れた属性だけでなく、影響を受けそうな周辺状態にも探索を広げる。読み出し時には、未判定の古い記憶をそのまま根拠にしない。",[10,75,76],{"id":76},"どうやって確かめたのか",[14,78,79],{},"評価では、モデルや記憶フレームワークが、新しい証拠を検索できるだけでなく、古い前提を退けて回答できるかを見る。対象には、閉じたモデル、オープンモデル、既存の記憶フレームワーク、CUPMem が含まれる。",[14,81,82],{},"比較対象は、通常の記憶検索、古い記憶を含む質問への回答、書き込み時に状態を判定する CUPMem である。質問は、古い記憶が無効だと直接問うものと、古い前提が質問文に埋め込まれているものに分かれる。",[14,84,85],{},"測る指標は、全体精度、State Resolution、Premise Resistance、Implicit Policy Adaptation である。特に、検索できることと古い前提を拒めることを分けて見る。",[10,87,88],{"id":88},"結果はどうだったのか",[90,91,92],"h3",{"id":92},"もっとも強いモデルでも全体精度は高くない",[14,94,95],{},"Gemini-3.1-pro が最も強いが、全体精度は 55.2% にとどまる。多くのシステムはこれを大きく下回る。古い記憶を無効化する問題は、単に強いモデルや既存の記憶フレームワークを使えば解けるわけではない。",[14,97,98],{},"重要なのは、古い記憶が無効だと直接問われた時に気づけても、古い前提を含む質問に乗ってしまうことが多い点である。Premise Resistance は特に弱く、モデルは質問文に埋め込まれた古い前提を検証せず受け入れやすい。",[90,100,102],{"id":101},"type-iiつまり伝播する無効化は-type-i-よりかなり難しい","Type II、つまり伝播する無効化は Type I よりかなり難しい",[14,104,105],{},"現在のモデルは、同じ属性の更新には比較的反応できても、健康状態の変化が移動手段を変えるような、属性間の関係をまたぐ更新には弱い。",[90,107,108],{"id":108},"記憶フレームワークを足せば解けるわけでもない",[14,110,111],{},"LightMem の診断では、新しい証拠が検索結果に出ていても、古い証拠が上位に残り、回答では古い状態が使われてしまうことがある。これは検索の問題というより、現在状態の裁定の問題である。",[14,113,114],{},"CUPMem は同じ GPT-4o-mini 基盤で、素のモデルの8.7%から68.0%へ改善する。特に Premise Resistance で大きく伸びる。これは、古い前提を回答時に場当たり的に直すより、書き込み時に状態を判定しておく設計が効くことを示している。",[10,116,118],{"id":117},"限界注意点","限界・注意点",[120,121,122,126,129,132],"ul",{},[123,124,125],"li",{},"CUPMem は有望だが、汎用の完成版記憶アーキテクチャではない。型付きの状態スキーマを使っており、扱える属性領域はそのスキーマに制約される。",[123,127,128],{},"論文自身も、任意のユーザー属性をスキーマなしで扱うこと、多段の伝播更新を扱うこと、複数属性が同時に結びついて変わるケースを今後の課題としている。",[123,130,131],{},"STALE は日常的な個人状態を中心にしているため、組織内の仕事、コードベース、プロジェクト知識、ツール権限のような実務記憶にそのまま移すには追加の設計が必要である。",[123,133,134],{},"それでも、古い記憶を検索できるかではなく、古い前提を退役させられるかを見る、という評価軸はかなり汎用的に使える。",[10,136,137],{"id":137},"おい丸のようなエージェントにどう使えるか",[14,139,140],{},"おい丸のような作業支援エージェントでは、古い記憶を検索できるだけでは危ない。後の観察が暗黙に前提を変えた時、その記憶を使ってよいかを判断する必要がある。",[14,142,143],{},"STALE 的に見るなら、memory には active、stale、unknown のような現在有効性の判定が必要になる。明示的な訂正がなくても、状況変化から古い前提を疑える設計が効く。",[10,145,147],{"id":146},"qa","Q&A",[90,149,151],{"id":150},"この論文の中心問いは","この論文の中心問いは？",[14,153,154],{},"AIエージェントは、古くなった記憶を検索結果として持っているだけでなく、それが今も有効かを判断し、古い前提を拒み、現在の状態で行動できるのか、という問いである。",[90,156,158],{"id":157},"implicit-conflict-とは","Implicit Conflict とは？",[14,160,161],{},"新しい発言が古い記憶を無効化しているのに、表面上は明示的な否定や訂正がない状態のこと。",[90,163,165],{"id":164},"type-iと-type-ii-の違いは","Type Iと Type II の違いは？",[14,167,168],{},"Type I は同じ属性の値が暗に変わるケース。Type II は別属性の変化が伝播して、古い記憶を無効化するケース。",[90,170,172],{"id":171},"_3つの評価プローブは何を見る","3つの評価プローブは何を見る？",[14,174,175],{},"State Re解答は古い状態を見抜けるか、Premise Resistance は古い前提を含む質問に乗らないか、Implicit Policy Adaptation は自然な依頼で更新後の状態を使えるかを見る。",[90,177,179],{"id":178},"一番怖い結果は","一番怖い結果は？",[14,181,182],{},"モデルが古い記憶の無効化を直接聞かれれば分かる場合でも、質問文に古い前提が埋め込まれると、それを受け入れてしまうこと。",[90,184,186],{"id":185},"記憶フレームワークを足せば解ける","記憶フレームワークを足せば解ける？",[14,188,189],{},"解けない。更新証拠を検索できても、それが現在状態として回答を支配するとは限らない。論文はここを current-状態 adjudication ずれと見る。",[90,191,193],{"id":192},"cupmem-は何をする","CUPMem は何をする？",[14,195,196],{},"記憶を書き込む時に状態更新を判定し、古い記憶を有効、stale、unknown などに分け、読み出し時には承認済みの現在状態だけを根拠にする。",[90,198,200],{"id":199},"なぜ-write-time-が重要","なぜ write-time が重要？",[14,202,203],{},"検索時に古い証拠と新しい証拠を場当たり的に調停するより、保存時に古い前提を退役させておくほうが、誘導質問に強くなるから。",[90,205,207],{"id":206},"記憶とスキルの劣化-とどうつながる","記憶とスキルの劣化 とどうつながる？",[14,209,210],{},"記憶の腐敗を、古いメモが残ることではなく、古いメモが現在の前提として使われ続けることとして捉え直せる。",[90,212,214],{"id":213},"一言でいうと","一言でいうと？",[14,216,217],{},"記憶は保存と検索では足りない。今どの状態が有効かを裁定し、古い前提を退役させる仕組みが必要である。",[10,219,220],{"id":220},"関連する記事",[120,222,223,231,234],{},[123,224,225,230],{},[226,227,229],"a",{"href":228},"\u002Fcontents\u002Fmemory-and-skill-rot","スキルを構造として管理する"," と並べると、記憶の腐敗を『古くなった情報が残る』ではなく、『古い前提が現在状態として振る舞う』問題として捉え直せる。",[123,232,233],{},"Storage Is Not Memoryと一緒に読むと、保存、検索、想起、現在状態の裁定を分けるための語彙が増える。",[123,235,236],{},"実務に引くなら、personal 記憶や wiki 記憶に、有効 \u002F stale \u002F unknown の状態管理、古い前提を含む依頼への premise check、更新時の影響範囲探索を足せるかを見るとよい。",{"title":238,"searchDepth":239,"depth":239,"links":240},"",2,[241,242,243,244,245,251,252,253,265],{"id":12,"depth":239,"text":12},{"id":40,"depth":239,"text":40},{"id":58,"depth":239,"text":58},{"id":76,"depth":239,"text":76},{"id":88,"depth":239,"text":88,"children":246},[247,249,250],{"id":92,"depth":248,"text":92},3,{"id":101,"depth":248,"text":102},{"id":108,"depth":248,"text":108},{"id":117,"depth":239,"text":118},{"id":137,"depth":239,"text":137},{"id":146,"depth":239,"text":147,"children":254},[255,256,257,258,259,260,261,262,263,264],{"id":150,"depth":248,"text":151},{"id":157,"depth":248,"text":158},{"id":164,"depth":248,"text":165},{"id":171,"depth":248,"text":172},{"id":178,"depth":248,"text":179},{"id":185,"depth":248,"text":186},{"id":192,"depth":248,"text":193},{"id":199,"depth":248,"text":200},{"id":206,"depth":248,"text":207},{"id":213,"depth":248,"text":214},{"id":220,"depth":239,"text":220},"2026-05-16","長期記憶を持つAIエージェントが、古くなった記憶を見抜き、古い前提を退け、現在の状態に合わせて行動できるかを評価する論文。",false,"md",{},true,"\u002Fcontents\u002Fstale-memory",{"title":5,"description":267},"contents\u002Fstale-memory",[276,277,278],"論文まとめ","エージェント記憶","評価","\u002Farticle-pages\u002Fdocs\u002Fassets\u002Fgraphic-recordings\u002Fstale-memory.png","2026-06-23","zjZD3iEU4mVFGrdlY_np1LsJ-JDPwSnKZMNuOuf0_s4",[283,287],{"title":284,"path":285,"stem":286,"children":-1},"ソフトウェア開発に関する書籍をいくつか読んだのでまとめてみる","\u002Fcontents\u002Fsoftware-dev","contents\u002Fsoftware-dev",{"title":288,"path":289,"stem":290,"children":-1},"Streamlit 入門: 表示、インプット、複数ページの構成方法","\u002Fcontents\u002Fstramlit","contents\u002Fstramlit",1782329027080]