Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Prompt Engineering

プロンプトエンジニアリングは、再学習せずにAIモデルの出力を調整するため、モデルに与える指示、コンテキスト、例を設計する手法です。LLMからビジョンモデルまでを対象とします。

プロンプトエンジニアリングとは、モデルの重みを変更せずにモデルの出力を導くため、指示、コンテキスト、例、要求する出力形式など、生成モデルに与える入力を設計する実践です。GPT-3の登場とともに広まりました。Language Models are Few-Shot Learners(2020年)でOpenAIは、タスクを説明していくつかの例を示すプロンプトがあれば、1750億パラメーターのモデルは勾配更新なしで新しいタスクを実行できることを示しました。この能力を論文ではインコンテキスト学習と呼んでいます。現在、プロンプトは大規模言語モデル(LLM)、ビジョン言語モデル(VLM)、テキストから画像を生成するモデル、プロンプト可能なビジョンモデルを制御する主な手段です。

主な手法#

  • 指示とロール: システムプロンプトでモデルの役割、ルール、対象読者を設定し、見出しやXML形式のタグなどの区切り文字で、指示と処理対象のデータを分離します。
  • Few-shot例: 入出力の例を示すことで、説明だけの場合よりタスクと回答形式を正確に伝えられます。例を含まないプロンプトはzero-shotです。
  • 出力形式: リストや、指定したキーを含むJSONなど、プロンプトで形式を指定します。コードで結果を解析する必要がある場合、構造化出力ではリクエストに頼るのではなく、デコード時にスキーマを適用します。
  • Chain-of-thoughtプロンプティング: 回答の前に中間推論ステップを求める手法で、複数段階の問題の精度を高めます。
  • プロンプトチェーン: 複雑なタスクを、コードでつないだ、範囲を絞った個別タスクを持つ複数のプロンプトに分割します。
  • 取得したコンテキスト: 検索で見つかった文書やデータを挿入し、モデルが記憶ではなく提供された事実に基づいて回答できるようにします。

提供された事実によってハルシネーションは減少します。また、その配置も重要です。Lost in the Middleの研究では、長いコンテキストウィンドウの冒頭または末尾にある情報をモデルが最もよく利用し、中央に埋もれた情報を最も利用しにくいことが明らかになりました。

例の効果は、命令チューニングを一度も受けていないベースモデルで最もよく分かります。このコード例では、Hugging Face Transformersで読み込んだGPT-2に、3つの例を含む場合と含まない場合で同じ指示を与えます。

from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")

# The same instruction, without and with three worked examples that show the answer format
instruction = "Convert each country to its capital city.\n"
prompts = {
    "zero-shot": instruction + "Italy:",
    "few-shot": instruction + "France: Paris\nJapan: Tokyo\nCanada: Ottawa\nItaly:",
}

for name, prompt in prompts.items():
    inputs = tokenizer(prompt, return_tensors="pt")
    output = model.generate(**inputs, max_new_tokens=4, do_sample=False, pad_token_id=tokenizer.eos_token_id)
    completion = tokenizer.decode(output[0, inputs.input_ids.shape[1] :])
    print(f"{name}: {completion!r}")

zero-shot: '\n\nItaly is'とfew-shot: ' Rome\nSpain:'が出力されます。指示だけの場合、GPT-2はイタリアについての文章を書きましたが、3つの例を与えると期待される形式で「Rome」と回答し、次の国についてもパターンに沿って続けました。

プロンプト設計は経験的に行います#

わずかな表現やレイアウトの変更でも、結果は大きく変わることがあります。Melanie Sclarらは、区切り文字、大文字・小文字、空白などの書式変更だけで、LLaMA-2-13Bの精度に最大76ポイントの差が生じることを測定しました。この感度は、モデルの大型化、例の増加、命令チューニング後も残りました。そのため、プロンプトはコードと同じように開発します。既知の正解出力がある固定入力セットでテストし、失敗をもとに改訂して、バージョン管理します。これはLLMOpsの定型的な作業です。

このサイクルは自動化できます。Yongchao Zhouらが開発したAutomatic Prompt Engineer(APE)は、LLMに指示の候補を提案させ、例で最も高いスコアを得たものを採用します。Large Language Models Are Human-Level Prompt Engineersでは、24個のタスクのうち19個で、APEの指示が人間の作成した指示と同等以上の成績を示しました。

ビジョンモデル向けのプロンプト#

コンピュータービジョンでは、プロンプトにはいくつかの形式があります。Stable Diffusionなどのテキスト画像生成モデルは、被写体、スタイル、照明、構図の説明と、避ける対象を列挙したネガティブプロンプトに応答します。プロンプト可能なセグメンテーションモデルは、点やボックスなどのビジュアルプロンプトを受け付けます。また、MetaのSAM 3は短い名詞句も受け付け、指定された概念のすべてのインスタンスをセグメント化します。Ultralytics Platformはこれをテキストプロンプトによる自動アノテーションに使用します。

オープンボキャブラリー検出器は、クラス名をプロンプトに変換します。Ultralytics YOLOEは、set_classes()で指定されたクラス(「forklift」や「double-decker bus」など)を検出・セグメント化します。領域特徴とその名前のテキスト埋め込みを比較するため、表現によって検出対象が直接変わります。外観に基づいて照合するため、「damaged」「left-most」「the one being carried」など、状態、位置、比較に依存するプロンプトには信頼できる視覚的手掛かりがありません。日常的なカテゴリに近い名前が最も効果的です。

  • プロンプトチューニング: ラベル付きデータに対する勾配降下法で連続値のプロンプトベクトルを学習します。プロンプトエンジニアリングでは、自然言語でプロンプトを手動作成します。
  • ファインチューニング: ラベル付きデータセットで学習し、モデルの重みを変更します。プロンプトエンジニアリングではモデルを変更せず、推論時に処理します。
  • コンテキストエンジニアリング: 取得したドキュメント、ツールの結果、メモリーなど、アプリケーションでモデルのコンテキストに入るすべてを扱います。プロンプトエンジニアリングは、指示と例の作成を扱う領域です。
  • プロンプトインジェクション: モデルが読み取るテキストや画像に指示を隠し、開発者のプロンプトを上書きさせる攻撃です。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう