
Generated Knowledge Prompting
"知識が不足している質問に対してAIが自ら関連知識をまず生成してから回答したら?"
Introduction
Generated Knowledge PromptingはAIモデルが質問にすぐ回答する代わりに、まずその質問に関連する有用な知識を生成した後、これを活用してより正確な回答を作るプロンプティング技法です。2022年のLiu et al.の研究で初めて提案されたこの方法は、常識推論(commonsense reasoning)課題で驚くべき性能向上を示しました。このプロンプティング方式は以下のような問題点を解決するために考案されました。
Motivation
外部知識の必要性および効果に対する不確実性:
ますます大きくなる大規模事前学習言語モデル(LLM)が膨大な量のテキストデータで事前学習されるにつれ、常識推論のために外部知識が依然として必要なのかという疑問が存在していました。既存研究では外部知識が性能向上に役立つと報告されていましたが、モデルの規模が大きくなるほどその効果が希薄になる可能性があるという意見もありました。
外部知識統合の柔軟性不足:
外部知識が特定タスクに効果的であることが明らかになっても、これを統合する過程で柔軟性が不足するという根本的な困難がありました。
適切で十分なカバレッジを持つknowledge baseの不在: 多くの常識推論ベンチマークは質問に対する適切なknowledge baseを十分に備えていません。
タスク別カスタマイズされた監督(task-specific, custom supervision)の必要性: 以前の方法は知識統合のために特定タスクに特化した手作業監督(custom supervision)を要求する場合が多く、これは新しい事前学習モデルを多様なタスクに迅速に適用することに大きな負担となりました。
structured knowledge baseへの依存性: 多くの既存アプローチは構造化されたknowledge baseにアクセスする必要があり、これは該当knowledge baseがないドメインや最新情報が必要な場合に限界として作用しました。
知識統合のための共同ファインチューニング(joint finetuning)の必要性: 一部の既存方法は知識統合のためにモデルを共同でファインチューニングする必要がありましたが、これはモデル適用の柔軟性を低下させます。
Method
基本動作原理:
知識生成(Knowledge Generation): AIが質問関連知識をまず生成
知識統合(Knowledge Integration): 生成された知識を基に最終回答生成
実際の使用例示
一般的な質問-回答 vs Generated Knowledge Prompting:
❌ 一般的な方式:
質問: "ゴルフでより高いスコアを得ることが目標ですか?"
回答: "はい、正しいです。"
✅ Generated Knowledge Prompting:
質問: "ゴルフでより高いスコアを得ることが目標ですか?"
1段階 - 知識生成:
"ゴルフは精密なクラブとボールスポーツで、競技するプレイヤーが多様なクラブを使ってコースの様々なホールにボールを入れるゲームです。最も少ないストロークでコースを完走することが目標です。各ホールでの総ストローク数を合算してスコアを計算し、最も低いスコアを受けたプレイヤーが勝利します。"
2段階 - 知識基盤回答:
"いいえ、ゴルフではより低いスコアを得ることが目標です。各ストロークが1点として計算され、最も少ないストローク(最も低いスコア)でコースを完走するプレイヤーが勝利します。"
Details
🏅成果
ゼロショット(Zero-shot)設定でも大幅改善: 訓練データなしにすぐ適用するゼロショット推論モデルの性能をNumerSense、CSQA、QASCで7%から10%まで大幅に向上させました
ファインチューニング済み(Finetuned)モデルも改善: すでにファインチューニングされた最先端推論モデルの性能も一貫して改善させました(ゼロショットほどではないが改善幅が小さい)
🔍 核心特徴
Generated Knowledge Promptingの最も革新的な点は、タスク別特殊訓練や構造化された知識ベースなしでも性能を向上させることができることです。
📊 2つの実装方式
1. 単一プロンプト方式(Single Prompt):
質問に対する関連知識を4個生成した後、これを基に回答を作成してください。
質問: [質問内容]
2. 二重プロンプト方式(Dual Prompt) - 推奨:
1段階プロンプト:
"次の質問に関連する有用な知識を生成してください: [質問]"
2段階プロンプト:
"知識: [1段階で生成された知識]
質問: [元の質問]
回答:"
二重プロンプト方式がより長い内容を安定的に生成できるため推奨されます。
🧠 効果的な知識生成のための核心要素
Few-shotデモ提供 効果的な知識生成のためには、いくつかの実演例示を提供することが重要です。
例示テンプレート:
質問: "ペンギンはいくつの翼を持っていますか?"
知識: "鳥は2つの翼を持っています。ペンギンは鳥の一種です。"
質問: "人間は通常いくつの手足を持っていますか?"
知識: "人間は2つの腕と2つの脚を持っています。"
質問: [新しい質問]
知識:
💡 研究で実証された興味深い事実
モデルサイズと関係なく効果 小さな推論モデルでも性能向上幅が大きく、さらに知識生成モデルと同じサイズの推論モデル(GPT-3)でも9.0%の利益を得ることができ、モデルがすでに持っている有用な知識を増幅(amplify)させる効果があることを示しました。
適切な知識文章数生成 各質問に対して十分な数の知識文章(例:ほとんどの場合20文章)を生成することが良いです。一般的に知識文章の量が増加するほど性能が向上しますが、あまりに多くの知識文章が導入されるとノイズが多くなって性能が低下する可能性があるため、適切な線で飽和状態に到達します。
いつ使用すべきか?
外部知識が常識推論に役立つ時
構造化された知識基盤が不足したり不適切な時
この方法は構造化された知識基盤へのアクセスや知識統合のための共同ファインチューニングを必要としないため、適切なドメイン内知識基盤がない場合に最も価値があります。
GPT、Claudeのような大規模事前学習された言語モデルを活用する時
研究結果によると、特にGPT-3のような言語モデルで有用な知識を生成でき、知識生成モデルのサイズが大きいほど(例:GPT-3 6.7Bまたは175B)より有用で信頼できる知識を生成します。
ゼロショット(zero-shot)およびファインチューニング(finetuned)設定両方で
ゼロショット推論モデルを7%から10%まで大幅改善
ファインチューニングされた推論モデルの基本性能も着実に向上
柔軟性と適応性を追求する時
知識統合のためにタスク別カスタマイズされた監督やファインチューニングが不要で、既存方法よりもはるかに柔軟で転送しやすく、工学的に効率的です。
軽量推論モデルを使用する時
小さな推論モデル(例:小さなT5モデル)を使用する時、性能向上が大幅に増加し、高性能の軽量推論モデルを可能にします。
Limitations
プロンプト設計への依存性および誤用時の性能低下可能性:
この方法論を新しいタスクに適用する際は、そのタスクに特化したプロンプトを慎重に作成するのにある程度の専門知識が必要な場合があります。
誤って設計されたプロンプトを使用したり適切に実装されない場合、むしろ常識推論システムの性能を低下させるリスクがあります。
生成される知識量に対する敏感性:
生成される知識文章の量(M)が増加するにつれて性能が向上しますが、特定の臨界点(例:M=20)を超えると性能が飽和したりむしろ減少する可能性があります。これはあまりに多くの知識を導入する場合、ノイズの多い知識が生成される可能性があるためです。
最高品質の検索ベース知識には及ばない可能性:
この技法は一般的にテンプレートベース知識生成や関連性の低い検索ベース知識より優秀ですが、データセット構築に使用された「ゴールドスタンダード(gold)」知識のような非常に高品質のドメイン内検索知識に比べては性能が著しく落ちる可能性があります。例えば、QASCデータセットの場合、生成された知識は検索された知識より性能が低く現れました。