メインコンテンツへスキップ
見出し画像

ChatGPTを賢くする魔法の言葉。とGPT-4との比較

    はじめに

    GPT-3からの技術ですが、ChatGPTでも効果的でしたので紹介します。

    ChatGPTは賢いわりに算数の簡単な問題を間違えたり、ちょっと残念なところもありますよね。

    それが、この魔法の言葉を使うと、一気に正解率があがります。

    数学の問題では、なんと精度が 18% から 79% へと 4 倍になったということです。(GPT-3では)

    論文はこちら。



    実験

    さて、魔法の言葉とは?


    「ステップバイステップで考えましょう」

    これだけです。

    さっそく試してみましょう。

    まず問題です。

    小学生レベルの問題を使ってみましょう。


    問題

    今日は運動会です。太郎くんと次郎くんはリレーの選手でどちらもアンカーです。太郎くんは3位でバトンを受け取りました。次郎くんは4位でバトンを受け取りました。ゴール目前で次郎くんは太郎くんを抜いてゴールしました。次郎くんは何位でゴールしましたか?

    答え
     「3位」


    人間にとっては、たやすい問題ですね。

    小学生低学年くらいだと、うっかり「2位」と答えてしまうかもしれません。

    大人のみなさんは大丈夫ですね?

    ※厳密にいうと何人抜いたかは定義されてないので、1位でも2位でも間違
    いではないですが、問題としては「3位」が正解です。

    ※本実験はChatGPTのAPI(gpt-3.5-turbo)を利用しています。パラメータによって回答が異なるかもしれませんが、「ステップバイステップ」効果の事例として紹介します。


    普通に指示

    指示文

    太郎くんと次郎くんはリレーの選手でどちらもアンカーです。太郎くんは3位でバトンを受け取りました。次郎くんは4位でバトンを受け取りました。ゴール目前で次郎くんは太郎くんを抜いてゴールしました。次郎くんは何位でゴールしましたか?


    プログラム例

    curl https://api.openai.com/v1/chat/completions \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer APIキー"  \
    -d '{
      "model": "gpt-3.5-turbo",
      "messages": [{"role": "user", "content": "太郎くんと次郎くんはリレーの選手でどちらもアンカーです。太郎くんは3位でバトンを受け取りました。次郎くんは4位でバトンを受け取りました。ゴール目前で次郎くんは太郎くんを抜いてゴールしました。次郎くんは何位でゴールしましたか?"}],
      "max_tokens": 1000,
    }'


    ChatGPTの答え

    次郎くんは2位でゴールしました。

    はい、見事に間違えました。

    「3位を抜いたら自分は3位」というのが頭でイメージできていれば、間違えないとは思いますが、このあたりが自然言語の学習データから単純に正解の可能性が高い言葉を出力しているだけという、ChatGPTの弱点が露呈しているのかもしれません。


    次に、「ステップバイステップで考えましょう」を追加


    指示文

    今日は運動会です。太郎くんと次郎くんはリレーの選手でどちらもアンカーです。太郎くんは3位でバトンを受け取りました。次郎くんは4位でバトンを受け取りました。ゴール目前で次郎くんは太郎くんを抜いてゴールしました。次郎くんは何位でゴールしましたか? ステップバイ ステップで考えましょう

    やり方は簡単です。

    文章の最後に「ステップバイステップで考えましょう」と入れるだけです。


    ChatGPTの回答

    太郎くんが3位でバトンを受け取ったので、リ レーの最初の段階での順位は3位であったと推測できます。 
    次郎くんが4位でバトンを受け取ったので、 最初の段階の後、リレーの順位は4位に変わったと考えられます。
    しかし、次郎くんがゴール目前で太郎 くんを抜いたため、次郎くんは3位でゴールしたと推測できます。
    よって、次郎くんは3位でゴールしま した。

    今度は次郎くんが「3位でゴール」と答えてくれました。

    正解です。

    回答内容も「〇位でした」だけではなく、ステップバイステップで回答を用意してくれてますね。


    たった一言「ステップバイステップで考えましょう」と入れるだけで、苦手な算数問題も解けるようになります。


    GPT-4でも効果あるのか?

    おそらくChatGPTの後継であるGPT-4でも効果はあると思いますが、どんどんGPTシリーズが進化するにともなって、この魔法の効果はなくなってくるかもしれません。

    というのも、AIの進化に伴い、

    「わざわざステップバイステップとつけなくてもちゃんと正しい回答をしてくれるようになっていく」

    というのが予想されます。

    なので、今だけの「魔法」かもしれませんね。


    試しに、GPT-4でも同じ問題出してみましょう。


    GPT-4で試してみる

    curl https://api.openai.com/v1/chat/completions \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer APIキー"  \
    -d '{
      "model": "gpt-4",
      "messages": [{"role": "user", "content": "太郎くんと次郎くんはリレーの選手でどちらもアンカーです。太郎くんは3位でバトンを受け取りました。次郎くんは4位でバトンを受け取りました。ゴール目前で次郎くんは太郎くんを抜いてゴールしました。次郎くんは何位でゴールしましたか?"}],
      "max_tokens": 1000,
    }'

    モデルをGPT-4用のモデルに変えています。
    問題の文章は同じ問題です。
    「ステップバイステップ」の魔法は入れていません。

    GPT-4の回答

    次郎くんは3位でゴールしました。

    おー、正解でした。
    3位を導き出す前の過程の文章が何もないので、たまたまかもしれませんが、このように進化するにともなって、この魔法を使わなくてもよくなるかもしれません。

    いちいち「ステップバイステップで考えましょう」と入力するのも面倒ですからね。


    まとめ

    「ステップバイステップ」という魔法を紹介しましたが、新しい話題ではなく、ChatGPTがリリースされる前のGPT-3時代に発見された魔法です。

    おそらく、これを発見するのに相当な実験をされたと思いますが、発見したときは大興奮だったのかなーと想像しています。
    (この論文を発表したのは日本の人みたいですね)

    ChatGPTの登場によって、世界中でChatGPTが使われてますので、どんどん魔法が増えていくといいですね。

    ちなみに、人間に置き換えて考えてみても、いきなりハードルの高い答えを出すのは難しいので、「ステップバイステップ」という考え方は人間にとっても大事かなと思っています。

    エンジニアもそうですが、目先の小さいハードルをコツコツ努力することによって、最後に高いハードルを越えられるようになるのです。


    「ステップバイステップ」は、今はChatGPTといったAIに対する魔法の言葉ですが、未来になるとAIに対して不要になる代わりに、「人間に対する魔法の言葉」になってるかもしれませんね。
     (AI①:「人間のパフォーマンスを上げるにはどうすればいいのか?」、AI②:「魔法の言葉発見しました!」とかAI同士で議論して騒いでるかもしれません)
























     
     
    現役ITエンジニア | ChatGPT・生成AI活用×ブレインテック | OSS、クラウド推進 | エンジニアのための最新の生成AI活用情報発信 | KDP出版 → http://amazon.co.jp/dp/B0C1VWSPV8

    あなたへのおすすめ