LLMの基本パラメータ

大規模言語モデル(LLM)は、テキストを生成したり、質問に答えたり、さまざまな言語タスクを実行したりする上で、多くの内部的なパラメータを持っています。これらのパラメータを調整することで、LLMの応答の創造性一貫性長さなどを制御できます。ここでは、LLMの動作に影響を与える主要なパラメータについて詳しく説明します。

以下の説明は、Difyで設定できるパラメータに限っています。また、モデルによっても設定できるパラメータが異なります。プログラミングでAPIを利用する場合には、リクエストボディのパラメータとして設定します。それぞれ以下のAPIリファレンスを参照して下さい。

目次

LLMの基本的なパラメータとその動作への影響

1. Temperature

Temperatureは、LLMが次にどの単語を選択するかのランダム性を制御するパラメータです。

動作原理: LLMは、次に続く可能性のある単語それぞれに確率を割り当てます。Temperatureは、この確率分布を「鋭く」したり「平坦」にしたりします。低いTemperatureは分布を鋭くし(最も可能性の高い選択肢を強調)、高いTemperatureは分布を平坦にします(多くの選択肢にチャンスを与える)。

  • 低いTemperature
    • 動作: LLMはランダム性を低く抑え、最も確率の高い単語を選択しやすくなります。
    • 結果: より決定的一貫性があり、予測可能なテキストが生成されます。事実に基づいた応答や、正確さが求められる場合に適しています。しかし、創造性に欠け、同じような言い回しを繰り返す傾向があります。
  • 高いTemperature
    • 動作: LLMはランダム性を高め、確率の低い単語も選択肢に含めるようになります。つまり、より多くの「リスク」を取るようになります。
    • 結果: より創造的多様な、予期しないテキストが生成されます。物語の執筆やブレインストーミングなど、新しいアイデアが必要な場合に有効です。ただし、一貫性が失われたり、意味不明なテキストが生成されたりするリスクも高まります。

2. Top-p

Top-pは、LLMが単語を選択する際に考慮する候補の範囲を、累積確率に基づいて決定するパラメータです。

  • 動作: LLMは、確率の高い順に単語を並べ、その確率の合計が指定されたpの値(例: 0.9)を超えるまで単語を選択肢に含めます。
  • 結果:
    • 高いTop-p : 多くの単語が候補となり、より多様なテキストが生成されます(高いTemperatureに似た効果)。
    • 低いTop-p : ごく少数の最も確率の高い単語のみが候補となり、より安全で予測可能なテキストが生成されます。
  • 特徴: Top-pは、Temperatureとは異なり、候補となる単語の数を動的に調整します。文脈によって次の単語の予測しやすさが変わるため、確率分布が鋭い場合は候補が少なくなり、平坦な場合は候補が多くなります。これにより、品質を維持しつつ多様性を確保しやすいとされています。

3. Top-k

Top-kは、LLMが単語を選択する際に考慮する候補の数を、上位k個に限定するパラメータです。

  • 動作: LLMは、確率の高い順に単語を並べ、上位k個(例: 50)の単語のみを選択肢として考慮します。
  • 結果:
    • 高いTop-k (例: 100): 多くの単語が候補となり、多様性が増します。
    • 低いTop-k (例: 10): 候補が絞られ、より一般的な、あるいは安全な単語が選ばれやすくなります。
  • Top-pとの違い: Top-kは常に固定数の単語を候補とするのに対し、Top-pは確率に基づいて候補数を変動させます。Top-pは、非常に低い確率の単語(ノイズ)を効果的に排除できるため、Top-kよりも優れているとされます。直感的には、Top-kの方が、コントロールしやすいかもしれません。

4. Max Length (最大トークン数)

Max Lengthは、LLMが生成するテキストの最大長をトークン数で指定するパラメータです。(トークンは、単語や句読点、あるいは単語の一部などを指します。日本語の場合は、ほぼ文字数と同じと考えて良いかと思います。)とりえる値は、使用するモデルによって異なります。

  • 動作: LLMは、指定された最大トークン数に達するまで、または自然な文の終わり(EOS: End of Sequence トークン)に達するまでテキストを生成します。
  • 結果: 生成されるテキストの長さを制御します。短すぎる設定は不完全な応答につながり、長すぎる設定は冗長な応答や計算リソースの無駄遣いにつながる可能性があります。

5. Frequency Penalty & Presence Penalty

単語の出現に対してペナルティを与えるパラメータです。

  • Frequency Penalty (頻度ペナルティ):
    • 動作: テキスト内に既に出現した単語に対して、その出現回数に応じてペナルティを与えます。頻繁に出現する単語ほど、再び選ばれる確率が低くなります。
    • 結果: 特定の単語の使いすぎを防ぎます。
  • Presence Penalty (存在ペナルティ):
    • 動作: テキスト内に一度でも出現した単語に対して、(出現回数によらず)一律のペナルティを与えます。
    • 結果: 新しいトピックや概念について話すことを奨励し、同じ話題に固執するのを防ぎます。

パラメータの相互作用と調整

これらのパラメータは独立しておらず、互いに影響し合います。例えば、

  • Temperatureを高くしても、Top-pやTop-kが低いと、結局は候補が絞られてしまい、創造性はあまり高まりません。
  • Max Lengthが短いと、ペナルティ系のパラメータの効果は現れにくいかもしれません。

最適なパラメータ設定は、使用するLLMタスクの目的(創造的な文章か、正確な要約かなど)によって大きく異なります。多くの場合、試行錯誤を通じて、目的に合った最適な組み合わせを見つける必要があります。

まとめ

LLMの性能が上がってきたので、通常のDifyのLLM利用では、これらのパラメータは初期値のまま使っていただいても問題ないかと思います。
何らかの理由で、オープンソースのモデルや、特別分野の専門モデルを使った時に、不自然な文章が生成されてしまう場合などに、調整頂ければ良いかと思います。

目次