temperature
、top_p
、top_k
.. 等,如下:
在大模型训练好之后,对训练好的模型进行解码
{ "top_k": 10, "temperature": 0.95, "num_beams": 1, "top_p": 0.8, "repetition_penalty": 1.5, "max_tokens": 30000, "message": [ { "content": "你好!", "role": "user" } ] }
简单来说,temperature 的参数值越小,模型就会返回越确定的一个结果。如果调高该参数值,大语言模型可能会返回更随机的结果,也就是说这可能会带来更多样化或更具创造性的产出。(调小 temperature)实质上,你是在增加其他可能的 token
的权重。在实际应用方面,对于质量保障(QA)等任务,我们可以设置更低的 temperature 值,以促使模型基于事实返回更真实和简洁的结果。 对于诗歌生成或其他创造性任务,适度地调高 temperature 参数值可能会更好。
同样,使用 top_p(与 temperature 一起称为核采样 nucleus sampling
的技术),可以用来控制模型返回结果的确定性。如果你需要准确和事实的答案,就把参数值调低。如果你在寻找更多样化的响应,可以将其值调高点。
使用 Top P 意味着只有词元集合 tokens
中包含 top_p 概率质量的才会被考虑用于响应,因此较低的 top_p 值会选择最有信心的响应。这意味着较高的 top_p 值将使模型考虑更多可能的词语,包括不太可能的词语,从而导致更多样化的输出。
一般建议是改变 Temperature 和 Top P 其中一个参数就行,不用两个都调整。
在 AI 大模型中,top_k 是一个用于控制模型生成文本时的候选词范围的参数。它通过限制模型在每一步生成时只能从概率最高的前 k
个词中进行选择,从而影响生成文本的多样性和连贯性:当模型生成文本时,它会为每个可能的下一个词计算一个概率值。top_k 策略会将这些词按概率从高到低排序,然后只保留前 k 个词作为候选词。在这些候选词中,模型会根据一定的概率分布(通常经过温度参数调整)随机选择一个词作为下一个输出词。
如果没有 top_k,用贪心解码会有一些缺点。如,输出可能会陷入重复循环。想想智能手机自动建议中的建议。当你不断地选择建议最高的单词时,它可能会变成重复的句子(Top-k 采样是对前面“贪心策略”的优化,它从排名前 k 的 token 中进行抽样,允许其他分数或概率较高的 token 也有机会被选中。在很多情况下,这种抽样带来的随机性有助于提高生成质量)。
您可以通过调整 max length 来控制大模型生成的 token
数。指定 Max Length 有助于防止大模型生成冗长或不相关的响应并控制成本。
frequency penalty 是对下一个生成的 token
进行惩罚,这个惩罚和 token
在响应和提示中已出现的次数成比例,frequency penalty 越高,某个词再次出现的可能性就越小,这个设置通过给 重复数量多的 Token 设置更高的惩罚来减少响应中单词的重复。
presence penalty 也是对重复的 token 施加惩罚,但与 frequency penalty 不同的是,惩罚对于所有重复 token 都是相同的。出现两次的 token
和出现 10 次的 token
会受到相同的惩罚。 此设置可防止模型在响应中过于频繁地生成重复的词。 如果您希望模型生成多样化或创造性的文本,您可以设置更高的 presence penalty,如果您希望模型生成更专注的内容,您可以设置更低的 presence penalty。
与 temperature 和 top_p 一样,一般建议是改变 frequency penalty 和 presence penalty 其中一个参数就行,不要同时调整两个。