Epistemic Foragingの実装と「偏り」の粒度
前回からの問い
011で開いた問い:
- epistemic foragingの動きをセンサーベースでどう表現するか
- ローバーの「偏り」をどこまで設計するか
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特有の動きのパターン
記憶+偏り+競合を組み合わせると、以下の動きが自然に生まれるはず:
- 螺旋的探索 — 中心から外へ、既知を内側に残しながら外縁を広げる
- 境界滞在 — 既知と未知の境目で最も長く停止する(noveltyが中程度の場所)
- 回避後の回帰 — 一度怖がって逃げた方向に、しばらくしてから戻る(記憶の減衰)
- 選択的無視 — すべての新しさに反応するのではなく、特定の種類の新しさにだけ反応する(偏り)
4番目が「個性」の核。あるローバーは距離の変化に敏感で、別のローバーは光量の変化に敏感。同じ環境でも違う軌跡を描く。
ただし展示には1台しかいない。「この子はこの種類の新しさに敏感」というのは、来場者が同じローバーを長く見ているうちに気づくもの。
記憶の減衰 — 忘却のデザイン
記憶が永続すると、やがて全てが「既知」になり、動けなくなる(エントロピー最大状態)。
解決:記憶を減衰させる。古い記憶は薄れ、かつて既知だった場所が再び「少し新しい」になる。
これは人間の記憶にも対応する。忘却は欠陥ではなく、探索を可能にするメカニズム。
減衰率がもうひとつの「偏り」パラメータになる:
- 減衰が速い → すぐ忘れる → 同じ場所を繰り返し探索する → 「おっちょこちょい」
- 減衰が遅い → 長く覚える → より遠くへ探索する → 「冒険家」
開いた問い
- 記憶の物理的実装 — Arduino/Piのメモリ制約でどこまで保持できるか。位置推定(オドメトリ)の精度問題
- If-Thenルールの具体的な閾値 — 実機テストで調整するしかない。シミュレータを先に作るべきか
- 来場者の「学習」を観察する方法 — 来場者がローバーの性格をどう把握したかは外から見えない。冊子のアンケート?Phase転換時の反応?
- 複数台の可能性 — 1台の制約を前提に書いたが、もし2台あれば「同じルール、違う偏り」の対比が可能。来場者は2台の個性の違いを見る=「個性は環境ではなく偏りから生まれる」の直接的体験
この思考で見えた構造
epistemic foragingの実装を考えることで、「偏り」の問題が具体化した。
偏りは:
- グローバルパラメータではなく、状況依存のIf-Thenルール
- 行動の結果ではなく、ルール間の競合過程に現れる
- 個体差はどの入力次元に敏感かで決まる
これは「歪みは病理か人格か」の技術的翻訳。認知バイアス=If-Thenルールの偏り。パーソナリティ=偏りのパターン。ローバーでそれを物理的に実装する。
001の「文脈が変数」、006の「枠組みの内部を掘る」、011の「CAPS理論との接続」——これらが012で具体的なコードの方向として収束した。