ファウンデーション・モデルは、事実上正確でない出力を生成することがあります。 プロジェクトにとって事実の正確度が重要な場合は、これらのモデルが時々事実を誤って取得する可能性がある理由と、正しい事実に基づいて生成された出力を得る方法を学習することにより、成功に向けて自分をセットアップします。
ファウンデーション・モデルが事実を誤って取得する理由
ファウンデーション・モデルは、以下のいくつかの理由により、誤った事実を取得する
- 事前トレーニングでは、ファクトではなく単語の関連付けが作成されます。
- 事前トレーニング・データ・セットに古いファクトが含まれています
- 事前トレーニング・データ・セットには、非公式またはドメイン固有の事実と専門用語は含まれません。
- サンプリングのデコードが事実から外れる可能性が高い
事前トレーニングでは、ファクトではなく単語の関連付けが作成されます。
事前学習中、foundation modelは事前学習データセットで遭遇した単語(トークン)の語彙を構築する。 また、事前トレーニング中に、これらの単語間の統計的な関係がモデルの重みでエンコードされます。
例えば、「エベレスト」は「世界で最も高い山」の近くに、多くの記事、書籍、スピーチ、その他の一般的な事前トレーニング・ソースとしてしばしば出現します。 その結果、事前にトレーニングされたモデルによって、「世界で最も高い山は」というプロンプトが正しく完了する可能性があります。 「エベレスト山」という出力があります
これらの単語の関連付けにより、事実がこれらのモデルにもエンコードされているように見えることがあります。 非常に一般的な知識と不変の事実については、最も高い山の例のような単純なプロンプトで事前にトレーニングされたファウンデーション・モデルを使用して、事実上正確な出力を生成することに成功する可能性があります。 ただし、正確度が重要なアプリケーションでファウンデーション・モデルを使用する場合に、事前にトレーニングされた単語の関連付けのみに依存することはリスクの高い戦略です。
事前トレーニング・データ・セットに古いファクトが含まれています
事前トレーニング・データ・セットの収集と事前トレーニング実行の実行には、かなりの時間 (場合によっては数カ月) かかることがあります。 モデルが数年前からデータ・セットに対して事前にトレーニングされている場合、モデルの重みにエンコードされたモデルの語彙と単語の関連付けは、現在の世界のイベントや新しく人気のあるテーマを反映しません。 このため、「サッカーのワールドカップ (W 杯) で最近優勝した選手」というプロンプトを出すと、 数年前に情報について事前にトレーニングされたモデルに対して、生成された出力は古いものになります。
事前トレーニング・データ・セットには、非公式またはドメイン固有の事実と専門用語は含まれません。
The Pile(Wikipedia)のような一般的なfoundation modelの事前学習データセットには、何億もの文書が含まれている。 エベレストがいかに有名であるかを考えれば、foundation modelモデルが「世界で最も高い山」と「エベレスト」の関係をコード化していると期待するのは妥当なことだ。 しかし、ある現象、人物、概念がほんの一握りの記事でしか言及されていない場合、foundation modelモデルがそのトピックに関する単語の関連性を重みにエンコードしている可能性は低い。 事前トレーニング・データ・セットになかった情報について事前トレーニング・モデルにプロンプトを出すと、事実上正確な生成出力が生成されることはほとんどありません。
サンプリングのデコードが事実から外れる可能性が高い
デコードとは、生成された出力で単語 (トークン) を選択するためにモデルが使用するプロセスです。
- 貪欲なデコードでは、常に確率が最も高いトークンが選択されます。
- サンプリングのデコードでは、確率分布から疑似ランダムにトークンが選択されます。
貪欲なデコードにより、より予測可能で反復性の高い出力が生成されます。 サンプリングのデコードはよりランダムで、「クリエイティブ」であると感じます。 事前トレーニング・データ・セットに基づいて、「最も高い山」の後に続く可能性が最も高い単語が 「エベレスト山」です欲張りのデコードではその事実上正しい出力を確実に生成できますサンプリングのデコードでは他の山の名前が生成されたり山ではないものが生成されたりすることがあります
生成された出力を正しいファクトで挽く方法
実際の正確さを、事前にトレーニングされた単語の関連付けのみに依存するのではなく、プロンプト・テキストにコンテキストを指定します。
プロンプト・テキストでコンテキストを使用して、事実を確認します。
foundation modelモデルに出力を生成するよう促すと、生成された出力に含まれる単語(トークン)は、モデルの語彙に含まれる単語とプロンプト・テキストに含まれる単語の影響を受けます。 プロンプト・テキストを使用して、事実上正確な単語の関連付けを向上させることができます。
例 1
以下に、お気に入りの色を宣言する文をモデルに完成させるためのプロンプトを示します。
My favorite color is
好みの色を知っているだけでは、モデルが正しい出力を確実に生成する方法はありません。
代わりに、モデルの事前トレーニング・データに記載されている色から色が選択されます。
- 欲張りのデコードが使用されている場合、事前トレーニング・コンテンツのお気に入りの色に関する記述で最も頻繁に出現する色が選択されます。
- サンプリング・デコードを使用すると、トレーニング前のコンテンツで最も頻繁に言及される色から無作為に色が選択されます。
例 2
以下に、事実を確認するためのコンテキストを含むプロンプトを示します。
I recently painted my kitchen yellow, which is my favorite color.
My favorite color is
このような事実上正確なコンテキストを含むテキストを使用してモデルにプロンプトを出すと、モデルが生成する出力は正確である可能性が高くなります。
プロンプトにコンテキストを含めるその他の例については、以下のサンプルを参照してください。
あまりクリエイティブなデコードを使用しない
必要なファクトを含むコンテキストをプロンプトに含めると、欲張りデコードを使用することで正確な出力が生成される可能性があります。 出力に何らかの種類が必要な場合は、 Temperature
、 Top P
、 Top K
などのパラメーターの低い値を使用して、サンプリングのデコードを試すことができます。 ただし、サンプリング・デコードを使用すると、出力が不正確になるリスクが高くなります。
取得の拡張生成
取得拡張された生成パターンは、コンテキストをプロンプトにプルする手法をスケールアウトします。 知識ベース (Web ページ内のプロセス文書、PDF ファイル内の法的契約、販売する製品のデータベース、C++ コード・ファイルの GitHub リポジトリー、またはその他の情報のコレクションなど) がある場合は、検索拡張生成パターンを使用して、その知識ベース内の情報に基づいて事実上正確な出力を生成できます。
取得拡張世代には、以下の 3 つの基本ステップがあります。
- 知識ベース内の関連コンテンツの検索
- 最も関連性の高いコンテンツをコンテキストとしてプロンプトにプルします
- 結合されたプロンプト・テキストをモデルに送信して出力を生成
詳細については、検索補強生成を参照のこと
親トピック: プロンプトのヒント