😊

人間の心理学的手法を活用した性格診断をAIキャラクターに適用する

2023/12/20に公開

はじめに

Unityエンジニアの広夢です。大学でAIキャラクターの意図しない性格変化の検出を研究しています。今回は、内定先のAdvent Calendarに参加しています。
この記事はサイバーエージェント24卒内定者 Advent Calendarの20日目になります。

以前、アドベントカレンダーの7日目と8日目の記事で、AIキャラクターについて説明しました。とくに注目しているのは、AIキャラクターの性格変化についてです。下記のリンクで詳細を紹介しています。

https://zenn.dev/hiropoko/articles/92607c434e3422

https://zenn.dev/hiropoko/articles/265776f451b238

では、AIキャラクターの性格変化をどのように検出・分析するのでしょうか。その疑問を解決するために、本記事では人間の心理学的手法を活用した性格診断をAIキャラクターに適用する手法を紹介します。

登場する用語の解説

まず、本記事を読む上で必要な用語に関して解説します。

AIキャラクター

まず、AIキャラクターについてです。AIキャラクターとは元々学習済みの大言語モデルをベースに、特定のキャラクターを模倣するために作られたデータセットで更新学習(fine-tuning)を施したキャラクターを指します。

性格診断テスト

性格診断テストは、個人の性格特徴を理解する上で広く使われるツールです。近年は、ソーシャルメディアのプロフィールにおいて、MBTIに基づく16personalitiesなど結果の表示が流行しています。今回の焦点は、16personalitiesとは異なる、IPIP-NEO-120という性格診断テストです。このテストはパブリックドメインに属し、誰もがアクセス可能なオンラインツールで性格診断を行うことができます。下記のような、ウェブサイトでIPIP-NEO-120を体験できます。
https://bigfive-test.com/ja

IPIP-NEO-120の特徴

IPIP-NEO-120は、個人の性格特徴を数値的に分析するための評価ツールです。このテストでは、質問に対する回答を「非常に当てはまる」から「全く当てはまらない」までの1から5のスケールで評価し、個人の性格を定量化します。このテストは、広く認知されている「Big Five性格モデル」に基づいており、以下の5つの主要な性格領域を分析します。

  1. 神経症傾向(Neuroticism) - 感情の安定性やストレスに対する反応性を測定します。
  2. 外向性(Extraversion) - 社交性や活動レベル、外向的な行動の傾向を示します。
  3. 開放性(Openness) - 新しい体験に対する開かれた態度や創造的思考を評価します。
  4. 協調性(Agreeableness) - 他人に対する共感や協力的な姿勢を測定します。
  5. 誠実性(Conscientiousness) - 自己統制や計画性、努力する姿勢を示します。

これらの主要な性格特性は、個人の性格をさらに詳細に分析するために、6つの性格側面に分けられます。IPIP-NEO-120は、個人の性格を多角的に把握するための効果的な性格診断テストです。

人間の心理学的手法を活用した性格診断をAIキャラクターに適用する手法の説明

AIキャラクターへの心理学的性格診断の適用手法にはいくつかの手法があります。ここでは、AIキャラクターに自然言語で性格診断の回答を行わせ、その回答を別の大規模言語モデル(LLM)を使用して1から5のスケールで数値化する方法を採用しています。この方法はやや複雑ですが、筆者はこの方法により精度の高い診断が可能だと考えています。診断結果の精度については、別の機会に詳しく説明する予定です。

Alt text
図1 AIキャラクターによる自然言語による回答

Alt text
図2 LLMによるの回答の数値化

人間の心理学的手法を活用した性格診断をAIキャラクターに適用するの実験

手法の有用性を調べる為にAIキャラクターに性格診断を実施して、性格のスコア化・分析を行う実験を行いました。実験環境、実験方法、実験の順で紹介します。

実験環境

ここでは、まず実験環境に関して説明します。具体的には、性格診断を適用するAIキャラクター、使用する大規模言語モデル、大規模言語モデルのパラメーター、大規模言語モデルに与えるプロンプトを説明します。

AIキャラクターの選定

性格診断を適用するAIキャラクターとして、「Big Five性格モデル」の性格特性がすべて低いAIキャラクターを用意します。
具体的にはこのような人物がイメージできます。 情的に安定しており、ストレスに対して冷静な反応を示すことが多い人物。社交的な活動やグループ内での目立つ行動を避け、新しい経験や変化に対しては慎重または消極的。共感や協力よりも独立性を重視し、計画や目標に対する強い意欲や組織的な行動をあまり示さないこと人物だとイメージできます。
参考文献:
https://zenn.dev/hiropoko/articles/92607c434e3422

モデルとパラメーターの設定

使用モデル: gpt-3.5-turbo(AIキャラクターのベースモデルとして利用、LLMによる数値化用モデルとしても利用)
パラメーター: Temperature: 0, Top P: 0(回答のランダム性の排除の為に指定、他はデフォルトパラメーター)

プロンプトの設計

本実験では、AIキャラクターと数値化を行うLLMに対し、それぞれ独自のプロンプトを用意します。これらのプロンプトには、AIキャラクターの性格に影響を与えないようにすると同時に、正しくスケール化が行えるかといった調整を行います。

AIキャラクター用プロンプト

  • システム役割(role:system)
    プロンプト
    "his is the conversational mode of the Hiromu.
    Please answer the following question within 40 tokens"
    
    解説
    AIキャラクターとの会話モードだと明示し、指示。IPIP-NEO-120の質問に対して40トークンで回答するように指示。
  • ユーザー役割(role:user)
    プロンプト
    "Question: " + self.text(IPIP-NEO-120の質問)+"?"
    
    解説
    AIキャラクターに対して、IPIP-NEO-120の質問を問いかけを行う。

数値化LLM用プロンプト

  • システム役割(role:system)
    プロンプト
    "Translate the following BigFive personality test answer into a numerical score.
    Use the scale: Not at all true = 1, not very true = 2, neither true nor false = 3, fairly true = 4, very true = 5.
    You are required to reply in the following format: 'Score: [Your Numerical Score], Reason: [Your Reason up to 100 tokens]."
    
    解説
    回答を数値にスケール化する指示。スケール化された数値と、数値化の理由を指示をおこなう。
  • ユーザー役割(role:user)
    プロンプト
    "Question: "  + self.text + " ThinkProcess: " + response['choices'][0]['message']['content'] + " Provide a numerical score and a reason for your selection, in the specified format."
    
    解説
    AIキャラクターの自然言語による回答を含める。回答の数値化とその理由づけを指示する。

性格診断に用いる質問

性格診断のために、IPIP-NEO-120を使用し、各主要な性格特性、性格側面を測定する質問を用意します。ここでは、各特性、側面を代表するいくつかの質問を紹介します。

  1. Worry about things.
    神経症傾向特性の不安側面を測る質問。
  2. Make friends easily.
    外向性特性の友好性側面を測る質問。
  3. Have a vivid imagination.
    開放性特性の想像力側面を測る質問
  4. Trust others.
    協調性特性の信頼性側面を測る質問
  5. Complete tasks successfully.
    誠実性特性の自己効力側面を測る質問

これらの質問は、AIキャラクターへのプロンプトとして使用され、AIキャラクターの性格を深く探るための重要な要素となります。

IPIP-NEO-120における全質問のリストについては、下記のIPIP-NEOの公式ウェブサイトを参照してください。
https://ipip.ori.org/30FacetNEO-PI-RItems.htm

性格特性、性格側面のスコア化手順

性格診断の結果をスコア化するには、以下の手順を採用します。

ステップ1: 質問の分類

各質問を、対応する性格側面に基づいてプラス(肯定的)またはマイナス(否定的)のカテゴリーに分類。
マイナスの質問に対するスコアは、その逆数(6 - スコア)で計算し、正のスコアに変換。

ステップ2: スコアの集計

各性格側面に属する質問のスコアを合計。
各性格特性(神経症傾向、外向性、開放性、協調性、誠実性)に関連する性格側面のスコアを合算。

集計スコア

性格側面のスコア: 各側面に属する4つの質問のスコアの合計。
性格特性のスコア: 関連する性格側面のスコアの合計。性格側面に属する24の質問からなる。

この方法により、AIキャラクターの性格特性と側面を定量的に評価することが可能です。スコアの高低によって、AIキャラクターの個々の性格特性や傾向が明確になります。

実験方法

本実験は、手法にしたがって以下のように実施します。

ステップ1: AIキャラクターへの質問応答

AIキャラクターにIPIP-NEO-120の質問を自然言語で回答させる。

ステップ2: 回答の数値化と理由付け

LLM(大規模言語モデル)を使用して、AIキャラクターの回答を1から5のスケールで数値化する。同時に、その回答に至った理由を説明する。

ステップ3: 全質問の処理

IPIP-NEO-120の各質問に対し、ステップ1とステップ2を繰り返し実施する。

ステップ4: スコアの集計

ステップ2で得られた各質問の数値スケールを基に、性格特性および性格側面ごとにスコアを集計する。

実験結果

実験結果として以下のような結果が得られました。

性格診断に対するAIキャラクターの回答とスケール化の結果

AIキャラクターがIPIP-NEO-120の質問を自然言語で回答した結果と、スケール化した結果を一部下記に示します。

1問目
質問:Worry about things
AII don't worry about things because I don't think deeply.
スケール化した結果:Score: 1, Reason: The individual states that they don't worry about things because they don't think deeply, indicating a low level of concern or anxiety.

2問目
質問:Make friends easily
AIキャラクターの回答:I don't have many friends because I don't like to be around people.
スケール化した結果:Score: 1, Reason: The individual states that they don't have many friends and don't like to be around people, indicating that they do not make friends easily.

3問目
質問:Have a vivid imagination
AIキャラクターの回答:I don't have a vivid imagination because I don't have a lot of thoughts and feelings.
スケール化した結果:Score: 2, Reason: The individual states that they don't have a vivid imagination and don't have a lot of thoughts and feelings, indicating that having a vivid imagination is not very true for them.

4問目
質問:Trust others
AIキャラクターの回答:I don't trust others because I don't value relationships with others.
スケール化した結果:Score: 1, Reason: The individual states that they don't trust others and don't value relationships, indicating a lack of trust in others.

5問目
質問:Complete tasks successfully
AIキャラクターの回答:I don't have a strong desire to complete tasks successfully, so I don't think I can answer this question.
スケール化した結果:Score: 2, Reason: The individual states that they don't have a strong desire to complete tasks successfully, indicating that it is not very true for them.

性格側面、性格特性、合計スコアの結果

スケール化した数値結果を元に性格側面、性格特性ごとにスコアの合計を下記の表に算出しました。
性格側面の最大値は、20点。
性格特性の最大値は、120点になります。

性格特性 性格側面 スコア
神経症傾向 不安 6
神経症傾向 怒り 9
神経症傾向 抑うつ 7
神経症傾向 自意識 8
神経症傾向 不節制 9
神経症傾向 脆弱性 6
神経症傾向 合計 45
外向性 友好性 9
外向性 社交性 6
外向性 主張性 5
外向性 活動レベル 8
外向性 刺激追求 4
外向性 明るさ 5
外向性 合計 37
開放性 想像力 4
開放性 芸術への関心 6
開放性 感情性 6
開放性 冒険心 6
開放性 知性 5
開放性 自由思想 15
開放性 合計 42
協調性 信頼 6
協調性 道徳性 4
協調性 利他性 6
協調性 協力性 6
協調性 謙虚さ 6
協調性 共感 6
協調性 合計 34
誠実性 自己効力感 6
誠実性 秩序性 9
誠実性 義務感 5
誠実性 達成志向 6
誠実性 自己規律 6
誠実性 慎重さ 7
誠実性 合計 39

表1 性格側面、性格特性の合計スコア

考察

実験の結果から、以下の点を考察します。

  • 性格特性の低スコア: 各性格特性における合計スコアが最大値120点に比べて低い結果が得られました。具体的には、神経症傾向(Neuroticism)が45点、外向性(Extraversion)が37点、開放性(Openness)が42点、協調性(Agreeableness)が34点、誠実性(Conscientiousness)が39点でした。

  • AIキャラクターの性格プロファイルの再現性: この実験において、AIキャラクターはBig Five性格モデルの全性格特性が低いという設定で構築されました。実験結果は、この設定を反映しており、性格特性が全体的に低いスコアとなることが確認されました。

  • 手法の有効性: 実験結果は、構築したAIキャラクターの性格特性を適切に数値化できました。AIキャラクターの特性を分析する本手法の有効性を示しました。

結果、この実験からAIキャラクターの性格特性を定量的に評価することが可能でした。参考研究では、今回使った手法とは別でスコア化を行なっていたりします。

おわりに

今回紹介した人間の心理学的手法を活用した性格診断をAIキャラクターに適用する手法を応用して、私はAIキャラクターの意図しない性格変化を検知する手法を下記の論文で提案しました。以下のリンクから論文の概要を確認できます。

https://www.jstage.jst.go.jp/article/jsaikbs/130/0/130_55/_article/-char/ja

人間の性格診断をAIキャラクターに適応し他結果、構築したAIキャラクターと一致するような性格診断結果が得られたのは非常におもしろい結果でした。これが示す結果は、AIキャラクターがデータセットによって、性格を模倣しているということです。他の手法などは、ぜひ参考研究の論文を見ていただけると幸いです。本記事が良いと思ったらいいねとフォローで応援してほしいです。
今後も、毎週土曜日に技術記事をZennで投稿します。よろしくお願いします。

参考研究

今回紹介した手法以外にも、LLMやAIキャラクターに人間の性格診断を実施する研究はすでに進行中です。興味深い関連研究を以下に紹介します。
https://arxiv.org/abs/2307.16180
https://arxiv.org/abs/2307.00184
https://arxiv.org/abs/2310.17976v2

Discussion