【第2回】楽に澪の品質改善をしたい!
おはこんばんにちは。Shinguです。
前回は、私が開発しているローカルAIプロジェクト Project Kamishiro_Mio(神代 澪)について、
「AIを使う」のではなく、「AIと一緒に過ごす」
という、このプロジェクトが目指しているものについて書きました。
今回は、そんな澪をどうやって成長させていくのかというお話です。
タイトルにもある通り、
「楽に澪の品質改善をしたい!」
というところから始まった仕組みについて紹介します。
澪の品質改善、普通に大変
AIを開発していると、当然ながら、
「もっと自然に喋ってほしい」
「もっと澪らしくしてほしい」
「この返答はちょっと変だな」
という場面が出てきます。
そういうところを一つずつ修正していけば、澪は少しずつ良くなっていきます。
……でも。
これ、めちゃくちゃ大変です。
澪を改善するためには、実際に澪と会話して、
「この返答は良い」
「これはちょっと変」
「ここはもう少しこうしてほしい」
といった問題を探さなければなりませんし、たった数回会話しただけでは、澪の品質を判断するのはとても難しいです。
日常会話
雑談
相談
質問
ちょっと変な話題
意味不明な話
いろいろな状況で会話させてみないと、本当に問題がないのか分かりません。
では、どうするか。
大量に会話させればいい。
……でも、
使ってくれるユーザーが居ない。
自分一人で何百回も澪と会話するのは嫌だ。
この二つの壁にぶち当たりました。
そこでどうしようかと悩んだ末に諦めてYoutubeを見ました。
機械学習系の動画を再生すると「教師なし学習」という文字列を見つけ、閃きました。(今回やったことは教師なし学習ではないですが、、、)
「これ、会話する役をAIにやってもらえばいいんじゃね?」
天城詩乃(あまぎ しの)、誕生
こうして作り始めたのが、
「天城詩乃」
というAIです。
詩乃の役割は非常にシンプル。
澪と会話すること。
ただし、普通に雑談するだけではありません。
あらかじめ用意したシナリオを元に、詩乃が澪と会話を行います。
例えば、
「今日は学校でこんなことがあった」
というシナリオがあれば、詩乃がそれを元に澪へ話しかけます。
澪が返答する。
その返答を受けて、詩乃(しの)がまた返答する。
そして澪がまた返答する。
こうして、
詩乃 ↔ 澪
という会話を自動的に続けていきます。
人間の代わりに大量の会話をする
この仕組みの一番のメリットは、
大量の会話データを自動的に作れることです。
人間が一回ずつ澪と会話する必要がありません。
シナリオを用意して、詩乃(しの)に渡す。
あとは、
詩乃「○○についてなんだけどさ」
↓
澪「それって……」
↓
詩乃「そうそう、それでね」
↓
澪「なるほど!」
……
という会話を自動的に進めていきます。
これを繰り返すことで、かなり大量の会話データを集められます。
そして、この会話は後から分析できるように保存します。
会話データはJSONLにする
ここで登場するのが、
JSONL
です。
JSONLは、簡単に言えば、
「1行ごとに1つのJSONデータが入っている形式」
です。
AIの会話ログとの相性が良く、後から機械的に処理することもできます。
詩乃と澪の会話をこの形式で保存しておけば、
「このとき澪は何と答えたのか」
「詩乃(しの)はその前に何を言っていたのか」
といった情報をまとめて確認できます。
そして、ここからが本番です。
大量の会話データをチャッピーに読ませる
せっかく大量の会話データを作ったのだから、
人間が全部読むのはやめよう。
ということで、ここは私が普段使っているChatGPT、いわゆるチャッピーにお願いすることにしました。(あと単純に読みづらい)
仕組みとしては
詩乃(しの)と澪の会話を大量に生成
↓
会話内容をJSONLファイルとして保存
↓
そのJSONLをチャッピーに読み込ませる
↓
「澪の返答を評価して!」
というわけです。
もちろん、ただ、
「どうだった?」
と聞くだけではありません。
澪のキャラクター性
会話の自然さ
文脈の理解
返答の適切さ
会話の繋がり
不自然な発言
設定との矛盾
など、いろいろな観点から会話を見てもらいます。
そして、改善点を探す
ここで重要なのは、
「点数を付けてもらって終わり」ではない
ということです。
例えば、チャッピーに会話を分析してもらった結果、
「澪の返答が少し説明的になっている」
とか、
「ユーザーが雑談をしているにもかかわらず、問題を解決しようとしすぎている」
とか、
「澪のキャラクターとしては、もう少し感情的な反応を返した方が自然」
といった問題が見つかるかもしれません。
こうした指摘があれば、
「じゃあ、そこを直そう」
となります。
システムプロンプトを変更する
会話履歴の扱いを変更する
メモリの仕組みを改善する
場合によってはモデルそのものを変更する
そして、改善した澪をもう一度テストします。
そして、また詩乃(しの)に会話させる
ここがこの仕組みの面白いところです。
一度改善して終わりではありません。
改善した澪を、もう一度詩乃と会話させます。
そしてまた大量の会話データを作ります。
澪と詩乃を会話させる
↓
JSONLに保存
↓
チャッピーに分析してもらう
↓
問題点を見つける
↓
澪を改善する
↓
また詩乃に会話させる
この繰り返しです。
つまり、
詩乃 → 澪 → JSONL → チャッピー → 改善 → 詩乃……
というループを作ります。
これによって、澪を少しずつ改善していくことができます。
「AIをAIで育てる」ということ
ここまで来ると、ちょっと面白い構図になってきます。
澪は、ユーザーと一緒に過ごすためのAI。
詩乃(しの)は、澪と会話して大量のテストデータを作るAI。
そしてチャッピーは、そのデータを分析して、
「ここを改善した方がいいんじゃない?」
と教えてくれるAI。
最終的に改善するのは私ですが、一人で全部やるのではなく、
AIにAIをテストしてもらい、その結果を別のAIに分析してもらう。
そんな仕組みになっています。
なんというか、
AIを作るためにAIを使って、さらにそのAIを改善するために別のAIを使っている。
ちょっとややこしいですね。
もちろん、これだけで完璧になるわけではない
ただし、この方法にも問題はあります。
AIが作った会話をAIが評価する以上、
「AIが良いと思ったものが、本当に人間にとって良いのか?」
という問題があります。
例えば、チャッピーが、
「この回答は論理的で非常に優れています」
と評価したとしても、
実際に人間が読んでみたら、
「いや、澪がこんな喋り方するわけないだろ!」
となる可能性があります。
逆に人間からすると自然で良い回答なのに、AIから見ると評価が低いこともあるかもしれません。
だから、この仕組みは、
「人間による確認を完全になくすためのもの」ではありません。
あくまで、
人間がすべての会話を一つずつ確認しなくても、問題のありそうな部分を見つけやすくするための仕組み
です。
「楽にする」のが目的
今回の仕組みを作った理由は、
「AIに全部やらせたい!」
ということではありません。
単純に、
私が楽をしたい。
これです。
……いや、本当にこれです。
何百回も澪と会話して、
全部のログを読んで、
問題点を探して、
改善して、
また何百回も会話する。
そんなことを毎回やっていたら、さすがに開発者の私が先に力尽きます。
だから、
面倒な作業はできるだけ自動化する。
その上で、
人間にしかできない判断は人間がする。
この方針で開発していこうと思っています。
これからの澪改善
今後は、この仕組みをさらに発展させていきたいと思っています。
例えば、
シナリオの種類を増やす
より大量の会話データを生成する
会話データの分析方法を改善する
澪のバージョンごとに結果を比較する
改善前と改善後の差を分かりやすくする
問題のある会話を自動的に見つける
など、まだまだやりたいことがあります。
最終的には、
「澪を改善したい」
と思ったら、
シナリオを用意する
↓
詩乃が大量に会話する
↓
データができる
↓
チャッピーが分析する
↓
改善点が分かる
↓
澪を修正する
というところまで、できるだけ簡単にしたいと思っています。
澪は一人では成長しない
前回の記事で、
「一人の相棒が少しずつ成長していく過程を、そのまま記録していきたい」
と書きました。
今回作った詩乃や、この品質改善の仕組みは、そのための一つの方法です。
澪そのものを作るだけではなく、
澪が成長し続けられる環境を作る。
それもProject Kamishiro_Mioの大事な部分なのかもしれません。
澪がユーザーと一緒に過ごすAIなら、
詩乃(しの)は澪にたくさんの経験をさせるAI。
そして、チャッピーはその経験から、
「ここをもっと良くできるんじゃない?」
と教えてくれる存在です。
まだまだ試行錯誤の途中ですが、
こうやって少しずつ、
「もっと澪と一緒にいたい」と思ってもらえるAI
に近づけていければと思っています。
次回は、詩乃に関する詳しいお話をお届けする予定です。
それでは、またお会いしましょう。
神代澪が使えるDiscordサーバ↓
https://discord.gg/x3dbWYKfS4
