频率惩罚(Frequency Penalty)

什么是频率惩罚(Frequency Penalty)?

频率惩罚(Frequency Penalty)介于 -2.0 和 2.0 之间,它会影响模型如何根据新标记(token)在文本中的现有频率惩罚(Frequency Penalty)新标记(token)。

频率惩罚(Frequency Penalty)设置为正值时,GPT 模型将惩罚和规避已经常使用的标记(token),来降低模型逐字重复同一行的可能性。

为了略微减少重复样本,惩罚系数的合理值通常在 0.1 到 1 左右。

如果您的应用场景的目标是显著抑制重复,则系数可以增加到2,但这可能会对样品的质量产生负面影响。

在其它某些应用场景,用户可以使用负值会增加重复的可能性。

调整频率惩罚(Frequency Penalty)

平台使用 0.01 作为默认的频率惩罚(Frequency Penalty)值。

注意:“文心一言”模型的频率惩罚(Frequency Penalty)取值范围要求是 [1.0 ~ 2.0 ],其参数名称为 penalty_score。用户使用“文心一言”模型时需要修改频率惩罚(Frequency Penalty)参数值。如果不修改默认参数值,对话会返回错误信息(parameter check failed, penalty_score range is [1.0, 2.0])。

用户可以从“GPT 模型”选项卡的频率惩罚(Frequency Penalty)字段中进行更改。

修改步骤:

  • 单击“设置”页面,然后查找“GPT 模型”选项卡。
  • 在频率惩罚(Frequency Penalty)字段中输入新值。
  • 单击“保存”按钮以保存更改。

频率惩罚(Frequency Penalty)对生成的文本多样性的影响

频率惩罚(Frequency Penalty)参数是对 GPT 模型生成的生成文本的“多样性”的控制。

它允许在生成文本的可能性与其新颖性之间调整权衡。

与任何其他语言模型一样,GPT 使用概率分布来预测给定提示或种子文本的下一个单词。

频率惩罚(Frequency Penalty)参数修改此分布,使模型在训练期间更频繁地看到的可能性较小的单词,从而鼓励模型生成新颖或不太常见的单词。

频率惩罚(Frequency Penalty)用作模型预测的对数概率的比例因子。

比例因子的计算公式为:(1 - frequency_penalty) * log_probability,其中频率惩罚(Frequency Penalty)是介于 0 和 1 之间的值,对数概率是单词概率的自然对数。

  • 当频率惩罚(Frequency Penalty)设置为 0 时,模型的行为与平时相同,比例因子为 0,模型的预测不受影响。
  • 当频率惩罚(Frequency Penalty)设置为 1 时,缩放因子为 1,模型不会生成在训练期间看到的任何单词,从而导致完全新颖或随机的文本。
  • 介于 0 和 1 之间的值鼓励模型在熟悉的单词和新颖的单词之间产生平衡。

通常,频率惩罚(Frequency Penalty)的默认值为 0,当您想要生成与训练模型的文本类似的文本时,会使用它。

另一方面,如果您希望模型生成更多样化且重复性更低的文本,则可能需要使用更高的频率惩罚(Frequency Penalty),这将鼓励模型生成不太常用的单词,并使其不太可能生成常用短语。

总之,频率惩罚(Frequency Penalty)参数是用于在生成文本的可能性与其新颖性之间进行权衡的控制。

此参数修改模型的概率分布,以降低模型在训练期间更频繁地看到的单词的可能性。

它允许鼓励模型生成更多样化和更少重复的文本。

频率惩罚(Frequency Penalty)和存在惩罚(Presence Penalty)之间的差异

这两个参数之间的主要区别在于它们修改模型预测的概率分布的方式。

频率惩罚(Frequency Penalty)参数修改概率分布,使模型在训练期间更频繁地看到的单词的可能性较小。这鼓励模型生成新颖或不太常见的单词。它的工作原理是缩小模型在训练期间经常看到的单词的对数概率,使模型生成这些常用单词的可能性降低。

存在惩罚(Presence Penalty)是一次性的累加贡献,适用于至少采样过一次的所有标记(token),而频率惩罚(Frequency Penalty)是与特定标记(token)已被采样的频率成比例的贡献。

另一方面,存在惩罚(Presence Penalty)参数修改概率分布,以降低输入提示或种子文本中出现的单词。这会鼓励模型生成不在输入中的单词。它的工作原理是缩小输入中存在的单词的对数概率,使模型不太可能生成输入中已有的这些单词。

简而言之,频率惩罚(Frequency Penalty)会惩罚模型生成模型在训练期间经常看到的常用单词,而存在惩罚(Presence Penalty)会惩罚模型生成输入文本中存在的单词。

这两个参数都可用于增加生成文本的多样性,并鼓励模型生成更多新颖或意想不到的单词,但它们以不同的方式进行,并且根据用例和特定要求,一个可能比另一个更有益,或者它们可以一起使用来控制生成的文本的多样性。