HUOXIU

言語モデルを有効に活用します。温度や top-p などのコアパラメータを解析します。

編集者注: 大規模モデルの出力をより適切に制御するにはどうすればよいでしょうか?

この記事では、温度、top-p、top-k、頻度ペナルティ、存在ペナルティなどの一般的なパラメータをよりよく理解し、言語モデルの生成効果を最適化するために活用できるようにするためのいくつかの重要なパラメータを紹介します。

本稿では、これらのパラメータのメカニズムと、質と多様性のバランスをとる方法について詳しく説明します。温度を上げると多様性は高まりますが、質は低下します。Top-pとTop-kは、多様性を犠牲にすることなく質を向上させることができます。頻度ペナルティと存在ペナルティは、応答における語彙的および話題的な多様性を高めることができます。

最後に、読者の皆様の参考として、パラメータ設定に関する具体的な提案とテクニックを紹介します。適切なパラメータを選択することで、言語モデルのパフォーマンスを大幅に向上させることができ、プロンプトエンジニアリングにおいて非常に重要な部分となります。

翻訳はこちらです、お楽しみください!

著者 | サミュエル・モンゴメリー

編纂者:岳陽

🚢🚢🚢AIテクノロジーソフトウェアと技術交流グループへのご参加をお待ちしております!最新のトレンドを把握し、一緒に技術的な課題を探求しましょう!

PlaygroundやAPIを通じて言語モデルを使用する際、推論パラメータの選択を求められることがあります。しかし、これらのパラメータの意味(そして正しい使い方)は、多くの人にとって馴染みのないものです。

典型的なモデル推論インターフェースにおけるパラメータ選択のスクリーンショット。画像は著者提供。

この記事では、これらのパラメータを用いて大規模モデルにおける幻覚を制御し、モデルの出力に創造性を注入し、モデルの出力を最適化することを主な目的としたきめ細かな調整を行う方法を紹介します。プロンプトエンジニアリングと同様に、推論パラメータを調整することで、モデルのパフォーマンスを最大限に引き出すことができます。

この記事を読むことで、読者は5つの主要な推論パラメータ(温度、トップp、トップk、頻度ペナルティ、プレゼンスペナルティ)を完全に理解できるでしょう。また、これらのパラメータが生成されるコンテンツの品質と多様性に与える影響も理解できるでしょう。


さあ、コーヒーの準備はできましたか?さあ、始めましょう!

目次

01 背景情報

02品質、多様性、そして温度

03 Top-kとTop-p

04 頻度と存在のペナルティ

05パラメータ調整メモ

06 要約

01 背景情報

推論パラメータを選択する前に、いくつかの背景情報を理解する必要があります。これらのモデルが生成する単語をどのように選択するかについて説明しましょう。

言語モデルは文書を読み込む際に、それを一連のトークンに分解します。トークンとは、モデルが容易に理解できる小さなテキストの断片であり、単語、音節、文字などです。例えば、「Megaputer Intelligence Inc.」は5つのトークン(「Mega」「puter」「Intelligence」「Inc」「.」)に分解できます。

私たちがよく知るほとんどの言語モデルは、トークン列における次のトークンを繰り返し生成することで動作します。モデルが次のトークンを生成するたびに、トークン列全体を再読み込みし、次に出現するはずのトークンを予測します。この戦略は自己回帰生成と呼ばれます。

自己回帰トークン生成。

このGIFはEcho Lu[1]によって作成されたもので、Annie Surla[2]の写真(NVIDIA[3]から改変)が含まれています。

この変更は著作権所有者によって許可されています。

これは、ChatGPT が単語を 1 つずつ出力する理由を説明しています。つまり、ChatGPT はコンテンツを生成するときに単語ごとに出力するのです。

言語モデルは、シーケンス内の次のトークンを選択するために、まず語彙内の各トークンに尤度スコアを割り当てます。モデルはトークンを評価し、テキストの自然な継続を可能にするトークンには高い尤度スコアが与えられ、テキストの自然な継続を可能にしないトークンには低い尤度スコアが与えられます。

言語モデルは、シーケンス内の次のトークンを予測するために確率スコアを割り当てます。

元の画像はNVIDIA[3]のAnnie Surla[2]によって作成され、著作権所有者のEcho Lu[1]の許可を得て改変されました。

尤度スコアを割り当てた後、これらのスコアを考慮したトークンサンプリング方式を用いてトークンを選択します。このトークンサンプリング方式にはある程度のランダム性が組み込まれており、言語モデルが同じ質問に常に同じ回答をすることを防ぎます。このランダム性は、チャットボットなどのアプリケーションにとって貴重な機能となり得ます。

簡単に言うと、言語モデルはテキストをトークンに分解し、シーケンス内の次のトークンを予測し、ある程度のランダム性を導入します。このプロセスは、必要に応じて繰り返され、コンテンツを出力します。

02 品質、多様性、そして温度

しかし、なぜ私たちは2番目に良いトークン、3番目に良いトークン、あるいは最良のトークン以外のトークンを選ぼうとするのでしょうか?常に最良のトークン(確率スコアが最も高いトークン)を選んだ方がよいのではないでしょうか?通常はそうするでしょう。しかし、常に最良の応答を生成することを選択した場合、常に同じ応答が得られます。多様な応答を望む場合、多様性のためにある程度の品質を犠牲にする必要があるかもしれません。このように、多様性のために品質を犠牲にする手法は、品質と多様性のトレードオフと呼ばれます。

この文脈において、温度パラメータは機械に品質と多様性のバランスをとる方法を指示します。温度が低いほど品質は高く、温度が高いほど多様性は高くなります。温度がゼロに設定されている場合、モデルは常に最も高い確率スコアを持つトークンを選択します。その結果、生成されるレスポンスの多様性は失われますが、モデルは常に最も質の高いトークンを選択してレスポンスを生成します。

多くの場合、温度をゼロに設定したい場合があります。原則として、モデルに一度だけ渡す必要があるプロンプトについては、温度をゼロに設定する必要があります。これにより、高品質の応答が得られる可能性が高くなります。私のデータ分析作業では、エンティティ抽出、ファクト抽出、感情分析、その他ほとんどの標準的なタスクで温度をゼロに設定しています。

温度が高いと、スパムや錯覚的なコンテンツが増え、一貫性が失われ、回答の質が低下する可能性があります。しかし、より創造的で多様な回答が生まれる傾向もあります。複数の異なる回答が必要な場合にのみ、0以外の温度を使用することをお勧めします。

気温が高くなると、反応はより多様で創造的になりますが、ジャンクコンテンツ、矛盾、錯覚も増加します。

この画像はエコー・ルー氏[1]によって作成された。

なぜ同じプロンプトに対して2つの異なる回答が必要なのでしょうか?場合によっては、同じプロンプトに対して複数の回答を生成し、最適なものだけを残すことが有益な場合があります。例えば、プロンプトに対して複数の回答を生成し、最適なものだけを残す手法があり、これは多くの場合、温度0度を1回だけクエリするよりも良い結果をもたらします。もう1つのユースケースは、合成データの生成です。非常に優れた1つのデータポイントではなく、多くの異なる合成データポイントが必要な場合があります。これ(およびその他のケース)については後の記事で説明するかもしれませんが、より一般的には、プロンプトごとに1つの回答が必要です。温度の選択方法がわからない場合は、通常、0度を選択するのが無難です。

理論上は温度が0度であれば毎回同じ結果が生成されるはずですが、実際には必ずしもそうとは限りません。これは、モデルがGPU上で実行されるため、丸め誤差などの小さな計算誤差が発生しやすいためです。温度が0度であっても、これらの誤差によって計算に低レベルのランダム性が生じます。テキスト内のトークンを1つ変更するだけで意味が大きく変わる可能性があるため、小さな誤差が後続のトークン選択に連鎖的な変化を引き起こし、ほぼ完全に異なる出力結果をもたらす可能性があります。ただし、これは通常、品質への影響はごくわずかですのでご安心ください。温度が0度の場合の出力に多少のランダム性が生じることに驚かないように、この点について言及しています。

モデルが温度のみに左右されるのではなく、品質と多様性のバランスをとる方法は数多くあります。次のセクションでは、温度選択手法のいくつかの修正について説明します。ただし、温度を0に設定しても問題ない場合は、このセクションは飛ばしてください。これらのパラメータは、温度が0のときのモデルの応答に影響を与えないため、安心して設定できます。

簡単に言うと、温度を上げるとモデル出力のランダム性が増し、応答の多様性が向上しますが、品質は低下します。

03 Top-kとTop-p

トークン選択式を調整するための一般的な方法は、トップkサンプリングと呼ばれます。トップkサンプリングは通常の温度サンプリングと非常に似ていますが、最も確率の低いトークンを除外する点が異なります。つまり、「トップk」の最良の選択肢のみを考慮するため、この名前が付けられています。この方法の利点は、真に悪いトークンを選択してしまうのを防ぐことです。

例えば、「太陽は…に昇る」という文を完成させたいとします。Top-kサンプリングを行わない場合、モデルは語彙内のすべてのトークンを、シーケンスの後に置くことができる可能性のある結果として扱います。その結果、「太陽は冷蔵庫に昇る」といった不合理な結果が書かれる可能性が高くなります。Top-kサンプリングを行うことで、モデルはこれらの真に不適切な選択肢を除外し、上位k個の最適なトークンのみを考慮します。不適切なトークンのほとんどを切り捨てることで、コンテンツの多様性はいくらか失われますが、コンテンツの質は大幅に向上します。

Top-kサンプリングは、最も優れたk個の候補トークンのみを保持し、それ以外は破棄することで、コンテンツの品質を向上させます。画像はEcho Lu [1]より提供。

Top-pサンプリングは、単に温度を用いるよりも低コストで、出力成分の多様性と品質の両方を確保できる手法です。この手法は非常に効果的であるため、様々なバリエーションが生まれています。

Top-kサンプリングの一般的なバリエーションは、Top-pサンプリング、あるいは核サンプリングとも呼ばれます。Top-pサンプリングはTop-kサンプリングと非常に似ていますが、どのトークンを保持するかを決定する際に、トークンのランクではなく尤度スコアを使用する点が異なります。より具体的には、尤度スコアが閾値pを超える上位ランクのトークンのみを考慮し、残りは破棄します。

トップkサンプリングと比較して、トップpサンプリングの利点は、シーケンス内に多くの低品質または中程度の後続単語がある場合に明らかになります。たとえば、次のトークンには適切な選択肢がいくつかある一方で、ほとんど関連性のない選択肢が数十個あるとします。k=25(kは保持するトークンの数)でトップkサンプリングを使用すると、多くの不適切なトークンの選択肢を考慮することになります。一方、トップpサンプリングを使用して確率分布の下位10%を除外する場合(トークンを確率の高い順に並べ替え、累積確率が90%のトークンのみを保持する)、高スコアのトークンのみを考慮し、他のトークンを除外する必要があるかもしれません。

実際のアプリケーションでは、Top-pサンプリングの方がTop-kサンプリングよりも優れた結果を得ることが多い。Top -pサンプリングは入力のコンテキストへの適応性が高く、より柔軟なフィルタリングが可能であるためである。したがって、一般的には、非ゼロ温度ではTop-pサンプリングとTop-kサンプリングの両方を使用することで、より低い品質コストで出力コンテンツの多様性を実現できるが、通常はTop-pサンプリングの方が優れたパフォーマンスを示す。

ヒント:これらの2つの設定(top-pサンプリングとtop-kサンプリング)では、値が小さいほどフィルタリングが強化されます。設定が0の場合、上位ランクのトークンを除くすべてのトークンがフィルタリングされます。これは、温度を0に設定するのと同じ効果です。したがって、これらのパラメータを使用する際は注意が必要です。設定値が低すぎると、モデルの出力の多様性が低下する可能性があります。

簡単に言うと、top-kとtop-pは、多様性をほとんど損なうことなく出力コンテンツの品質を向上させます。これは、ランダムサンプリングの前に最悪のトークン選択を除去することで実現されます。

04 頻度ペナルティと存在ペナルティ

頻度と存在のペナルティ

最後に、本論文の最後の2つのパラメータ、頻度ペナルティと存在ペナルティについて考察しましょう。驚くべきことに、これらのパラメータは、モデルが品質と多様性をトレードオフする別の方法を表しています。温度パラメータはトークンのサンプリングプロセスにランダム性を加えることで出力の多様性を実現しますが、頻度ペナルティと存在ペナルティは、テキストに既に出現しているトークンにペナルティを課すことで出力の多様性を高めます。これにより、古くて使い古されたトークンが選択される可能性が低くなり、モデルはより新しいトークンを選択できるようになります。

頻度ペナルティは、トークンがテキストに出現するたびにペナルティを課します。これにより、同じトークン/単語/フレーズの再利用が防止され、モデルはより多様なトピックを議論し、より頻繁にトピックを変更できるようになります。一方、存在ペナルティは、トークンがテキストに既に出現している場合に課される固定ペナルティです。これにより、モデルはより多くの新しいトークン/単語/フレーズを導入するようになり、一般的な単語の繰り返しを大幅に抑制することなく、議論のトピックをより多様化し、トピックの変更をより頻繁に行うことができます。

温度と同様に、頻度と存在のペナルティは、私たちを「最善」の回答から遠ざけ、より創造的な方向へと導きます。しかし、ランダム性をもたらす温度とは異なり、これらは慎重に計算され、的を絞ったペナルティを通じて、モデルが生成するコンテンツに多様性をもたらします。まれに、ゼロ以外の温度が求められるタスク(同じプロンプトに対して複数の回答が必要な場合)では、創造性を高めるために、頻度または存在のペナルティを少し加えることを検討する必要があるかもしれません。ただし、正解が1つしかなく、一度に妥当な回答を見つけたいプロンプトの場合は、これらのパラメータをすべてゼロに設定すると、成功の可能性が最も高くなります。

一般的に、正解が1つしかなく、質問も1回だけの場合は、頻度ペナルティと存在ペナルティを0に設定する必要があります。ただし、正解が複数ある場合(テキスト要約など)は、これらのパラメータをより柔軟に設定できます。モデルの出力が退屈、独創性に欠ける、繰り返しが多い、または範囲が限られていると感じる場合は、頻度ペナルティまたは存在ペナルティを慎重に適用することで、モデルを活性化できる場合があります。ただし、これらのパラメータに関する最終的な推奨事項は、温度の場合と同じです。不確実な状況では、0に設定するのが最も安全な選択肢です。

温度ペナルティと頻度/存在ペナルティはどちらもモデル応答の多様性を高めることができますが、その増加量は異なることに注意することが重要です。頻度/存在ペナルティは単一の応答内の多様性を高めるため、これらのペナルティがない場合よりも、応答にはより多様な単語、フレーズ、トピック、テーマが含まれることになります。ただし、同じプロンプトを2回入力しても、必ずしも2つの異なる回答が得られる可能性が高くなるわけではありません。これは温度とは異なります。温度は、異なるクエリ間での応答の変動性を高めます。つまり、気温が高い場合、同じプロンプトを複数回入力すると、より多様な応答が生成されます。

私はこの区別を「応答内多様性」と「応答間多様性」と呼ぶことを好みます。温度パラメータは応答内多様性と応答間多様性の両方を高めますが、頻度ペナルティ/存在ペナルティは応答内多様性のみを高めます。したがって、応答内容の多様性を高める必要がある場合、高めたい多様性の種類に応じてパラメータを選択する必要があります。

要約すると、頻度ペナルティと存在ペナルティは、モデルが議論するトピックの多様性を高め、モデルがより頻繁にトピックを変更できるようにします。頻度ペナルティは、単語やフレーズの繰り返しを減らすことで、単語選択の多様性を高めることもできます。

05 パラメータ調整メモ

このセクションは、モデル推論パラメータの選択に関する実用的なガイドを提供することを目的としています。まず、どの値をゼロに設定すべきかを決定するための明確なルールを示します。次に、パラメータをゼロ以外の値に設定する必要がある場合に適切な値を見つけるためのヒントを示します。

推論パラメータを選択する際には、このチートシートの使用を強くお勧めします。このページをブックマークとして保存するか、この記事をブックマークして、紛失を防ぎましょう。

パラメータをゼロに設定するルール:

温度:

  • 各プロンプトに対して、必要な回答は 1 つだけです (0)。

  • 各プロンプトには、ゼロ以外の複数の回答が必要です。

頻度ペナルティと存在ペナルティ:

  • 質問に対して正しい答えが 1 つしかない場合: 0。

  • 質問に複数の正解がある場合: 自由に選択できます。

トップp/トップk:

  • 温度がゼロの場合: 出力は影響を受けません。

  • 温度がゼロでない場合:非ゼロ。

使用している言語モデルにここに記載されていない他のパラメータがある場合は、それらをデフォルト値のままにしておいても問題ありません。

パラメータがゼロ以外の場合に調整する手法:

まず、ゼロ以外の値に設定する必要があるパラメータをリストアップします。次に、プレイグラウンドでいくつかのテストプロンプトを試して、どれが最も効果的かを確認します。ただし、上記のルールでパラメータ値をゼロのままにする必要があると規定されている場合は、ゼロのままにしてください。

温度/トップp/トップkを調整するためのヒント:

  1. モデル入力の多様性またはランダム性を高めるには、温度を上げる必要があります。

  2. 温度がゼロでない場合は、top-p を約 0.95 (または top-k を約 250) から開始し、必要に応じて温度を下げます。

トラブルシューティング:

  1. 意味のないコンテンツ、ジャンクコンテンツ、幻覚が多すぎる場合は、温度とトップ P/トップ K 比を下げる必要があります。

  2. 温度は高いがモデル出力の多様性が低い場合は、top-p/top-k を増やす必要があります。

ヒント:一部のモデルではtop-pとtop-kの両方を同時に調整できますが、私はどちらか一方のパラメータのみを調整することを推奨します。top-kの方が使いやすく理解しやすいですが、一般的にtop-pの方が効果的です。

頻度ペナルティと存在ペナルティを調整するテクニック:

  1. より多様なテーマを取得するには、存在ペナルティ値を増やす必要があります。

  2. 繰り返しの少ない、より多様なモデル出力を得るには、頻度ペナルティを追加する必要があります。

トラブルシューティング:

  1. モデルの出力が断片化されていて、トピックが急速に変化する場合は、存在ペナルティを減らす必要があります。

  2. 目新しい単語や珍しい単語が多すぎる場合、またはペナルティをゼロに設定してもトピックの変更が多い場合は、頻度ペナルティを減らす必要があります。

要約:このセクションは、言語モデルのパラメータを調整するためのチートシートとして役立ちます。これらのルールは忘れてしまう可能性が高いため、このページをブラウザにブックマークするか、コミュニティのお気に入りに追加して、後で参照できるようにしてください。

06 要約

トークンサンプリング戦略を定義する方法は数多くありますが、本稿で論じるパラメータ(温度、トップk、トップp、頻度ペナルティ、存在ペナルティ)が最も一般的に用いられています。これらのパラメータは、Claude、Llama、GPTシリーズなどのモデルで広く用いられています。本稿で説明されているように、これらのパラメータは基本的に、モデル出力の品質と多様性のバランスをとるために設計されています。

最後に、推論パラメータとしてもう1つ触れておきたいことがあります。それは最大トークン長です。最大トークン長は、モデルの応答がまだ完了していない場合でも、モデルが応答の出力を停止するカットオフポイントです。上記の他のパラメータに関する複雑な説明の後では、このパラメータの説明は自明であると思います。🙂

要約:パラメータ設定についてご不明な点がある場合は、温度、周波数ペナルティ、プレゼンスペナルティの値をゼロに設定してください。それでも問題が解決しない場合は、上記のチートシートを参照してください。

終わり