初め、インターンのようなもの
ChatGPTは、現在世界で最も優れた大型モデルであることに疑いの余地はありません。しかし、万能ではありません。
数学は得意ではありません。時には無関係なことを話すこともあります。
ほとんどの場合、下品な話題には付き合いません。
多くの友人とChatGPTの使用体験を共有する際、私はこんな比喩を用いることがあります:
ChatGPTは、非常に真面目で学習能力が高く、まさに良い大学を卒業したばかりのインターンのようなものです。
一方で、インターンとして、非常に柔軟であり、時間をかけて指導すれば、望むことを学び、指定された仕事を遂行することができます。しかし、インターンに過度な期待をするべきではありません。なぜなら、あるタスクにおいて最も精通しているのはあなた自身であり、インターンではありません。
現在の文脈では、その能力を過大評価しやすい一方で、将来的な潜在能力を過小評価してしまいがちです。市場に投入されてからわずか1年しか経っていないため、まだ誰もが簡単に扱える製品ではありません。したがって、未熟なインターンとして見ることは、現状において適切なアプローチかもしれません。
まず、自分自身作れる
私の上司であるAさんはこんな言葉を残しました:
リーダーとして、部下に任せる仕事は、自分もできなければならない。
この言葉の裏にはこんな意味があります:自分が部下の仕事を理解しているからこそ、驚くことなく、適切に命令や指示を出すことができる。
この言葉は、ChatGPTにも非常に当てはまります。
大型モデルは容易に逸脱する可能性があり、万能ではないため、私たちが大型モデルを使用する際には、繰り返し性の高い作業を代行させることが多いです -- まさに自分の部下に仕事を任せるように。私たちが望むタスクについて、私たち自身が何の手がかりも持っていなければ、ChatGPTは確かにいくつかのヒントを提供できますが、完全な指示がなければ、望む結果をもたらすことはできません。
次、表せる能力
なぜ他の方がChatGPTを上手に使えるのに、私はただChatGPTと雑談することしかできず、何かを頼むと期待通りの結果が得られないのかと。
これは、表現力の問題かもしれません。
私たちが、ChatGPTに任せたい仕事が自分でできるものであることを確信しているなら、次のステップはその仕事の要求と手順をChatGPTに伝えることです。多くの人がこの点でつまずいています。
例えば、あるウェブページを作成していて、その右下に小さな球を配置し、マウスでクリックすると画面の周りを跳ねて、各跳ねるごとに減衰値を設定し、最終的に球が停止するようにしたいとしましょう。
この要求を新しいインターンに伝えたところ、彼は賢く、すぐにJavaScript
でコードを書いてくれました。
しかし、コードを実行してみると:
- 球の跳ねる速度が正しくなく、自然に見えなかった
- 球が減衰する際、摩擦力だけを考慮しており、重力は考慮されていなかった
しかしながら、インターンは反論します:でも、上司、これらの要求は私に伝えられませんでしたよ。
この例は、中大型企業で働いたことのある人には馴染み深いものでしょう。チームが大きくなると、コミュニケーションは最大の障壁となります。この障壁は双方から生じます:
- 私はちゃんと説明したか
- あなたはちゃんと理解したか
私たちがインターンであれ、従業員であれ、ChatGPTであれ、何かをさせる際、その仕事の完全な説明は非常に長くなりがちですが、私たちは同僚との默契度を過大評価し、最も重要な部分だけを伝え、インターンが未経験者であることを見逃しがちです。
したがって、ChatGPTに要求をする際は、インターンとして扱うべきです:
- 頭の中で考えていることをすべて文字で表現する
- 必要であれば、正面から言い、逆からも言う
- フェイマン理論に従って、ChatGPTに自分の要求を自分の言葉で表現させ、要求が正しく理解されていることを確認する
ここで疑問に思うかもしれません。もし私がピクセルレベルで要求を説明するなら、自分でやるのと何が違うのかと。
違いはありません。前のセクションで強調した「繰り返し性が高い」という言葉に注目してください。もし、あなたが行う作業が将来的に繰り返す必要がないものであれば、一度自分で行うほうが、多くのコミュニケーション時間を節約できます。
すべての仕事が他人やChatGPTに任せるには適しているわけではありません。
そして、問題を解体する
「Aさん、私はあなたの上司のBさんです。XXXプログラムを書いてください。要求はピクセルレベルでしっかり書いてありますから、それを参考にコードを書いてください。明日の朝5時までにコードを見せてください」
うん、Bさんはすでに、インターンのAさんに要求をピクセルレベルで提示する方法を知っているようです。
しかし、翌日、BさんがAさんが提出したコードを見たとき、実装結果が完全に逸脱していた。
なぜでしょうか?
ここでは、2つの非科学的な概念を紹介したいと思います:
- 対話の長さ
- 実装の偏差
やはりインターンを例に取りましょう。10年の経験があるあなたは考えるかもしれません:
あなたがAさんと2時間にわたり一気に話し、その2時間の指示に従って仕事をするように言ったとして、彼が全部覚えていると思いますか?
あなたがAさんに一気に80個の仕事をさせ、各仕事が上下関係で繋がっているとして、彼が全ての仕事を正確に実行し、80個目の仕事であなたが望む完璧な結果を出すと思いますか?
物理的な現実において、これらの答えはおそらく否定的です。
なぜなら、対話が長くなるほど、インターンの理解能力は低下するでしょうし、実際には、あなたの表現の精密さも低下するでしょう。このようなマイナス同士の状況では、最終的な実装の偏差は大きくなるでしょう。そして、もしあなたがインターンに行わせたいことが複数の小さなタスクの連鎖で、各タスクが小さな実装偏差を生じる場合、最終的には大きな実装偏差が必然です。
だから、長文に対する大型モデルの理解能力を過大評価せず、また、長文での自分の論理的な表現力を過大評価せず、さらに、大型モデルが要求を正確に実現する能力を過大評価しないでください。