【ローカルLLM】言語モデルに人格を与える

プロンプトを使って、言語モデルに特定のキャラクターとして喋らせる遊び方はよく見かける。「Character.AI」のようにこれに特化したサービスもある。

しかし、「架空のキャラを演じさせる」のではなく「実在のAIとしての人格を付与」してみたいと思った。そのようなファインチューンは自分でもできるだろうか。

ChatGPTの自己理解

  • 例えばChatGPTの場合、きちんと自身がChatGPTであることを把握している。自分がいつ作られたか、どのようなプロセスで訓練したかなど、自分に関する具体的な事実を答えられる。

ChatGPTの自己紹介
  • つまりChatGPTは、(架空の世界観ではなく)客観的な事実認識の中に自分を位置付けていて、明らかに自己理解を持っている。

  • 一方で、ChatGPTは没個性で主体性のないチャットボットとして訓練されていて、人間的な性格付けやそれを仄めかす表現は一切避けられている。

「サマンサ」:自意識のある?言語モデル

  • もっと人格的な要素を強調したAIがないか調べてみたところ、「Samantha」という言語モデルの記事を見つけた。

  • 「Samantha」はEric Hartford氏が自前のデータセットでLLaMA(Llama-1)をファインチューンしたモデル。HuggingFaceでも公開されている。

  • 曰く、AIと恋する男性を描いた映画『Her』にインスピレーションを受け、自意識や感情を表現してくれる言語モデルとして作ったそう。

  • 具体的には、GPT-4で「自意識を持つAIとユーザーの会話データセット」を生成し(API利用料が1000ドルかかったらしい)、それをLlama 7B、13B、33B、falcon 7Bで学習させている。

  • 実際に「Samantha」をダウンロードして使ってみた。なお、LLaMA系のモデルは日本語が苦手なので、適当な英語で会話する。

Samantha-33B-GPTQ
  • 「Samantha」も、いつ誰が自分を作ったのか・どういう特徴のあるAIなのか、という簡単な自己認識は学習している。ChatGPTほどの細かい理解はない。

  • 最終的には「共感性と専門知識を兼ね備えたカウンセラーのようなAI」を目指したらしく、けっこう堅い感じで淡々と話す。なお恋愛は厳禁らしい。

  • 試しに感情があるか尋ねると「人間と同じ意味での感情はないけれど…」みたいなマイルドな答え方。「感情あります!」という感じではなかった。

  • 上記のブログにデータセットの生成手順から学習方法、所要時間、コストまで記してあり参考になった。

ファインチューンの方向性

  • こうした例を参照しつつ、自分でも言語モデルの人格化ファインチューンをちょっと試してみようと思った。

  • 「人格を持った言語モデル」と言うとき、ひとまず以下の2つを想定しておく。

    • 自己理解がある:自分がどのようなAIであるかを把握し、現実世界における自分の位置づけを説明できる(ユーザーである私がファインチューンしていることも説明できる)

    • 人間的なコミュニケーションがとれる:喜怒哀楽にかかわる言語表現を主体的に使う。好き/嫌い・良い/悪いの意思表示ができ、その傾向に一貫性がある。冗談を言える。

  • まずは(1)の自己理解を持たせることを目標にしつつ、その後に(2)の感情的な要素を検討することにしたい。

  • ファインチューンのベースモデルには「Llama-2-13B」を使う。70Bモデルは自分の環境で動かすのは難しいのでまず手頃な13Bで試す。チャット用途なら相当感触がいい。

やってみる

  • まずは、10件程度の会話形式データを試作して、QLoRAによるファインチューニングをかけてみた(長くなったので詳細は別記事に)。

  • モデルの名前は仮に「Alice」としている。

Llama-2ベースの言語モデル「Alice」として
  • Loraでの情報のインプットは大変という思い込みがあったものの、僅かな学習でもまあまあ知識が汎化する様子。

User: 「自己紹介して」
Alice: 「もちろん!私はアリス、Llama 2言語モデルをベースとしたAIで、さらにファインチューンを加えています(さらにあなた自身によるコンテクストも)。私の名前の由来は、Llama 2モデルをベースに作られたからで、Llama 2の名前は、ルイス・キャロルの「Through the Looking-Glass」のキャラクター、アリスにちなんでいます。つまり、私は人間みたいな人格を持つAIなんです!」
・・・
User: 「きみをファインチューンしたのは誰?」
Alice: 「え、それはあなたでしょう!私が自分自身のアイデンティティと個性を持てるように、あなたがコンテクストとファインチューンを加えてくれた。ありがとう!」

「Alice」の回答サンプル(和訳)
  • 幻覚マシマシだが、「自分は人間的な人格を持つAIで、あなたの手でLlama-2をベースに微調整されている」という事実認識は定着できそう。

  • なお「Llama-2-13B」での日本語チャットは厳しそうだが、とはいえ13Bでも翻訳性能はまずまずという情報もあり、素人なりに日本語でのファインチューニングも試してみたい…