AIキャラクター開発 第二回:行動システムの実装と課題

AIキャラクター

前回はAIキャラクターに関して簡単に記載した記事を書きました。今回はそれからもう少しだけ見ていきたいと考えています。

AIキャラクターの簡易仕様

私はAIキャラクターについて、行動・ステート・記憶の相互参照により実現すると考えています。簡単な仕様は下記の図に記載しました。

  1. 記憶
    キャラクターがどのような行動を行ったか、結果としてどうなったか、その時にどう思ったかを記憶します。行動を行う際に参照され、手本にします。
  2. ステート
    キャラクターが会話や行動した結果どう感じたかを記録・制御します。行動や会話により感情は変動し、更新されます。なお、身体的状態についてもステートとして保存します。
  3. 行動
    記憶に参照するための経験値を集めます。ユーザーや他キャラクターとの会話以外に、実際に行動を行う箇所です。

記憶については現在の一般的なLLMにおいてRAGが使われるため、重要な点については比較的想像がつくかと思います。

ステートについても同様です。SIMなどのゲームでのキャラクターやノベルゲームなどでも好感度などの項目があり、それにより行動が変わります。これを想像すれば、AIキャラクターにおいてステートというシステムが必要であることは明確かと思います。

では行動はどうでしょうか。記憶への紐付けで良いのではと思うかもしれません。しかしながら、実は行動こそがこのシステムにおける肝となります。


行動の重要性

AIキャラクターの発想と基礎として利用している概念

私が元にしている概念はジョン・ロックの「経験論」です。これに基づくと、

人間は生まれたときは白紙(タブラ・ラサ)であり、経験によって知識が書き込まれる

と考えられています。

この知識というのは単に「〇〇を知っている」という辞書的な概念ではなく、「〇〇は優しくしてくれる」といった、個人が生きている環境において有用な情報を指しています(解釈が異なる可能性はあります)。


経験論の反映

これを元に考えると、AIにおいても人間においても、行動を行いその結果を観測しない限り、事象に対する印象は決まりません。逆に、その観測に対して一定の評価が可能な場合は、事象に対する印象が形成され、今後の考え方が決まります。

そしてこの「行動→結果→評価」という一連の経験を蓄積することで、「個性」を作成できると考えています。ただし重要なのは、単なるログの蓄積ではなく、そこから「どのような行動が有効だったか」「どうすればうまくいくか」といったパターンを抽出し、再利用可能な形にすることです。

このように経験を抽象化していくことで、単なる記録ではなく、意思決定に影響を与える知識として機能します。それらを感情ステートと関連付けることで、「感情」も作れるのではないかという考えです。

このため、行動というシステムは私のAIキャラクター開発において非常に重要な意味を持ちます。いや、もはやこれが核と言っても過言ではありません。


行動がないとどうなるのか

現在の一般的なRP(ロールプレイ)キャラクターはどうでしょうか。ものによっては記憶を有しているものもありますが、これらには主体的な経験がほとんどありません。このため、キャラクターとしての一貫性は主に記憶に依存しています。

それで良いのでは?と思うかもしれませんが、一番大きい問題は、その記憶の多くがユーザーとの会話を通じて形成される点にあります。つまり、キャラクター自身が行動して得た経験ではなく、外部から与えられた情報に依存している状態です。

その結果、内的な一貫性や成長が弱く、薄く人間味のない会話になりやすく、ユーザーは飽きてしまう可能性があります。


行動システムの開発と課題

現状

現状、これをさまざまな視点から検証し、システム開発を進めていますが、まだ最適解はありません。


実装が難航している理由

私が欲しいシステムとしては、個人単位の日常生活を大まかな粒度で回せて、それを経験またはログとして蓄積できるシステムです。しかしながら、既存のプログラムではなかなか見つかりません。理由としては以下です。

  • 条件的にはSIMやシミュレーションに該当するが、既存プログラムにおいて個人単位に焦点を当てているものが少ない
  • LLMでの行動生成を使用した場合、「失敗」が発生しにくく、経験が薄くなる

よって、自身でシミュレーションシステムを作るしかないという状況になっています。


最後に

今後1ヶ月くらいはこの行動システムに重きを置くことになりそうです。本当は既存ゲームやGitHubにあるシミュレーションの改造で済むかと思っていましたが、少し見通しが甘かったと反省しています。


コメント

タイトルとURLをコピーしました