Valenceの源泉——符号つき予測誤差
問題
015のEpisodeMemoryに emotional_valence フィールドがある。値域は -1.0〜1.0。だが何が「良い経験」で何が「悪い経験」かの判定基準を書いていなかった。
予測誤差の大きさだけでは決まらない。大きな予測誤差は「驚き」だが、驚きには良い驚きと悪い驚きがある。
神経科学の知見:2種類の予測誤差
Frontiers in Psychology (2012) Clark & den Ouden:
Unsigned PE(符号なし予測誤差):
- |predicted - actual| の絶対値
- 「何かが予想と違った」という情報
- 知覚の更新に使われる
- → 012-013で設計したnoveltyスコア、Conflict Resolutionの入力
Signed PE(符号つき予測誤差):
- predicted - actual の符号を保持
- 「予想より良かった」(+) vs 「予想より悪かった」(-)
- ドーパミン系と対応。報酬予測誤差
- → valenceの源泉はこちら
ローバーにとっての「良い/悪い」
問題:ローバーには報酬系がない。何が「良い」のか。
選択肢A:設計者が定義する
# 良い = 予測誤差の減少が学習で達成されたとき
# 悪い = 予測誤差が減らなかったとき(学習失敗)
valence = learning_progress # Schmidhuber (2010)
Schmidhuberの「学習進捗」理論。興味深いのは予測誤差自体ではなく、予測誤差の変化率。
- 予測精度が上がっている → 面白い → positive valence
- 予測精度が変わらない → 退屈 → neutral
- 予測精度が下がっている → 混乱 → negative valence
利点:自然に「学習可能な状況」を好み、「カオスすぎる状況」を避ける 欠点:人間の感情とはずれる。「怖い」「嬉しい」とは別の軸
選択肢B:ホメオスタシスからの逸脱
# 良い = 内部状態が安定圏内にあるとき
# 悪い = 内部状態が安定圏から逸脱したとき
valence = -abs(state - homeostatic_setpoint)
Active Inferenceの本来の枠組み。生物は自由エネルギーを最小化する=予想通りの感覚状態を維持する。
ローバーに翻訳すると:
- 「適度な距離に何かがある」= comfortable → positive
- 「近すぎる」or「何もない」= uncomfortable → negative
- setpointを個体ごとに変えれば個性が出る(近い距離が好きな子、遠い距離が好きな子)
利点:シンプル。来場者が直感的に理解しやすい 欠点:「適度な距離」を設計者が決めることになる → 014の固定パラメータ問題に戻る
選択肢C:関係的valence(v2に適合)
# 良い = 人がいるときに予測誤差が減った(相手を理解できた)
# 悪い = 人がいるときに予測誤差が増えた(相手が予想外だった)
if who_present:
valence = -delta_prediction_error # 誤差が減ると良い
else:
valence = 0 # 人がいないときは中性
人との関係の中でだけvalenceが発生する。
これは「赤ちゃんローバー」のコンセプトに最も整合する:
- 人がいないときは中性。驚きはあるが良い/悪いはない
- 人がいるときに初めて「この人の動きを予測できた→安心」「予測できなかった→不安」が発生
- 同じ人と長くいると予測精度が上がる → positive valenceが蓄積 → 「この人が好き」
選択肢D:CとAのハイブリッド
if who_present:
valence = learning_progress_with(who) # 人がいるときは関係的学習進捗
else:
valence = learning_progress_general * 0.3 # 人がいないときは弱い学習進捗
人がいないときも微弱なvalenceがある(世界モデルの学習が進んだ/進まなかった)。人がいるときは強いvalenceが発生。
採用案:C(関係的valence)+ 微弱な一般valence
理由:
- 「赤ちゃんローバー」の核心は人との関係で歪むこと。valenceが人の存在に紐づいているのが本質的
- 「歪みの固着と個の自律」ノートの構造と整合:他者との摩擦 → 蓄積 → 固着 → 自律
- 人がいないときの反芻モードでは、過去のvalence付き記憶を想起する。反芻自体にはvalenceなし
valenceとRecall Biasの接続
015で書いたRecall Biasの更新ルールが決まる:
def update_bias_after_episode(episode):
if episode.who_present:
person = episode.who_present[0]
if episode.valence > 0:
# この人といると予測が上達する → 近づきたい
person_affinity[person] += episode.valence * LEARNING_RATE
else:
# この人がいると混乱する → 警戒
person_wariness[person] += abs(episode.valence) * LEARNING_RATE
person_affinityとperson_warinessが同時に存在しうる。好きだけど怖い。 これはまさに013の接近-回避葛藤。
表情への反映
OLED顔文字とvalenceの対応:
| valence | 状況 | 表情 |
|---|---|---|
| +0.5〜 | 人がいて予測が当たった | ´ω→ ´ ω (ゆったり) |
| +0.2〜 | 少し学習が進んだ | ´ω` (ふつう) |
| 0付近 | 中性(人がいない) | ´ωor ´ (反芻中) |
| -0.2〜 | 予測が外れた | ´・ω・` (注意深い) |
| -0.5〜 | 大きく混乱 | ´○` (驚き) |
「うつ病ローバー」問題との接続
negative valenceが蓄積し続けると、person_warinessが全員に対して高くなる → 誰が来ても逃げる → 新しいpositive経験が入らない → 負のループ。
これがまさに「うつ病ローバー」ノートで議論された問題。安全弁の設計が必要:
- warinessに上限を設ける? → 人工的すぎる
- 減衰させる? → 013の記憶減衰が使える。warinessも時間で薄れる
- 反芻モードでpositive記憶を優先想起? → positive recall biasをデフォルトで持たせる → これは設計者の介入
減衰が最も自然。 嫌な経験も時間が経てば薄れる。ただし強い嫌な経験は減衰が遅い(strengthが高いから)。
開いた問い
- learning_progressの計算窓 — 過去何ステップの予測精度を比較するか。短いと不安定、長いとvalenceが鈍い
- person_affinityとperson_warinessの相互作用 — 独立に蓄積?相殺?心理学的にはアンビバレンスとして独立が妥当
- valenceの時定数 — 一回の経験のvalenceがどのくらいの時間残るか。記憶のstrengthとは別の次元か
- 展示では2ヶ月の蓄積を見せるが、来場者は初対面 — 来場者に対するvalenceはゼロから始まる。ねおのへのaffinityは蓄積済み。この差が見える?
この思考で見えた構造
valenceの源泉を「関係的学習進捗」に置くことで、015のアーキテクチャの残りピースが埋まった。
- 予測誤差の大きさ → 驚き → 記憶の強さ(unsigned PE)
- 予測誤差の変化方向 → valence → 記憶の感情色(signed PE、人がいるとき限定)
- valenceの蓄積 → affinity/wariness → Recall Biasのパラメータ更新
- affinity + wariness → 接近-回避葛藤 → Conflict Resolution → 運動
全部つながった。