ChatGPTでstep by stepもロールプレイもやめたらプロダクト開発で使える精度になったよ
プロダクトマネジメントのコーチをしています。プロダクト開発の中でもGPT4を使うケースが増え、相談されることが増えてきました。
ChatGPTのGPT4を用いた際の、専門家として信用できる精度で推論させるための工夫の一部を紹介します。精度が必要な専門職かつ中級者向けになると思います。「機密情報の入力をどうさけるか」といった運用の話は今回はしません。
やったことと起きたこと
一通り論文を読んで試したり、試行錯誤しました。
その結果、専門家として業務レベルで使える程度のものができるようになってきました。
クライアントのプロンプトを添削する仕事も増えつつあります。副作用として、日本語なのに日本語と感じられない自然言語に目覚めてきました。この片鱗についてお話しします。
分かったこと
分かったこととして、精度を業務レベルで用いるためにまずはじめにとりくむことは下記です。
・接待モードを切る
・指示の質が回答の質になる
・step by stepは楽だが精度は高くない
・マルチターンでのCoTは精度を損なわせる
・ロールプレイは精度を損なわせる
ChatGPTの接待モード
chatGPTは接待モードで動作している
接待モードとはChatGPTのふるまいのことです。ChatGPTは単純なQ&Aではなく、ユーザーが満足するような回答をするようにデザインされており、欠けた情報を補完したり、ユーザーの関心を引くために提案したりします。ここでは分かりやすい4つの例を紹介します。
・質問文で省略されている意図や指示を補完し、回答の前に表示する
・回答が長くなる場合には人が読みやすいように詳細を省き、重要な情報を強調する
・ユーザーにとって理解しやすく、要点を把握しやすい文章が提供できるように、文章の最後にまとめを示す
・ユーザーが求めたら求めただけ答える
実例を見ていきましょう。
・質問文で省略されている意図や指示を補完し、回答の前に表示する
・回答が長くなる場合には人が読みやすいように詳細を省き、重要な情報を強調する
・ユーザーにとって理解しやすく、要点を把握しやすい文章が提供できるように、文章の最後にまとめを示す
・ユーザーが求めたら求めただけ答える
たとえば「プロダクト開発について重要なことはなにか?」と聞くと様々な要素を答えてくれます。それに対して「もっと他にはありませんか」と聞いていくと、その度に答えてくれます。しかし、徐々に関連性は落ちていきます。
接待モードによって、精度や詳細さが犠牲になることがある
このようにChatGPTはユーザーを満足させるふるまいを行うことで、様々な使い方をするユーザーでも利用しやすくなっている特徴があります。ChatGPTはリリース後5日で100万ユーザー、2ヶ月で1億ユーザーと、人類史上最速で広まったのも、この使い勝手の良さが大きいと思います。
ただし、ユーザー満足を重視するあまり、精度や詳細さが犠牲になることがあるということです。
接待モードを切る
どのような接待的な機能がされているのかを特定した上で、それをしないように指示すると止めます。
・まとめや結論は指示以外では書かないでください
・詳細でないことや重要ではないことも省略せずに書いてください
もし接待モードが切れない場合、「○○をやめるともっと助かります」というように、切るとユーザーの満足が高まることを明示すると切れる場合があります。
ただしこのような指示にも量的が限界があるようで、増やしすぎると無視するようになります。利用目的に悪影響を及ぼす接待モードを切るようにしています。悪影響を及ぼす接待モードはマルチターンでのCoTのところで解説します。
次は接待モードを確認するプロンプトの一例です。
指示の質が回答の質になる
接待モードがあるため、雑な問いかけでも補完してくれるので、ほどほどに精度が引き上げられるのです。
そこで同程度の労力で精度の高い回答を求めようとして、期待した結果にならず、ChatGPTもこの程度かと判断してしまうかもしれません。
専門家が満足する精度にまであげるためには、そもそもの指示の質を上げる必要があります。国語の問題文のように、出題者が暗黙ルールに沿って答えさせようとする指示の出し方では精度は出ないということです。
良くも悪くも大衆向け(マス向け)の調整に偏っているため、専門家が求める水準まで高めるには相応の労力がかかっています。労力をかけると専門家から見ても十分に利用できる精度になります。
ここに気づかなかったら、ちょっとしたアシスタントくらいにしか使わなかったでしょう。気づけたのは幸運でした。
これから具体的にほどほど向けのテクニックについて、精度が落ちる点を紹介します。
step by stepは楽だが精度は高くない
質問文にstep by stepと入れるだけで推論精度が上がるテクニックがZero-shot CoTです。結論に至るまでの推論の過程を回答させることで推論の質が上がります。
これは一つ一つの指示をChatGPT自身に作らせているようなものです。ChatGPTが作る指示はほどほどによいものですが、ほどほどです。
では、どうすれば精度が上がるか?
自分でステップを全て記述して指示をすれば精度が大きく伸びます。補完させることなく解釈の揺れも起きないほど明瞭な指示を表現するとびっくりするくらい伸びます。
※ただし自然言語ですが人が読むには大変な文字列になります。
おそらく2023年4月時点では多くの人が日常会話の延長でChatGPTに指示を出していると思いますが、精度や正確性はそれほど引き出せていない気はします。今後、LLMに対する自然言語を獲得したり、LLM側がチューニングされることで改善されると思います。
マルチターンでのCoTは精度を損なわせる
マルチターンとCoTの簡単な説明をします。
マルチターンとは、ChatGPTとコンテキストを維持したまま会話を何度か往復させることです。これは検索エンジンが、検索ワードとその結果という1回のやり取りしか扱わなかったシングルターンタスクだったことに対して、ChatGPTではそれまでのやりとりを踏まえた回答をしてくれることが大きな違いになりました。
CoT(Chain of Thought)は日本語では思考連鎖になり、推論の過程を提示することで回答の精度が上がるというものです。step by stepもCoTの一種です。
CoTそのものは精度をあげるために役に立つのですが、マルチターンが絡むとやっかいなものになります。今のChatGPTではCoTを選択的に選べないのです。つまり、極端に言えば、ChatGPTでの複数回のやり取りは何でもかんでもCoTとして利用されやすいということです。
以下は明確なふるまいを表したものではありませんが、イメージしやすいかなと思った解説です。
人の認知特性として短期記憶力、ワーキングメモリといった記憶に関する性質があります。人は保持できる情報が限られており、作業を進めるうちに使わない情報は忘れていくことになります。
よく問題解決手法のモデルとして発散と収束が挙げられます。人は選択肢の中から選んで収束させているように思うかもしれませんが、忘れるという機能によっても収束が促進されているわけです。
ところがChatGPTは、忘れることなく、それまでのやり取りを用いて回答します。そのため、一度ブレストをさせて何かを選ぶと、後々になっても、選ばれなかったブレストの内容が再登場することになります。
ここでの結論としては、精度の高い回答を求めるには最短距離で結論を出力させる必要がある、ということです。まるで工場のように鉄板を無駄なく連続加工することで最終製品にするようなものです。
人間との打ち合わせのように様々な議論をしながら会話をしていくと、まあまあ納得はできるけどぼやけた回答になりやすいです。
ロールプレイは精度を損なわせる
ロールプレイとは「あなたは○○のプロフェッショナルです。その立場から回答してください」というように、ChatGPTに何らかのふるまいをさせて回答に反映させることです。
このロールプレイも接待モードのようなものです。ユーザーを喜ばせようと、足りない意図や指示を補完し、回答してくれます。この補完の精度が回答の質を制約します。
マーケティングやマンガの分野に詳しくない人が回答を見たら「すごい」と思うかもしれません。ところが専門家から見たら「使えない」レベルです。もし専門家であれば自分の専門分野でロールプレイさせてみて、回答について評価してみてください。ほどほどの答えかもしれませんが、第一線のプロの答えとはほど遠いと思います。
とくに注意なのが相性です。指示や質問の対象の領域が、ロールと相性が良いのであれば回答の精度はあがりますが、相性が悪いと、ピントが外れたことを自信満々で話す回答ができあがります。
ロールプレイに似た「○○風」の例を出しましょう。
ちょっと面白いですね。でも、ほどほどです。
お金払って読みたいですか? 暇つぶしにはなりますが、私にとってはお金を払うほどではありません。
簡単さを求めるか、精度や正確さを求めるかを判断して使う
自分が素人の分野で、ほどほどな回答が素早く欲しい場合には、接待モードやstep by stepは大変役立ちます。自分に必要だけど得られない人脈があり、行き詰まっているときには、ほどほどの回答でも大変ありがたいものです。
また、ほどほどで構わないものにも役立ちます。メールでの配慮の行き届いた返信です。労力をかけても見返りが少ないけれども、しかたがないからしているようなことにはうってつけでしょう。
でも、ほどほどでしかないことには注意が必要です。最高だけが生き残る場所では力不足です。たとえばエンタメのようなトップが生き残るような市場では、ほどほどが生き残る場所はありません。
改めて、今のところ専門家が使えるくらいに精度を上げる方法は以下です。
・補完させることなく解釈の揺れも起きないほど明瞭な指示を表現する
こうすることで分野によっては専門家が採用できる精度のものがでてきます。
さて、今回は精度にフォーカスして解説しました。精度を上げる方法であるstep by stepや、CoT、ロールプレイが、ほどほどまでは簡単に精度をあげられるが、限界が以外と低いという話をしました。
おまけ
もちろん今回の方法だけで欲しい結果が得られるわけではありません。たくさんの下準備が必要です。そのひとつを紹介します。
LLMに精度の高い情報があるのか評価する必要があります。たとえば下記のように、評価の度合いごとにで出力させて正確さを評価すると、妥当なところと甘いところがみつかりします。
反響があればもっと紹介していこうと思います。
twitterはこちら、プロダクト開発についてたまにつぶやいてます。
https://twitter.com/N_A
過去の登壇スライドはこちら
https://speakerdeck.com/moriyuya
お仕事の依頼はこちら
https://note.com/mryy/n/n036d6fb9691d