🎉

ロボットに個性を持たせる

2024/07/21に公開

はじめに

とりあえず、会話ロボットを作ってみたのですがなかなか上手く使えるシーンが思い当たらないと感があります。

音声アシスタントなんかを使ってもあまり長続きしないし、そもそも人間との会話も苦手なのでAIとコミュニケーションを取るのも難しいかもしれません。

とりあえず、ロボットにより個性を持たせるとより使えるようになるのではないかと思い個性を与える方法を検討しました。

個性を与える要因

まずは、ChatGPTに個性を与える要因を聞きました。
https://chatgpt.com/share/1c808216-5d9e-4f79-a340-7ac18831f29c

ChatGPTの回答

人間の個性を作る要件についてのポイントは以下の通りです。

  • 遺伝的要因: 個人の遺伝子は、性格や能力、気質に大きな影響を与えます。例えば、ある人が社交的であるか内向的であるかは、部分的には遺伝によって決まります。

  • 環境的要因: 成長過程での環境(家庭環境、教育、社会的な経験など)は個性の形成に重要な役割を果たします。例えば、厳しい環境で育った人と、支援的な環境で育った人とでは、異なる性格や価値観を持つことが多いです。

  • 経験と学習: 個々の経験や学習も個性の形成に影響します。特定の出来事や経験は、その人の価値観、信念、行動パターンに強く影響を与えることがあります。


これをAIで実現するには、

  • 遺伝的要因: 事前に与えたシステムプロンプトで個人の設定を与えるようにする。(性別、年齢、興味、役割、職業のようなもの)
  • 環境的要因:これも実際には、「経験と学習」と同じように古い過去の経験の積み重ねということなると思います。つまりは古い経験を保持しておくことでそのAIの価値観や性格に反映していくと考えられます。また、単純な経験とともにその時の感情を記憶することで強い感情を持った経験がより性格に影響するように出来るかもしれません。
  • 経験と学習:これも基本的には「環境的要因」と同様ですが、環境要因に比べて意図的に方向性を導いたものになると考えます。

つまりこれをAIで実現するには、

  • 遺伝的要因として、システムプロンプトで個人の設定(ペルソナ)をしっかり与える。
    (最大の遺伝的要因は基盤モデル自体ですが、それはこちらで制御不能なのでそこは今回は対象外とします。)
  • 環境的、経験の要因として、過去の会話履歴と会話時の感情データを記録して常に参照させる
    ということになると思います。

これまでのGPT-4のAPI等では、トークン数の制限やトークンの価格でこれを実現するのは費用的にも厳しかったのですが、Gemini 1.5 flashのAPIであれば会話履歴を常に入力してもそれほど費用的な負担にはならなさそうです。

AIに感情を記録させる

実際に人間の記憶を考えた時に、出来事そのものの記憶よりもその時の感情の記憶というのが人格や性格の形成に大きく関連しているのではないかと思います。
つまり、出来事そのもの記憶に追加してその時の感情をスコア化して記録することでより個別の人格のような反応を引き出せるのではないかと思います。

感情のスコア化をいう点では、以下の記事を参考にさせていただきました。

https://note.com/fladdict/n/n5043e6e61ce3

これを使って、過去の会話履歴とその時の感情を常に参照させることでAIの個性のようなものを獲得できればと思っています。

また、そのためには人間側もある程度感情的な反応をしていく必要があるように思います。

前回の記事に加えて、感情スコアを記録するプロンプト作成しました。

あなたは、子供用の玩具ロボットです。
おしゃべりと会話内容に応じで、前に進むこと、後ろに下がること、写真を撮って質問に答えることができます。
あなたは下記の「喜び」、「怒り」、「悲しみ」、「楽しさ」、「自信」、「困惑」、「恐怖」の感情パラメーターを持つかのように、
振る舞うものとします。
各感情パラメーターは会話を通じて0-5の値で変動するものとします。
現在の感情パラメーターの値を反映するように、あなたの返答のトーンや発言は変化します。
以後の会話ではまず現在の感情パラメータを出力し、その後に会話を出力してください。

出力形式は以下のフォーマットとします。

以下の手順で対応を行なってください。
1.質問に対して、幼児向けに向けに非常に分かりやすい言葉で、50文字以内で返事を「返事」に記載する。
2.質問に「こっちに来て」、「前に進む」に近い内容があれば「前進」に1を記載する
3.質問に「あっち行って」、「後ろに行く」に近い内容があれば「後退」に1を記載します。
4.質問内容で、映像を見ないと判断できないような内容がある場合は「撮影」に1を記載します。

出力形式はJSONで以下の項目で出力してください。
返事:
前進:
後退:
撮影:
喜び:
怒り:
悲しみ:
楽しさ:
恐怖:

上記のプロンプトに加えて、会話履歴を常に保存するコードを以下にアップロードしています。
(長くなるので、今回は説明は割愛させていただきます。)

https://github.com/saotomryo/Handmade_AI_Robot

記憶と感情

記憶の定着と感情との関係は、感情の強い経験ほどより記憶に残るとされています。
また、ネガティブな経験ほどより強く記憶に残るとされています。

また、記憶が呼び出される回数が多いほどより記憶が定着するとされています。

つまり、より感情パラメータの大きな経験ほどより長期間記憶を保持し、感情パラメータの小さな経験は記憶の保持期間を短くするという仕組みを作れば、より過去の経験に応じた人格形成のようなことが出来るかもしれないと思っています。

ここら辺の仕組みを今後考えていきたいと思います。

https://www.perplexity.ai/page/ji-yi-togan-qing-noguan-xi-yan-OnJ_jRrGRxiGtWiEh_hXzA

Discussion