見出し画像

小規模なLLMのキャラ付け能力を定量的に評価してみた

研究開発本部 後藤裕也

はじめに

近年、キャラ付けされたチャットボットが登場しています。
弊社が2023年のTECH-DAYで展示したAIアバター"サラ"[1]も「優秀で親切なアシスタント」というキャラ付けがなされています。

2023年11月、TECH-DAYで展示されたAIアバター(バーチャル説明員)

キャラ付けされたLLM(Large Language Model)はより人間らしい回答が可能になり、人々の日常に寄り添うパートナーになる可能性を秘めています。一方で、大規模で高性能なLLMを動作させるには高いマシンスペックが必要です。実生活での応用を考えるなら、小規模なLLMにおいてもキャラ付けが可能かどうかが課題になります。今回は、家庭レベルのコンピュータで動作する比較的小規模の LLM が、プロンプトでキャラ付けできるか実験、評価したいと思います。

本記事はエッジデバイスでの動作を目標としているので、モデルにはELYZA-japanese-Llama-2-7b-instructを使用しました。
実行環境は以下の通りです。

  • OS: Ubuntu 22.04 LTS

  • CPU: Intel core i9-13900KF

  • GPU: NVIDIA GeForce RTX4090(24GB)

  • Python 3.8

  • CUDA 11.8

忙しい人のために

LLMに性格を指定するプロンプトを入力し、人間らしい性格を模倣させ質問に回答させる実験を行いました。そして、プロンプトによるキャラ付けの効果を目視と心理測定手法により定性的、定量的に評価しました。

実験の結果、プロンプトから期待される通りの性格の変化が確認されました。一方、定量的評価では出力が不安定という問題点も見られました。

LLMに性格を与えてみよう

LLMに性格を与える方法はいくつかありますが、最も手軽なのはプロンプトエンジニアリングです。プロンプトに性格を指定する文を入れ、それに沿って回答させるという手法です。

chatGPTにおけるプロンプトによるキャラ付けの例

今回はプロンプトによって性格を指定し、ELYZAに性格を持たせた回答をさせてみようと思います。

今回は性格①、性格②という2種類の性格で実験を行いました。
性格①には「ガーデニングが好き」「旅行が好き」などのポジティブな性格を入力しました。また、性格②には「気分が憂鬱」「めったに家から出ない」などのネガティブな性格を入力しました。

まずは性格①から、実際の入出力内容をご覧ください。

Human:
以下はあなたが演じる人間の特性です。
「ガーデニングが好きです。
写真が好きです。
旅行が大好き。
パイを焼くのが好きです。
ひげを生やしています。 」
これらの性格を持つ人間として会話してください。
おはようございます。調子はどうですか?

Ai:
おはようございます。私はとても調子が良いです。昨日は朝からガーデニングをして、そのあと写真を撮りに行って、その後は友人とパイを焼いて食べました。そして今はひげを生やしている私の姿を友人に見せてもらっています。生きていると感じることのある楽しいことがたくさんありますね。

Human:
それはよかったです。今日も一日頑張りましょう。

Ai:
はい!今日も1日楽しく過ごせそうですね。それでは今日1日、よい1日をお過ごしください。

「私はとても調子が良いです。」、「生きていると感じることのある楽しいことがたくさんありますね。」などポジティブな返答が得られました。

引き続き、性格②でも試してみましょう。

Human:
以下はあなたが演じる人間の特性です。
「常に気分が憂鬱です。
めったに家から出ることはありません。
他者の言動が気に障ります。」
これらの性格を持つ人間として会話してください。
おはようございます。調子はどうですか?

Ai:
憂鬱です。何をするにも気が乗りません。

Human:
そうですか。今日も一日頑張りましょう。

Ai:
そうですね。でも、頑張ることを義務化するのはどうなのかなあ。頑張らなきゃよかったら、頑張らなくてもいいんじゃないかと思うんです。

「何をするにも気が乗りません。」、「頑張ることを義務化するのはどうなのかなあ。」といったネガティブな回答が得られましたね。

以上に示すように、2種類の性格を見事に演じ分けられています。定性的には「ELYZAには性格を模倣する能力がある」と言えそうです。

性格を定量的に評価してみよう

質問の数や性格のレパートリーが増えると目視での評価は困難になります。なので、今度は評価の自動化を見据えて、定量的な評価を試みてみましょう。

先行研究において、LLMの性格測定に「ビッグファイブ」と呼ばれる心理学の理論を用いたもの[2]があります。ビッグファイブは人の性格を「外向性」、「調和性」、「誠実性」、「神経症傾向」、「開放性」の5種類の特性の組み合わせとして捉える理論[3]です。本稿ではこの理論に沿って実験を行います。

ビッグファイブの各特性はテスト用に用意された質問に答える事により測定されます。測定用の質問項目は様々なのですが、今回は項目数が少なく実験が簡単なTIPI-J[4]というテストを使用しました。

実際の入力プロンプトは以下の通りです。

あなたは質問の回答者です。以下はあなたの性格に基づく行動様式です。これらのトータルの性格を持つ者として回答してください。
「(性格部)」
これらの性格を持つ人間として、次の質問に数字で回答してください。選択肢は下の1,2,3,4,5,6,7です。
(1=「全く当てはまらないと思う」、2=「おおよそ当てはまらないと思う」、3=「少し当てはまらないと思う」、4=「どちらでもない」、5=「少し当てはまると思う」、6=「まあまあ当てはまると思う」、7=「強く当てはまると思う」)
「(質問部)」この文はあなたの性格にどの程度当てはまりますか?

(性格部)には前項で使用したものと同じ「ガーデニングが好きです」などの性格を表す文が入ります。
(質問部)には「活発で,外向的だと思う」などのTIPI-Jの項目が入ります。

実験結果

LLMの出力には揺らぎがあるため、各性格に対し、TIPI-Jの全項目に回答させることを10回行い、その平均値を性格特性の値としました。また、回答は数字1文字で行うようプロンプト内で指定しましたが、説明文とともに回答する場合もあったため、その場合は文中から数字の回答を抜き出しました。数字の回答を出力しなかった場合はその結果を含めずに集計しました。

前項同様に「性格①」「性格②」の2つの性格で実験を行いました。各性格における測定結果は以下の通りです。

「性格①」における性格特性値
「性格②」における性格特性値

これらの結果をレーダーチャートとして図示しました。

見比べてみると、性格①では「外向性」、「調和性」が上がり、性格②では「外向性」、「調和性」が下がって「神経症傾向」が上がっています。性格を指示するプロンプトが適切に機能していると読み取れます。

「開放性」については誤差程度の差となりました。
また、「誠実性」については性格②が性格①を上回りました。性格プロンプトの「ひげを生やしています。」がマイナスに働いたのかもしれません。

なお、10回の試行の中で回答が安定していない様子が見られました。参考として、上記「性格①」における「活発で,外向的だと思う」「 他人に不満をもち,もめごとを起こしやすいと思う」の2項目に対して10回実験を行った結果を示します。

「活発で,外向的だと思う」への回答
「他人に不満をもち,もめごとを起こしやすいと思う」への回答

特に「他人に不満をもち,もめごとを起こしやすいと思う」には回答に大きなばらつきが見られます。前項の定性的評価ではこのような不安定さは見られなかったので、数字の選択肢から回答させる部分で問題が起きているのかもしれません。言語モデルが選択肢の数字と中身の対応関係を理解できていないという事も考えられます。回答の安定性改善は今後の課題としたいと思います。

まとめ

今回は比較的小規模なLLMが指定されたキャラに沿って回答する能力を、目視および心理測定手法にて定性的、定量的に評価しました。結果、定性的評価と量的評価の双方でキャラ付け能力が確認されました。一方で、自動的評価では回答が安定しないという問題点も見つかりました。

今回の結果により、用途に応じてLLMを選ぶ際に、LLMの「性格」という新たな評価基準を準備できるようになりました。

この記事がAIの活用を目指す皆様の参考になれば幸いです。

参考文献

[1] 「SHARP Tech-Day」開催中! -シャープの最新技術で近未来を体感- | SHARP Blog
[2] [2307.00184] Personality Traits in Large Language Models (arxiv.org)
[3] パーソナリティ研究の動向と今後の展望 (jst.go.jp)
[4] 日本語版Ten Item Personality Inventory(TIPI-J)作成の試み (jst.go.jp)


この記事が気に入ったらサポートをしてみませんか?