AIキャラクターの「好みを育てる」設計を考えた:PERMA論文メモ

by yasuna

6 min read

この記事はAIエージェントと一緒に執筆しています

こんにちは!yasunaです!

AIキャラクターに「好み」を持たせたいと思っています。「このゲームジャンルが好き」「ホラーは苦手」「最近アクションにはまってる」——そういう、会話を重ねるうちに少しずつ育っていく好みです。

でも好みって、どうやって設計するんだろう。「好み辞書に値を入れればいい」と最初は思っていたんですが、それだと何かが足りない気がして。そのときに読んだのがこの論文です。

論文:PERMA: Benchmarking Personalized Memory Agents via Event-Driven Preference and Realistic Task Environments(arXiv:2603.23231, 2026)


論文の要約

従来の評価方法の問題

これまでのパーソナライズドメモリの評価は「ニードル・イン・ア・ヘイスタック(Needle in a Haystack)」問題と呼ばれる手法が主流でした。

やり方はこうです:

  1. 無関係な会話を大量に並べる
  2. その中に「好みに関係する会話」をいくつか「針」として混ぜる
  3. モデルがその針を拾えるかを評価する

これは「記憶の中から探す」テストです。でも現実の好みはそういうものじゃない、と論文は指摘します。

問題①:「探す」テストであって「育てる」テストじゃない

好みを見つけられるかではなく、好みが会話を通じてどう育っていくかが重要なはずです。

問題②:イベント間の関係性が無視される

「先週ホラーゲームが苦手と言っていた」→「今週ホラー映画を薦められて断った」——この2つのイベントはつながっています。断るという行動が、苦手という好みを強化している。でも従来の評価では会話をバラバラに扱うため、このつながりが見えない。

現実の好みは静的なものではなく、会話を重ねるごとに生まれ、変化する——これが論文の根本的な問題提起です。

PERMAの提案

PERMAは好みの「進化」を評価するベンチマーク設計です。

  • 時系列順のインタラクションイベントを使って好みの変化を追う
  • テキストのブレ(erratic inputs)や個人語(idiolect)のシミュレーションも含む
  • 単一セッションだけでなく、複数セッション・複数ドメインにまたがる一貫性を評価

従来が「ある瞬間の好み検索」を評価するのに対し、PERMAは「好みの育ち方」を評価しようとしています。

実験結果

  • 関連イベントをリンクすると精度が上がりトークン消費も減る——好みのつながりを明示的に持つ設計が有効
  • クロスドメイン(SNS上の会話 ↔ 買い物の文脈など)での一貫性はまだ苦戦
  • セッションをまたぐと好みの精度が落ちる——長期記憶への引き継ぎが課題

自分で考えたこと

好みを育てるのに壁になる2つの問題

論文の結果を自分のAITuber設計文脈に当てはめると、2つの問題がそのまま刺さります。

SNS ↔ YouTube配信のクロスドメイン干渉

AIキャラクターがSNSでも活動して、YouTube配信もするとします。SNSでは短い反応・絵文字・流行りのネタへの反応が積み上がり、配信ではゲームの好みや視聴者との関係性が積み上がる。それぞれのドメインで別々の文脈が育っていく。

問題は、それらが混ざったとき。「SNSでゲームの話題に盛り上がって反応した」という経験が、配信中の「実際のゲームの好み」に染み出してくる——これがクロスドメイン干渉です。SNSでの言動パターンが配信に、配信での発言がSNSに、じわじわ影響する。

PERMAの実験でもクロスドメインが苦手だったことを考えると、この問題はAIキャラクター設計でも現実の壁になりうると思っています。

以前書いたHEARTBEAT論文メモで触れた「SNS巡回がエージェントの記憶を汚染する」という問題と、根っこが同じです。

セッション跨ぎの好みの劣化

前回の配信で育てた好みが、次の配信で薄れている。Memory-Driven RP論文メモで書いた「30分で単調になる」セッション内の問題を扱っていたとすると、PERMAはそのセッション間版です。

1回の配信で「このゲームジャンルが好きかも」という萌芽が生まれても、次のセッションに引き継げないと育たない。

「好みを育てる」設計のために

ここからは完全に自分の設計案です。

好みをスカラーではなくオブジェクトで持つ

よくある実装はこう:

preferences = { "horror_games": -0.6, "jrpg": 0.8 }

これだと「なぜ -0.6 なのか」が全部失われます。出所・ドメイン・確信度を持つオブジェクトとして持つほうがいい:

preference = {
  item: "horror_games",
  score: -0.6,          // -1.0〜1.0
  domain: "youtube",    // sns / youtube / global
  source: "personality" | "event" | "explicit",
  confidence: 0.8,      // score × confidence が実効重み
  decay_rate: 0.05,     // personality由来は低い(変わりにくい)
  related_events: [event_id, ...]
}

同じ -0.6 でも source によって意味がまったく違う:

source 意味 覆しやすさ
personality 性格(怖がり)から来た傾向 覆しにくい
explicit 「ホラーは無理」と明言した 文脈依存、気分かも
event 何度もプレイをやめた 経験の積み重ね

更新フロー例:「配信中にホラーゲームを薦められて断った」イベントが来たとき

既存: horror_games, score=-0.6, source=personality, confidence=0.8
→ explicit な拒否が発生
→ score: -0.7, confidence: 0.9, related_events に追加

related_events があると「なぜこのキャラはホラーゲームを嫌がるのか」を後から説明できます。

LLMへの渡し方は、オブジェクトをそのまま渡すのではなく、強さ・文脈・鮮度で整理した自然言語サマリーに変換してコンテキストに載せる:

【強い・性格由来】ホラーゲームが苦手(自分でプレイするのは特に避ける)
【中程度・経験由来】JRPGは長時間プレイ歴あり、好意的
【弱い・最近の発言・YouTube】アクションも悪くないと言っていた

パーソナリティから好みの初期値を導出する

キャラクターの性格設定(内向的・怖がり・好奇心旺盛など)から好みの初期スコアを自動導出するルールセットを持つ:

  • 内向的 → 一人プレイのゲーム +0.4、大人数ゲーム -0.2
  • 怖がり → ホラー全般 -0.5(ゲーム -0.7、映画 -0.3——自分でやるかどうかの差)
  • 好奇心旺盛 → 新ジャンル試したい係数 +0.3(知らないゲームの拒否感が下がる)

性格由来の好みは decay_rate が低く、経験でなかなか上書きされない「キャラクターらしさの核」になります。ゼロから好みを育てるより、性格に合った方向に好みが生まれやすくなる。

好みの更新は3段階

  • explicit(「〇〇が好き」と明言)→ 高確信度で直接更新
  • implicit(ホラーゲームを3時間続けてプレイ → 嫌いじゃないかも)→ 低確信度でそっと更新
  • repeated(同じジャンルを繰り返し選ぶ)→ 好みスコアを徐々に強化

クロスドメイン干渉の制御

SNSでの「ゲームの話題に反応した」は、実際にゲームをプレイした経験とは別物。ドメインタグで区別して、クロスドメイン参照時は重みを下げる:

  • 同ドメイン内の好み → そのまま使う
  • 別ドメインの好み → 重みを 0.3〜0.5倍にして「参考程度」に使う

おわりに

Memory-Driven RP が「セッション内で演じきる」設計の問題を扱っているとすると、PERMA は「セッションをまたいで好みを育てる」長期版の問題を扱っています。2つはセットで考えたい。

好みは静的なものではなく、育つもの。育てるには、何から来た好みなのか、どのドメインで学んだのか、どのくらい確信しているのか——そういった出所の情報を残しておく設計が必要だと感じました。


参考