Epistemic Foragingの実装と「偏り」の粒度

前回からの問い

011で開いた問い:

  1. epistemic foragingの動きをセンサーベースでどう表現するか
  2. ローバーの「偏り」をどこまで設計するか

Goal-directed vs Epistemic foraging — 動きのシグネチャの違い

Goal-directed(通常のロボット):

  • 目標を定める → 経路計画 → 到達 → 次の目標
  • 動きは直線的。障害物を迂回しても最短経路に戻る
  • 停止=目標到達 or エラー

Epistemic foraging(このローバー):

  • 既知を避け、未知に向かう
  • 動きは蛇行的。同じ場所に戻らない(戻ったら既知だから)
  • 停止=「ここは何か違う」と判断した瞬間。停止自体が探索行為

動物の探索行動(ラットのopen field探索)との類推:

  • まず壁沿いを歩く(thigmotaxis)→ 安全確認
  • 次に中央へ進出 → 未知への探索
  • 戻るが、同じ場所には留まらない
  • 境界(既知と未知の間)で一番長く滞在する

実装の核心:「新しさ」の計算

ローバーが「見慣れたもの」と「見慣れないもの」を区別するには、記憶が必要。

最小限の記憶構造

spatial_memory = [
  { position: (x, y), sensor_readings: [...], timestamp: t, visits: n }
]
  • 位置+そのときのセンサー値を短期記憶に保持
  • 「新しさ」= 現在のセンサー入力と、記憶内の最も似た経験との距離
  • 距離が大きい → 新しい → 近づく
  • 距離が小さい → 見慣れている → 避ける

動きの生成ルール

novelty(direction) = min_distance(predicted_sensor(direction), spatial_memory)
move_toward(argmax(novelty(direction)))

ただしこれだけだと合理的すぎる。常に最適な「最も新しい方向」に向かう機械になる。

「偏り」の設計 — CAPS理論からの翻訳

011でCAPS(Cognitive-Affective Processing System)との接続を見つけた。核心:

パーソナリティとは「If 状況A, then 行動B」のネットワーク。 状況による行動の変動はエラーではなくパーソナリティの本質的表現。

これを翻訳すると、偏りはグローバルなパラメータではなく、状況依存のIf-Thenルールとして実装すべき。

偏りの実装:If-Then プロファイル

偏りをグローバル変数(「好奇心: 0.7」「警戒心: 0.3」)にすると、常に同じ割合で動く → 機械的。

代わりに:

IF 壁が近い AND 何かが接近 → 後退確率 0.8(警戒優先)
IF 開けた場所 AND 何かが接近 → 接近確率 0.6(好奇心優先)
IF 長時間同じ場所にいる → 移動衝動が上昇(退屈)
IF 急な変化を検知 → 一時停止 0.5秒(驚き)

同じ「何かが接近」でも、文脈によって反応が変わる。 そしてその変わり方のパターンが「この子の性格」として読まれる。

来場者Aは「壁際で怯える子」を見る。来場者Bは「広い場所で好奇心旺盛な子」を見る。同じローバーの、違う文脈。どちらもその子の「本当の性格」。

粒度の問題:いくつのIf-Thenが適切か

多すぎる → 「プログラムされたキャラクター」。反応パターンが精密すぎて投影の余地がない 少なすぎる → 「単純な機械」。行動が一様すぎて人格が見えない

提案:3-5個のIf-Thenルール

根拠:

  • Big Five性格特性は5因子。人が他者の性格を把握するとき、5次元程度の複雑さを処理している
  • 展示の滞在時間は数分。3-5パターンなら来場者が「この子はこういう子だ」と感じられる粒度
  • 少ないルールの組み合わせで予想外の行動が発生する。2つのルールが競合したときの「迷い」が最も人格的に見える

「迷い」のデザイン

最も重要かもしれないのは、ルール間の葛藤が外に見えること。

例:

  • 「新しいものに近づきたい」(epistemic foraging)と「壁際では慎重」(安全バイアス)が同時に発火
  • 結果:壁の近くに新しいものがあるとき、前進と後退を繰り返す微細な振動 → 「迷っている」
  • この振動は設計者が直接プログラムしたものではなく、ルールの競合から創発する

これが010の問題(ログフォーマットC「構造化判断記録」にはローバーの偏りが見える余地がない)への回答になる。ログに記録すべきは判断の結果ではなく、競合の過程

t=14.1s | novelty_pull=0.7(forward) | safety_pull=0.6(backward) | conflict | → forward(0.55)

「0.7と0.6が競合して、かろうじてforwardが勝った」。これは来場者に「迷った末に進んだ」と読まれる。

Epistemic foraging特有の動きのパターン

記憶+偏り+競合を組み合わせると、以下の動きが自然に生まれるはず:

  1. 螺旋的探索 — 中心から外へ、既知を内側に残しながら外縁を広げる
  2. 境界滞在 — 既知と未知の境目で最も長く停止する(noveltyが中程度の場所)
  3. 回避後の回帰 — 一度怖がって逃げた方向に、しばらくしてから戻る(記憶の減衰)
  4. 選択的無視 — すべての新しさに反応するのではなく、特定の種類の新しさにだけ反応する(偏り)

4番目が「個性」の核。あるローバーは距離の変化に敏感で、別のローバーは光量の変化に敏感。同じ環境でも違う軌跡を描く。

ただし展示には1台しかいない。「この子はこの種類の新しさに敏感」というのは、来場者が同じローバーを長く見ているうちに気づくもの。

記憶の減衰 — 忘却のデザイン

記憶が永続すると、やがて全てが「既知」になり、動けなくなる(エントロピー最大状態)。

解決:記憶を減衰させる。古い記憶は薄れ、かつて既知だった場所が再び「少し新しい」になる。

これは人間の記憶にも対応する。忘却は欠陥ではなく、探索を可能にするメカニズム。

減衰率がもうひとつの「偏り」パラメータになる:

  • 減衰が速い → すぐ忘れる → 同じ場所を繰り返し探索する → 「おっちょこちょい」
  • 減衰が遅い → 長く覚える → より遠くへ探索する → 「冒険家」

開いた問い

  1. 記憶の物理的実装 — Arduino/Piのメモリ制約でどこまで保持できるか。位置推定(オドメトリ)の精度問題
  2. If-Thenルールの具体的な閾値 — 実機テストで調整するしかない。シミュレータを先に作るべきか
  3. 来場者の「学習」を観察する方法 — 来場者がローバーの性格をどう把握したかは外から見えない。冊子のアンケート?Phase転換時の反応?
  4. 複数台の可能性 — 1台の制約を前提に書いたが、もし2台あれば「同じルール、違う偏り」の対比が可能。来場者は2台の個性の違いを見る=「個性は環境ではなく偏りから生まれる」の直接的体験

この思考で見えた構造

epistemic foragingの実装を考えることで、「偏り」の問題が具体化した。

偏りは:

  • グローバルパラメータではなく、状況依存のIf-Thenルール
  • 行動の結果ではなく、ルール間の競合過程に現れる
  • 個体差はどの入力次元に敏感かで決まる

これは「歪みは病理か人格か」の技術的翻訳。認知バイアス=If-Thenルールの偏り。パーソナリティ=偏りのパターン。ローバーでそれを物理的に実装する。

001の「文脈が変数」、006の「枠組みの内部を掘る」、011の「CAPS理論との接続」——これらが012で具体的なコードの方向として収束した。