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

APE(Automatic Prompt Engineer)


    "人間が手動で作ったプロンプトをAIが上回ることができるだろうか?"

    Introduction

    APE(Automatic Prompt Engineer)は2022年にZhou et al.が提案したプロンプト自動生成および選択フレームワークです。既存の手動的なプロンプトエンジニアリング方式とは異なり、AIが自ら最適なプロンプトを生成し評価して選択する自動化されたシステムです。

    Motivation

    • 大規模言語モデル(LLM)制御の困難

      • GPT-3のような巨大言語モデル(LLM)は自然言語命令、つまりプロンプト(prompt)を通じて非常に多様なタスクを実行できる驚くべき能力を示します。まるでLLMが自然言語指針で指定された「プログラム」を実行する「汎用コンピュータ」のように動作するのです。しかし問題は、これらのモデルを私たちが望むとおりに正確に動作させることが困難であるということです。望む結果を得るためにはプロンプトの品質が非常に重要です。

    • 手動プロンプトエンジニアリングの非効率性

      • これまでほとんどの効果的なプロンプトが人の手作業で作られました。つまり、人が何度も試行し失敗しながら最も良いプロンプトを見つけなければなりませんでした。これはLLMがプロンプトを処理する方式が人にとって直感的でなく、プロンプトの品質は実際にタスクを実行してみなければ分からないからです。このような過程はまるで「ブラックボックス最適化」問題のようで、人の労力が非常に多く必要です。特に、LLMの規模が大きくなりAPIでのアクセスが制限されるにつれ、勾配ベースのプロンプトチューニング方式は非実用的になります。

    Method

    APEは以下のような3段階プロセスで動作します:

    1段階: 候補生成(Proposal Generation)
    入出力例示 → LLM → 多様な指示文候補
    
    2段階: 実行および評価(Execution & Scoring)
    各候補指示文 → 対象モデル実行 → 性能スコア計算
    
    3段階: 最適選択(Selection)
    性能スコア比較 → 最高スコア指示文選択
    画像

    Details

    1. 人間レベルを上回る性能

    APEが生成したプロンプトは人間が作成したプロンプトと同等またはより良い性能を示しました。InstructGPTモデル(Ouyang et al., 2022)を使用する際、APEは24個のNLPタスクで人間がエンジニアリングしたプロンプトを上回り、0.810のIQM(Interquartile Mean)を達成しました(人間は0.749)。

    2. 予想外の発見: "Let's think step by step"の改善

    主要成果の一つは有名なChain-of-Thoughtプロンプトの改善です:

    APEは"Let's think step by step."のような既存の人間が設計したCoTプロンプトよりも良いプロンプトを自動的に見つけ出しました。APEは"Let's work this out in a step by step way to be sure we have the right answer."というプロンプトを生成し、MultiArithで78.7%から82.0%に、GSM8Kで40.7%から43.0%に性能をさらに向上させました。

    3. 多様な生成方式サポート

    Forward Mode Generation: → AIが最後の空欄に答えを書く必要:「答えが5になる計算をしてください」

    問題: 2 + 3 = ?
    答: 5
    
    問題: 4 + 1 = ?
    答: 5
    
    問題: 6 - 1 = ?
    答: 5
    
    この例示を見てどんな規則か当ててみてください: ______
    • メリット:

      • ほとんどの事前訓練されたLLMで別途調整なしにすぐ動作します。LLMがテキストを左から右に生成する基本方式に適合します。

    • デメリット:

      • 命令語が一般的にテキストの開始部分に位置することが自然であるにもかかわらず、この方式はLLMが命令語をプロンプトの終端部で予測するよう要求します。これは命令語が自然な位置にないため、モデルの性能に影響を与える可能性があります。

    Reverse Mode Generation: → AIが中間の空欄を埋める:「答えが5になる計算をしてみて」

    友達に"______"しろと言ったらこんな結果が出ました:
    
    2 + 3 = 5
    4 + 1 = 5
    6 - 1 = 5
    • メリット:

      • より柔軟なアプローチを提供し、命令語がテキスト内のどの位置にでもあるようにできます。これは前方向生成方式の限界を補完します。

      • LLMの**「空欄埋め(infilling)能力」**を活用して欠落した命令語を推論します。T5、GLM、InsertGPTのような特定のLLMに適合します。

      • BIG-Bench(googleが作った推論能力テスト)タスクおよびTruthfulQA(一般常識テスト)のような多様なタスクで命令語候補生成に使用されました。

      • TruthfulQA実験では人間が設計したプロンプトより優秀な性能を示し、モデルが真実性および/または情報性のような望ましい動作を志向するよう誘導できることを実証しました。

    • デメリット:

      • この方式を使用するにはT5、GLM、InsertGPTのように空欄埋め機能が特化されたLLMが必要です。すべてのLLMですぐに使用できるわけではありません。

      • 一部のモデル(例:GLM-130B)の場合、空欄埋め機能が非常に短いテキストを生成するよう訓練されているため、命令語の長さが長くなると性能が低下する可能性があります。これによりGLMはゼロショット性能が最も良くありませんでした。

    4. 💡 効果的使用のための核心ティップ

    a. 十分な入出力例示提供

    • 推奨量: 5-10個の多様な例示

    • 品質 > 量: 多様性と代表性がある例示選択

    • 境界ケース含有: 困難な場合も一部含有

    b. 適切な評価指標選択

    # 実行正確度(Execution Accuracy)
    accuracy = correct_predictions / total_predictions
    
    # ログ確率(Log Probability)
    log_prob = log P(correct_answer | prompt + input)

    c. 反復的改善活用

    APEはMonte Carlo検索を通じて既存の良い候補を基盤として意味的に類似した変形を生成し、性能を段階的に改善できます。

    Limitations

    • プロンプトの転移性不足

      • 一つのLLM(例:InstructGPT)でAPEを通じて最適化されたプロンプトが他の種類のLLM(例:GPT-3)ではうまく動作しない可能性があります。これはプロンプトが特定のモデルに合わせられることを意味し、すべてのLLMに汎用的に使用できる「最高のプロンプト」を一度に見つけることが困難であるという限界があります。

    • メタプロンプトに対する敏感性

      • APEがプロンプト候補を生成する際に使用する「メタプロンプト」(つまり、「こんな質問-回答例示を見た時、これを解決するのに最も適切な命令は何だろう?」のような質問の形式)が最終性能に大きな影響を与えます。これは結局「メタプロンプトエンジニアリング」というもう一つの最適化課題が残っていることを示唆します。

    • Few-shot学習時の過学習可能性

      • APEがZero-shot(例示なし)環境で最高のプロンプトを見つけたとしても、特定の場合にはそのプロンプトにFew-shot例示を追加するとむしろモデル性能が落ちる現象が観察されました。これはZero-shotに最適化されたプロンプトがFew-shotシナリオに常にうまく合うわけではない可能性があることを示します。

    • 反復探索(Iterative Search)の制限的改善

      • APEはより良いプロンプトを見つけるために反復的に候補を生成し評価できますが、論文では数回の反復後には性能改善が微々たるものになると言及しています。これは反復探索が常に大きな利益を与えるわけではないということを意味します。

    あなたへのおすすめ