Menu

Zero-shot プロンプティングとは?例と使いどき

Zero-shot プロンプティングとは、答えの例を見せずに指示だけでモデルにタスクをさせる方法です。ChatGPT、Claude、Gemini のふだんの使い方の大半がこれで、よくあるタスクを正確に指示すればよく機能します。

このページのプロンプトはすべて編集でき、そのまま ChatGPT や Claude などの AI アプリで開けます。

Zero-shot プロンプティングとは、望む答えの例を一切見せずに、指示だけでモデルにタスクをさせることです。「この段落をスペイン語に翻訳して」や「このメールを2文で要約して」は Zero-shot プロンプトです。チャットモデルのふだんの使い方はこれで、よくあるタスクならたいていこれだけで足ります。

Zero-shot の意味

機械学習では「shot」は実例のことです。この用語はチャットモデルより古いものですが、プロンプトの文脈で広まったのは Brown らの2020年の論文「Language Models are Few-Shot Learners」からです。この論文は GPT-3 を3つの設定で試しました。タスクの説明に、プロンプト内の実演を0回、1回、数回付けたもので、どの設定でも再学習はしていません。このモデルでは、たいてい例が数個あるほうが、ないよりも良い結果になりました。

それ以来、チャットモデルは指示に従うことを重点的に学習してきたので、今では素直な依頼がとてもよく機能します。Zero-shot プロンプトは、まさにモデルが学習してきた状況です。誰かが仕事を言葉で説明し、それをやってもらうことを期待しています。

Zero-shot はコンテキストがゼロという意味ではありません。良い Zero-shot プロンプトでも、読み手を示し、入力を貼り付け、形式と制約を説明します。省くのは、完成した出力の例だけです。

うまく書けた Zero-shot プロンプト

下のプロンプトは、出力の例を使わず、出力の正確な説明だけで、会議メモからアクションアイテムを抜き出します。パートをオフにして、どの行が効いているかを確かめてください。

会議メモからアクションアイテムを抜き出す
Parts
この会議メモからアクションアイテムを抜き出してください。
このリストはチームのタスク管理ツールに入れるので、どの項目にも担当者がちょうど1人必要です。
1項目につき1行。担当者、コロン、動詞で終わるタスク、メモに期限があれば括弧に入れた期限、の順に書いてください。
誰かがやると引き受けた作業だけを含めてください。議論や、誰も引き受けなかったアイデアは除いてください。担当者のいないタスクは、担当者を「未割り当て」と書いてください。
スプリント定例(火曜) Priya が金曜までにログインのタイムアウトを直す。 新しい CI サービスへの移行について話したが、結論は出ず。 Tom が 2.4 のリリースノートを書く。 誰かがオンボーディング資料を更新しないといけない。 Lena:Tom のノートは木曜までに私がレビューします。
Try it
Example replyReplies vary between models and runs.

Priya:ログインのタイムアウトを直す(金曜まで) Tom:2.4 のリリースノートを書く 未割り当て:オンボーディング資料を更新する Lena:Tom のリリースノートをレビューする(木曜まで)

形式の行が、例が果たすはずの役割を果たしています。各行の形を正確に書いているので、まねるものが要りません。これをオフにすると、返答は自分で形を選び、名前を太字にした箇条書きになることがよくあります。読むぶんには問題ありませんが、タスク管理ツールにはそのまま貼り付けられなくなります。制約をオフにすると、CI についての議論がタスクとして出てくることがあります。結論の出ていない話題は数えない、とモデルに伝えていないからです。

Zero-shot で十分なとき

Zero-shot がうまくいくのは、モデルがあなたの言葉からすべてを推測できるときです。

  • タスクがよくあるものである。 要約、翻訳、説明、文法の修正、明確な仕様に沿った関数の作成は、どれもモデルが学習で数えきれないほど見てきたタスクです。
  • 出力を正確に説明できる。 「1項目1行、担当者が先」は例と同じくらい明確です。プログラムが読む形式の説明方法は構造化出力を参照してください。
  • カテゴリが文字どおりの意味である。 レビューを肯定的と否定的に分けるのに、たいてい例は要りません。そのラベルはほぼ誰にとっても同じ意味だからです。

代わりに例を足すべきとき

言葉にしにくいものもあり、Zero-shot プロンプトが外しはじめるのはそこです。

  • 自分たち独自の線引き。 サポートチームが「ログインできない」をバグではなくアカウントの問題として分類しているなら、モデルにはそれがわかりません。モデルは多くの人がとる解釈を選びます。
  • 社内の文体。 チームのコミットメッセージやニュースレターのトーンは、説明するより見せるほうが簡単です。
  • 何度もあと少しで外れる。 指示を2回言い換えても出力が同じように少しずれるなら、言い換えるのをやめて、正しい答えを2つか3つ見せてください。

これが Few-shot プロンプティングです。まず Zero-shot で始め、返ってきたものを見て、間違えている特定の点についてだけ例を足す、という習慣がおすすめです。

Zero-shot Chain-of-Thought

Kojima らの2022年の論文「Large Language Models are Zero-Shot Reasoners」は、「Let's think step by step(ステップごとに考えてみましょう)」という1文を加えるだけで、例をまったく使わなくても、大規模モデルが算数、記号、論理の問題で目に見えて良くなることを発見しました。このフレーズによってモデルは答えの前に途中の手順を書き出し、書いた各ステップが次のステップのコンテキストになります。この手法では呼び出しを2回使いました。1回目で推論を生成し、2回目で最終的な答えを求めます。

下のブロックでは、1つ目のタブは即答を強い、2つ目のタブはモデルに考える余地を与えています。

電車は 9:40 に発車する予定です。実際には 25 分遅れて発車しました。所要時間はふだん 2 時間 35 分ですが、途中で 10 分遅れを取り戻しました。到着は何時ですか?時刻だけを答えてください。
Try it
Example replyReplies vary between models and runs.

12:40

1つ目の返答は、取り戻した 10 分を落としています。モデルが最初の数トークンで答えを確定させなければならないときに起きる種類のミスです。現在のモデルならどちらの書き方でもこの問題は正解するかもしれませんが、問題の手順が増えるほど差は大きくなります。2つ目の書き方にはもう1つ利点があります。すべてのステップが見えるので、答えがどこで間違ったかがわかります。

答える前に内部で推論するモデルは、頼まれなくてもすでにこの作業をしているので、「ステップごとに考えて」を加えても、返答が長くなる以外の効果はあまりありません。Few-shot 版を含むこのテクニックの詳細は Chain-of-Thought プロンプティングで扱っています。

Zero-shot と Few-shot の比較

Zero-shotFew-shot
プロンプトの中身指示、コンテキスト、入力同じもの+入力と答えの組をいくつか
向いている用途出力を説明しやすい、よくあるタスク独自のラベル、特殊な形式、社内の文体
コスト短いプロンプト長いプロンプト、1回あたりのトークンが増える
典型的な失敗あなたの解釈ではなく、いちばんよくある解釈を選ぶ例に偶然含まれたパターンをまねる

よくある質問

Zero-shot プロンプティングとは何ですか?

Zero-shot プロンプティングとは、出力の実例を見せずに、指示だけで言語モデルにタスクを与えることです。「このメールを2文で要約して」は Zero-shot プロンプトです。現在のチャットモデルは指示に従うよう学習されているので、Zero-shot プロンプトで日常のタスクの大半をうまく処理できます。

Zero-shot と Few-shot プロンプティングの違いは何ですか?

Zero-shot プロンプトはタスクを言葉で説明します。Few-shot プロンプトはそれに加えて、入力と望む答えを組にした例をいくつか示し、モデルがそのパターンをまねられるようにします。まず Zero-shot で始め、説明するより見せたほうが早い形式や区別を出力が何度も外すなら Few-shot に切り替えます。

なぜ Zero-shot と呼ぶのですか?

機械学習では「shot」は実例のことです。Brown らの2020年の GPT-3 論文「Language Models are Few-Shot Learners」は、プロンプトの中でタスクの実演を0回、1回、数回見せてモデルを試しました。これにより、Zero-shot、One-shot、Few-shot という呼び名がプロンプトの用語として定着しました。

Zero-shot プロンプティングがうまくいかないのはどんなときですか?

チームのカテゴリ分けや社内の文体のように、あなたしか知らないルールにタスクが依存しているとき、出力形式が特殊なとき、そしてモデルが急いで答えてしまう複数ステップの推論で苦戦します。最初の2つは例で直り、3つ目はステップごとに考えるよう頼むと改善します。

Zero-shot Chain-of-Thought とは何ですか?

答える前に推論するようモデルに頼む Zero-shot プロンプトのことで、「Let's think step by step(ステップごとに考えてみましょう)」を付け加える方法が最も有名です。Kojima らは2022年に、例なしのこの1文だけで、大規模モデルの算数と論理の問題の成績が上がることを示しました。

Coddy programming languages illustration

Coddyでコードを学ぼう

始める