科普:大模型使用中的temperature 与 top-k及其它

在大语言模型(如通过 Ollama 运行的 llama2 模型)中,temperaturetop-k 是两个用于控制文本生成过程的重要参数,它们在功能上相互独立,但又共同影响着模型生成文本的随机性和多样性。

一、各自的作用

  • temperature:该参数主要用于控制生成文本的随机性。它会对模型预测的词概率分布进行调整。具体来说,temperature 值越高,概率分布就越平滑,各个词被选中的概率就越接近,生成文本的随机性也就越大,可能会产生更多新颖、出人意料的内容;反之,temperature 值越低,概率分布越陡峭,模型越倾向于选择概率最高的词,生成的文本会更加确定和保守。例如,当 temperature 接近 0 时,模型几乎总是选择概率最高的词,生成的文本会比较固定。
  • top-ktop-k 采样策略会限制模型在生成下一个词时的候选词范围。模型在每一步生成文本时,只会考虑概率最高的 k 个词作为候选,而忽略其他词。通过设置 top-k,可以减少生成出不相关或低质量词汇的可能性,让生成的文本更加符合语义和逻辑。例如,top-k 40 表示模型只从概率最高的 40 个词中选择下一个词。

二、两者关系

  • 相互配合影响随机性temperaturetop-k 共同作用来影响生成文本的随机性和多样性。top-k 从词汇范围上进行了限制,而 temperature 则在这个受限的范围内调整词的选择概率。例如,当 top-k 设置得较小时(如 10),模型的候选词范围已经很窄,此时如果 temperature 也设置得很低,那么生成的文本会非常确定,因为模型只能从少数几个概率高的词中选择,且倾向于选择概率最高的那个;相反,如果 temperature 设置得很高,即使候选词范围小,也会增加一定的随机性。
  • 不同场景下的搭配使用
    • 需要确定性输出的场景:在一些对准确性和一致性要求较高的场景,如生成技术文档、回答事实性问题时,可以将 temperature 设置得较低(如 0.2),同时 top-k 也可以设置得相对小一些(如 20),这样可以让模型更倾向于选择最可能的词汇,生成稳定、准确的文本。
    • 需要创造性输出的场景:在需要生成故事、诗歌等富有创意的内容时,可以将 temperature 设置得较高(如 0.8),并适当调整 top-k 的值(如 40 或更高),这样可以在一定的候选词范围内增加随机性,使生成的文本更加多样化和富有创意。

在大语言模型使用中,temperaturetop-k 是常用的控制文本生成特性的参数,下面分别介绍它们的取值范围以及不同取值的影响。

四、 参数范围

  • 取值范围temperature 的取值通常是一个大于 0 的浮点数。虽然理论上它可以取任意大于 0 的值,但在实际应用中,常见的取值范围一般在 0.1 到 2.0 之间。

  • 不同取值的影响

    • 接近 0:当 temperature 接近 0 时,模型会极度倾向于选择概率最高的词。这会使得生成的文本非常确定和保守,输出结果往往是最常见、最符合逻辑的表述,缺乏随机性和创造性。例如在生成技术文档、回答事实性问题时,较低的 temperature 能保证内容的准确性和一致性。
    • 数值适中:取值在 0.7 - 1.0 之间时,生成的文本既有一定的逻辑性,又具备适度的随机性,能够在保证内容合理的前提下,产生一些多样化的表达,适用于大多数普通的文本生成场景。
    • 数值较大:当 temperature 大于 1.0 甚至更高时,概率分布会变得更加平滑,各个词被选中的概率更加接近,模型生成文本的随机性显著增加。这可能会产生一些新颖、出人意料的内容,但也可能导致生成的文本逻辑连贯性变差,出现一些不合理的表述,常用于需要创造性的场景,如创作故事、诗歌等。
  • 取值范围top-k 的取值是一个大于 0 的整数。其取值范围并没有严格的限制,但在实际应用中,通常会根据具体的模型和任务需求来设置,常见的取值范围在 1 到 100 之间。

  • 不同取值的影响

    • 取值较小:当 top-k 设置为较小的值(如 1 - 10)时,模型的候选词范围非常窄,这会使生成的文本更加聚焦和确定,减少了生成不相关词汇的可能性,但也可能导致生成的内容较为单一,缺乏多样性。例如在对生成内容的准确性要求极高,且词汇选择范围相对固定的场景下可以使用较小的 top-k 值。
    • 取值适中:取值在 20 - 40 时,模型有一定的候选词范围,能够在保证一定准确性的同时,增加生成文本的多样性,适用于大多数常见的文本生成任务。
    • 取值较大:如果 top-k 设置得较大(如 50 - 100 甚至更高),模型的候选词范围会更广,生成文本的多样性会进一步增加,但同时也可能引入一些不太相关或质量较低的词汇,使生成的文本质量有所下降。

五、其它相关参数

除了 temperaturetop-k 之外,还有许多其他参数可以控制语言模型生成文本:

采样相关参数
  • top-p(核采样)
    • 含义:也称为核采样,它会动态地选择一个最小的词集,使得这些词的概率之和达到预定义的概率阈值 p。模型只从这个词集中采样下一个词。
    • 影响:与 top-k 不同,top-p 采样的词集大小是动态变化的。较小的 top-p 值(如 0.7)会使模型更倾向于选择概率较高的词,生成的文本更保守;较大的值(如 0.95)则会增加候选词的范围,提高文本的多样性。
  • typical-p
    • 含义:典型性采样是一种新的采样方法,它基于词的典型性得分来选择词。典型性得分衡量了一个词在当前上下文中的典型程度。
    • 影响typical-p 参数控制典型性得分的阈值,较低的值会使模型更倾向于选择典型的词,生成的文本更加符合常见的表达模式;较高的值则允许更多非典型的词被选择,增加文本的多样性。
生成长度相关参数
  • max-tokens
    • 含义:该参数用于限制模型生成文本的最大词数。当生成的词数达到 max-tokens 设定的值时,模型会停止生成。
    • 影响:通过设置 max-tokens,可以控制生成文本的长度,避免生成过长或过短的内容。例如,在生成摘要时,可以设置较小的 max-tokens 值;在生成故事时,可以设置较大的值。
  • min-tokens
    • 含义:与 max-tokens 相对,min-tokens 用于指定模型生成文本的最小词数。模型会至少生成 min-tokens 数量的词,即使在某些情况下可能已经生成了语义完整的内容。
    • 影响:确保生成的文本有足够的长度,避免因过早结束而导致内容不完整。
惩罚相关参数
  • frequency-penalty
    • 含义:该参数用于惩罚已经在生成文本中频繁出现的词。它会降低这些词在后续生成过程中被再次选择的概率。
    • 影响:正值的 frequency-penalty 可以减少文本中重复词的出现,使生成的文本更加多样化;负值则会增加重复词的概率。
  • presence-penalty
    • 含义:与 frequency-penalty 类似,但 presence-penalty 是对在生成文本中已经出现过的任何词进行惩罚,而不考虑其出现的频率。
    • 影响:通过设置 presence-penalty,可以鼓励模型引入新的词汇和概念,避免重复使用已经出现过的词。
停止相关参数
  • stop
    • 含义:该参数允许你指定一个或多个停止序列。当模型生成的文本中出现这些停止序列时,生成过程会立即停止。
    • 影响:在需要精确控制生成文本结束位置的场景中非常有用,例如在生成特定格式的文本时,可以设置停止序列来确保生成的内容符合要求。

你可能感兴趣的:(大模型编程,人工智能,大模型)