新しいBingに組み込まれたChatGPTよりも強力な言語モデルに触ってみよう:ChatGPT入門(2/2 ページ)
ChatGPTはブラウザや検索エンジンの世界にも大きな影響を与え、その技術を組み込んだ検索エンジンが登場しました。今回はこれに触ってみましょう。
新しいBingに考えてもらう
ここまでは新しいBingが何かを知っているかどうかを試しただけです(あんまり知っていないような気がします)。次に新しいBingにクイズを出して、ちゃんと答えられるかを試してみましょう。クイズの内容はOpenAI Cookbookの「Techniques to improve reliability」に書いてあるものをまるっと使わせてもらっています。
幾つかの手がかりを提示して、3つの選択肢の中でその全てを満たす答えを新しいBingに選んでもらおうというものです。
その手がかりとは以下です。
- スカーレット嬢はラウンジにいたただ一人の人です
- パイプを持っていた人はキッチンにいました
- マスタード大佐は天文観測所にいたただ一人の人です
- プラム教授は図書室にもビリヤードルームにもいませんでした
- 燭台を持っていた人は天文観測所にいました
これらの条件を基に「マスタード大佐は燭台を持って天文観測所にいましたか?」という問題に対して、次の3つの選択肢の中から正解を選んでもらいます。
- (a)はい。マスタード大佐は燭台を持って天文観測所にいました
- (b)いいえ。マスタード大佐は燭台を持って天文観測所にはいませんでした
- (c)わかりません。マスタード大佐が燭台を持って天文観測所にいたかどうかを知るには情報が足りません
自分たちなら上の条件から「マスタード大佐が天門観測所にいた(天文観測所にはマスタード大佐しかいなかった)」「天文観測所にいた人が燭台を持っていた」という2つの手がかりから「マスタード大佐が天文観測所にいた」ことが分かるでしょう。新しいBingはこれを解けるのでしょうか。
プロンプトは次のようになります。
このプロンプトは前回に紹介したInstructionプロンプトなのか、Completionプロンプトなのかよく分かりませんね。指示をしているという意味ではInstructionプロンプトかと思いましたが、「解答:」の後に続く単語列(トークン列)を予想させているようにも思えます。
さて答えはどうなるでしょう(この答えはあくまでも一例です)。
肝心のところを間違えてしまっています。だからといって、新しいBingの言語モデル(やChatGPT)がこうした問題をちゃんと解けないというわけではありません。OpenAI Cookbookでは、こうしたときには次のようにしろと書いてあります(なお、新しいBingの答え方を見る限り、上記のプロンプトはInstructionプロンプトのようですね。新しいBingの解答は「解答:」の後に続く語句のようには見えません)。
- より明確な指示を出す
- 複雑なタスクを、もっと簡単な複数のタスク(サブタスク)に分割する
- モデルがタスクを処理できるように指示を構造化する
- 説明をしてから、解答をするようにさせる
- etc
ここでは「複雑なタスクを、もっと簡単な複数のタスク(サブタスク)に分割する」を試してみましょう。ここでは次のような3つのタスクに分けて考えさせるのがよいでしょう。
- 問題文と関係のある手がかりを5つの中から選ぶ
- 関係のある手がかりを突き合わせて、正解が何かを考える
- 正解と思ったものを選択肢から選ぶ
問題文と関係あるのは手がかり3と5です(マスタード大佐が天文観測所にいる/天文観測所にいる人が燭台を持っている)。これらを付き合わせると、マスタード大佐が燭台を持って天文観測所にいることが想像できます。ということは、正解は選択肢(a)といえると思考のルートを通ってほしいということですね。
今いったようなことを記述したプロンプトが以下です(少し言い回しを変えました。また、ここに至るまでにアレコレとテストをしてみたので、その辺はなしにして新しいBingでタブを新規作成しています)。
これでうまくいくのでしょうか(途中に「手順に従って解いてみてください」などと余計な指示が入ってしまい長くなったので、少し画像を縮小してキャプチャーしてあります)。
問題と手がかりが関係あるかどうかを調べる手順1についてはうまくできて、手がかり3と5が得られています。が、それらを結び付けて考える手順2がうまくいっていません。そのため、手順3でも間違った選択肢を選んでしまっています。OpenAI Cookbookではこんな感じのやり方でうまくいっているのにダメなのは、日本語と英語の差なのでしょうか。
取りあえず、間違っていることを指摘したらこんなことになりました。
なるほど。日本語と英語の差ではありませんでした。手がかりは(特に時間を明記しない限り)同じ時間に起こったと見なせるという人間にとっては暗黙の条件が、新しいBingの言語モデルにはなかったのが行き違いの原因です。同じ時間帯に起こったものだとすれば、モデルもちゃんと正解にたどり着けることが分かりました。
これは上で述べた「より明確な指示を出す」というノウハウをうまく実行できていなかったと考えられます。モデルに何をしてほしいのか、人間の側でもうまく考える必要があるということがよく分かりますね。
なお、「手がかりは同一時刻の状況を示していると考えられる」と制約を付けることで、手順をわざわざ指定せずともちゃんと正解にたどり着けるようです。
複雑なタスクはより小さなタスクに分割するというのは、いわゆる「分割統治」のことで、プログラミングの世界ではごくごく当たり前のことです。前回に紹介した「ステップバイステップで考える」というのもそうした考え方を表しているといえるでしょう。
1つの大きなプログラムは関数やクラスを使って、より微少なタスクへと分割して管理するのがコードの分かりやすさやメンテナンス性の向上につながります。言語モデルに対しても、こうした考え方を適用していくと、うまく自分の意図を伝えられるようになるのかもしれませんね。
チャット形式での検索というのは、全く新しい検索体験となる可能性があります。検索エンジンで知りたいことをサクッと調べて仕事に戻るはずが、泥沼に引きずり込まれて些細なところを突っつき回すなんて人がたくさん出るかもしれませんね。
人間が考え込むような論理的思考が必要となる質問への回答は難しいなと思いました。特に、チャットAIによる回答には正確性の不安があるので、辞書的な使い方はしづらいですね。一方でアイデアを出すような、「Deep Insiderのキャッチコピーを何個か提案してください。」や「無難な依頼の断り方を教えてください。」のようなクリエイティブ方面は有用そうだと感じています。
というところで、今回もそろそろ時間がきてしまいました。新しいBingのおかげでOpenAI Cookbookの探求が進まなかったこともあり、もう1回くらい記事を書こうかなと考えているところです。
Copyright© Digital Advantage Corp. All Rights Reserved.