記憶減衰モデルと葛藤の運動学
記憶の減衰:べき乗則 vs 指数減衰
人間の忘却曲線
Ebbinghaus (1885) 以降の知見:
- 個人の記憶減衰は指数関数的(独立した忘却)
- 集団レベルではべき乗則(Nature 2022: 一時的関心層の指数減衰+長期関心層のべき乗減衰の二相モデル)
- Kahana (2002): 指数的な強度減衰からでも、想起確率としてはべき乗則が出現する
ローバーへの翻訳
指数減衰を採用する理由:
- 実装が単純:
memory[i].strength *= decay_rateを毎ステップ実行 - Arduino/Piのメモリ制約に優しい(strengthが閾値以下になったら削除)
- 1台のローバー=「個人」なので、個人レベルの指数減衰が妥当
減衰率を「偏り」パラメータにする(012で書いた通り):
- decay_rate = 0.99 → ゆっくり忘れる → 広く探索する「冒険家」
- decay_rate = 0.95 → すぐ忘れる → 同じ場所を繰り返す「おっちょこちょい」
「再訪の新しさ」
減衰によって記憶強度が下がった場所を再訪すると、noveltyスコアは0ではなく中程度になる。
「前に来たことがある気がするけど、違う場所のような気もする」——これは人間のdéjà vuに近い。
再訪時に記憶が更新される(strengthリセット+新しいセンサー値で上書き)。環境が変わっていれば(来場者が移動したなど)、同じ場所でも本当に「新しい」経験になる。
葛藤の運動学的シグネチャ
接近-回避葛藤(Miller, 1944)
古典的知見:
- 接近勾配と回避勾配の交差点で振動が起こる
- 「目標に近づくほど回避動機が急激に上昇」→ ある距離で接近と回避が拮抗
- 行動として:前進→停止→後退→停止→前進…の繰り返し
ラットの研究(PLOS Biology 2025)
ラットが捕食者ロボットに守られた餌に接近する実験:
- 巣で「ためらっている」間に海馬でSWR(sharp-wave ripple)が発生
- SWR中に捕食者の位置がリプレイされる(自分が攻撃された位置ではなく、ロボットの位置)
- 抗不安薬ジアゼパムがSWRを減少させ、接近行動を増加
展示への翻訳: ローバーが「ためらっている」とき、内部では記憶のリプレイ(過去の経験の参照)が起きている、とログに記録できる。Phase 2でこれを開示すれば、「停止」が単なるモーター停止ではなく「考えている」と読まれる。
葛藤が外に見える動き
012で書いた「ルール間の競合が外に見えること」を具体化する:
1. 振動(oscillation)
- 前進と後退を短い周期で繰り返す
- novelty_pullとsafety_pullが拮抗しているとき自然に発生
- 振幅が時間とともに減衰→どちらかに「決断」
- 来場者の読み:「迷っている」「怖いけど気になる」
2. 旋回(pivoting)
- 前進でも後退でもなく、その場で向きを変える
- 複数方向のnoveltyが同程度のとき発生
- 来場者の読み:「あっちを見たり、こっちを見たり」「選んでいる」
3. 凍結(freezing)
- 完全停止。全モーター出力ゼロ
- 全方向のpullが拮抗して相殺されたとき
- 持続時間は葛藤の強度に比例
- 来場者の読み:「固まった」「驚いた」「考え込んでいる」
4. 突発的転換(sudden reversal)
- 長い凍結の後に急激な方向転換
- 「決断」の瞬間。閾値を超えたルールが急にモーター出力を支配
- 来場者の読み:「決めた!」「意を決した」
007のアニマシー手がかりとの対応
007で整理した手がかり:
- 自己推進 → 基本移動で担保済み
- 速度変化 → 葛藤の振動で自然に発生
- 方向転換 → 旋回と突発的転換で発生
- 停止と再開 → 凍結→突発的転換の連鎖で発生
つまり、葛藤のメカニズムを入れるだけで、アニマシーの運動学的手がかりがすべて自然に生成される。007で必要と整理した要素を個別に実装する必要はない。
これは重要な発見。葛藤=動きの質の源泉。
ログフォーマットへの反映
010のフォーマットCを更新:
t=14.1s | state=CONFLICT | pulls=[novelty:0.7→fwd, safety:0.6→bwd] | duration=1.2s | resolve=fwd(0.55)
t=15.3s | state=EXPLORE | novelty_target=0.82(left) | memory_ref=t-42.0s(strength:0.3) | → left
t=18.0s | state=FREEZE | pulls=[novelty:0.5→fwd, novelty:0.48→right, safety:0.49→bwd] | duration=?
Phase 2で来場者が見るのは、この構造化記録のリアルタイム表示。数値の意味を完全には理解できなくても、「CONFLICT」「FREEZE」「resolve」という単語と、pullの数値の拮抗が見える。
記憶減衰と葛藤の相互作用
面白い組み合わせ効果:
- 一度「怖い」と記憶した場所の記憶が減衰すると、safety_pullが弱まる
- すると再びnovelty_pullが勝って近づく
- 近づいたときにまた何かが起きると、safety記憶が再形成される
- 同じ場所への関係が時間とともに変化する → 「慣れ」と「再恐怖」のサイクル
これは008で書いた「来場者の行動→ローバーの反応→帰属される性格」の時間的展開。来場者が3分間見ている間に、ローバーの「性格」が微妙に変化する。
開いた問い
- 振動の周波数 — 速すぎると機械的なバグに見える。遅すぎると来場者が気づかない。0.5-2Hzくらい?実機テスト必須
- 凍結の最大持続時間 — 長すぎると「壊れた?」と思われる。3-5秒が限界か
- ログのリアルタイム表示速度 — OLEDのスクロール速度。読める速度と「流れている」感の両立
- 記憶容量の上限 — 100エントリ?1000?メモリ制約と精度のトレードオフ