wordpress网站在哪里修改密码,湖南长沙景点,在线学习平台网站建设有什么功能,索莱宝做网站编者按#xff1a;我们如何才能更好地控制大模型的输出? 本文将介绍几个关键参数#xff0c;帮助读者更好地理解和运用 temperature、top-p、top-k、frequency penalty 和 presence penalty 等常见参数#xff0c;以优化语言模型的生成效果。 文章详细解释了这些参数的作用… 编者按我们如何才能更好地控制大模型的输出? 本文将介绍几个关键参数帮助读者更好地理解和运用 temperature、top-p、top-k、frequency penalty 和 presence penalty 等常见参数以优化语言模型的生成效果。 文章详细解释了这些参数的作用机制以及如何在质量与多样性之间进行权衡。提高 temperature 可以增加多样性但会降低质量。top-p 和 top-k 可以在不损失多样性的前提下提高质量。frequency penalty 和 presence penalty 可以增加回复的词汇多样性和话题多样性。 最后文章提供了参数配置的具体建议和技巧供读者参考使用。选择合适的参数能显著提高语言模型的表现更是进行 prompt engineering 的重要一环。 以下是译文enjoy 作者 | Samuel Montgomery 
编译 | 岳扬 
欢迎小伙伴们加入AI技术软件及技术交流群追踪前沿热点共探技术难题~ 
当我们通过 Playground 或 API 使用语言模型时可能会被要求选择一些推理参数。但是对大多数人来说这些参数的含义以及使用它们的正确方法可能不为大多数人所熟悉。 典型模型推理界面参数选择的截图。图片由作者提供 
本文将介绍如何使用这些参数来控制大模型的幻觉hallucinations为模型的输出注入创造力并进行其他细粒度的调整主要目的是为了优化模型的输出。就像提示工程prompt engineering一样对推理参数进行调优可以使模型发挥出最佳效果。 
通过学习本文我相信各位读者能够充分理解这五个关键的推理参数——temperature、top-p、top-k、frequency penalty 和 presence penalty。还可以明白这些参数对生成内容的质量和多样性产生的影响。 
所以泡好咖啡了吗现在开始吧 
目录 
01 背景信息 Background 
02 质量、多样性和Temperature 
03 Top-k和Top-p 
04 频率惩罚和存在惩罚 Frequency and Presence Penalties 
05 参数调整备忘单 
06 总结 
01 背景信息 Background 
在选择推理参数之前我们需要了解一些背景信息。让我们来谈谈这些模型是如何选择要生成哪些单词的。 
要阅读一份文档语言模型会将其分解为一系列的tokens。token只是模型能够轻松理解的一小段文本可以是一个单词word、一个音节syllable或一个字符character。例如“Megaputer Intelligence Inc.” 可以被分解为五个token[“Mega”, “puter”, “Intelligence”, “Inc”, “.”]。 
我们熟悉的大多数语言模型都是通过重复生成token序列sequence中的下一个token来运作的。每次模型想要生成另一个token时会重新阅读整个token序列并预测接下来应该出现的token。 这种策略被称为自回归生成autoregressive generation。 token的自回归生成。 
GIF由Echo Lu[1]制作其中包含了 Annie Surla[2]的一张图片来自 NVIDIA[3]经过修改。 
本次修改已获得版权所有者的许可。 
这解释了为什么ChatGPT会逐个地输出单词它在生成内容时就以逐词输出的方式。 
如果要选择序列中的下一个token语言模型首先要为其词汇表中的每个token分配一个可能性分数likelihood score。经过模型的评估如果某个token能够让文本得到合理的延续就能够获得较高的可能性分数。如果某个token无法自然延续文本内容就将获得较低的可能性分数。 语言模型分配可能性分数以预测序列中的下一个token。 
原始图片由 NVIDIA[3] 的 Annie Surla[2] 创建经过版权所有者 Echo Lu[1] 的许可进行修改。 
在分配完可能性分数likelihood score之后就会使用一种将可能性分数考虑在内的token抽样选择方案token sampling scheme来选择token。token抽样选择方案包含一定的随机性这样语言模型就不会每次都以相同的方式回答相同的问题。这种随机性可以成为聊天机器人或其他应用程序中的一个不错的特性。 
简而言之语言模型将文本分解为token预测序列中的下一个token并引入一些随机性。根据需要重复这个过程来输出内容。 
02 质量、多样性和Temperature 
但是为什么我们会想要选择第二好的token、第三好的token或者除了最好的token以外的其他token呢难道我们不希望每次都选择最好的token及具有最高可能性分数的token吗通常情况下我们确实会这样进行。但是如果我们每次都选择生成最好的回复那么我们每次都将得到相同的回复。如果我们想要得到多种多样的回复我们可能不得不放弃一些回复内容的质量来获得回复的多样性。这种为了多样性而牺牲质量的做法被称为质量与多样性的权衡quality-diversity tradeoff。 
在这种情况下temperature这个参数可以告诉机器如何在质量和多样性之间进行权衡。较低的 temperature 意味着更高的质量而较高的 temperature 意味着更高的多样性。当 temperature 设置为零时模型总是会选择具有最高可能性分数的token从而导致模型生成的回复缺乏多样性但却能确保总是选择模型评估出的最高质量的token来生成回复。 
很多时候我们都希望将 temperature 设置为零。原则上对于只需要向模型传递一次的任何提示语都应该将 temperature 设置为零因为这样最有可能得到一个高质量的回复。在我进行的数据分析工作中对于实体提取entity extraction、事实提取fact extraction、情感分析sentiment analysis和大多数其他标准任务都设置temperature 为零。 
在较高的 temperature 下通常会看到更多的垃圾内容和幻觉内容连贯性较差生成的回复质量可能会降低但同时也会看到更多具有创造性和多样性的回复。我们建议仅在需要获得多个不同答案的情况下才使用非零的 temperature。 较高的 temperature 带来了回答的多样性和创造性但也会增加垃圾内容、不连贯和幻觉。 
图片由Echo Lu[1]创建。 
为什么我们会希望对同一个提示语prompt获得两个不同的回答呢在某些情况下对同一个提示语生成多个回复并仅保留最佳回复可能是比较好的。例如有一种技术可以让我们对一个提示语生成多个回复并只保留最好的回复这通常会比在 temperature 为零时的单个查询产生更好的结果。另一个使用场景是生成人工合成的数据我们会希望有许多不同的合成数据点synthetic data points而不仅是只有一个非常好的数据点data point。可能会在以后的文章中讨论这种情况以及其他情况但更常见的情况是我们只希望每个提示语有一个回复。当你不确定应该如何选择 temperature 时选择 temperature 为零通常是一个安全的选择。 
需要注意的是虽然理论上 temperature 为零应该每次产生相同的答案但在实践中可能并非如此 这是因为模型运行在 GPU 上可能容易出现微小的计算错误例如四舍五入产生的误差。即使在 temperature 为零的情况下这些误差会在计算中引入低水平的随机性。由于更改文本中的一个token可能会大大改变文本的含义一个微小的错误可能会导致文本后序的token选择发生级联变化从而导致几乎完全不同的输出结果。但请放心这通常对质量的影响微乎其微。我们提到这一点只是以免让你在 temperature 为零时输出结果出现一些随机性而感到惊讶。 
有很多方法可以让模型在质量和多样性之间进行权衡而不是仅受 temperature 的影响。在下一节中我们将讨论对 temperature 选择技术的一些修改。但是如果您对将 temperature 设置为 0 很满意可以暂时跳过这部分内容。在 temperature 为零时这些参数不会影响模型的回复您可以放心地设置。 
简而言之增加 temperature 可以增加模型输出的随机性从而提高了回复的多样性但降低了质量。 
03 Top-k和Top-p 
一种常见的调整token选择公式的方法称为 top-k sampling 。top-k sampling 与普通的 temperature sampling 非常相似只是排除了可能性最低的token只考虑“前k个”最佳选择这也是该方法的名称来源。这种方法的优点是防止我们选择到真正糟糕的token。 
例如假设我们要补全 “The sun rises in the…太阳升起在…” 这个句子。那么在没有 top-k sampling 的情况下模型会将词汇表中的每个token都视为可以放置在序列之后的可能结果。然后就会有一定的概率写出一些荒谬的内容比如“The sun rises in the refrigerator.太阳升起在冰箱里”。通过进行 top-k sampling 模型会筛选这些真正糟糕的选择只考虑前k个最佳token。通过截断大部分糟糕的token我们会失去一些内容多样性但是内容的质量会大幅提高。 Top-k sampling 只保留 k 个最佳候选token而丢弃其他token从而提高内容质量。图片由 Echo Lu 提供[1]。 
top-p sampling是一种既能保证输出内容多样性又能在保持内容质量的成本上比单纯使用 temperature 更加低的方法。由于这种技术非常有效因此激发了许多方法变体的出现。 
有一种常见的 top-k sampling 变体被称为 top-p sampling 也被称为 nucleus sampling 。top-p sampling 与 top-k sampling 非常相似只是它使用可能性分数likelihood scores而不是token排名token ranks来决定应保留哪些token。更具体地说它只考虑那些可能性分数超过阈值p的排名靠前的token而将其余的token丢弃。 
与 top-k sampling 相比top-p sampling 的优势在有许多较差或平庸的序列后续词时就会显现出来。 例如假设下一个token只有几个比较好的选择却有几十个只是隐约挨边的选择。如果我们使用 k25 的 top-k sampling译者注k代表的是保留的token数量 我们将考虑许多较差的token选择。相比之下如果我们使用 top-p sampling 来过滤掉概率分布中最底层的 10%译者注将token的可能性概率从大到小排序只保留从概率最大开始、累积概率之和达到90%为止的tokens)那么我们可能只需要考虑那些分数较高的token同时过滤掉其他的token。 
在实际应用中与 top-k sampling 相比top-p sampling 往往能够获得更好的效果。 它能够更加适应输入的上下文并提供更灵活的筛选。因此总的来说top-p和top-k sampling 都可以在非零的 temperature 下使用以较低的质量成本获取输出内容的多样性但 top-p sampling 通常效果更好。 
小贴士 对于这两种设置top-p和top-k sampling数值越低表示过滤得越多。当设置值为零时它们将过滤掉除排名靠前的token之外的所有token这与将 temperature 设置为零具有相同的效果。因此请在使用这些参数时注意将这些参数设置得过低可能会减少模型输出内容的多样性。 
简而言之top-k和top-p在几乎不损失输出内容多样性的情况下提高了输出内容的质量。它们通过在随机抽样前去除最差的token选择来实现这一目的。 
04 频率惩罚和存在惩罚 
Frequency and Presence Penalties 
最后让我们来讨论本文中的最后两个参数频率惩罚和存在惩罚frequency and presence penalties。令人惊讶的是这些参数是另一种让模型在质量和多样性之间进行权衡的方法。然而temperature 参数通过在token选择token sampling过程中添加随机性来实现输出内容的多样性而频率惩罚和存在惩罚则通过对已在文本中出现的token施加惩罚以增加输出内容的多样性。这使得对旧的和过度使用的token进行选择变得不太可能从而让模型选择更新颖的token。 
频率惩罚frequency penalty让token每次在文本中出现都受到惩罚。这可以阻止重复使用相同的token/单词/短语同时也会使模型讨论的主题更加多样化更频繁地更换主题。另一方面存在惩罚presence penalty是一种固定的惩罚如果一个token已经在文本中出现过就会受到惩罚。这会导致模型引入更多新的token/单词/短语从而使其讨论的主题更加多样化话题变化更加频繁而不会明显抑制常用词的重复。 
就像 temperature 一样频率惩罚和存在惩罚frequency and presence penalties会引导我们远离“最佳的”可能回复朝着更有创意的方向前进。 然而它们不像 temperature 那样通过引入随机性而是通过精心计算的针对性惩罚为模型生成内容增添多样性在一些罕见的、需要非零 temperature 的任务中需要对同一个提示语给出多个答案时可能还需要考虑将小的频率惩罚或存在惩罚加入其中以提高创造性。但是对于只有一个正确答案且您希望一次性找到合理回复的提示语当您将所有这些参数设为零时成功的几率就会最高。 
一般来说如果只存在一个正确答案并且您只想问一次时就应该将频率惩罚和存在惩罚的数值设为零。但如果存在多个正确答案比如在文本摘要中在这些参数上就可以进行灵活处理。如果您发现模型的输出乏味、缺乏创意、内容重复或内容范围有限谨慎地应用频率惩罚或存在惩罚可能是一种激发活力的好方法。但对于这些参数的最终建议与 temperature 的建议相同在不确定的情况下将它们设置为零是一个最安全的选择 
需要注意的是尽管 temperature 和频率惩罚/存在惩罚都能增加模型回复内容的多样性但它们所增加的多样性并不相同。频率惩罚/存在惩罚增加了单个回复内的多样性这意味着一个回复会包含比没有这些惩罚时更多不同的词语、短语、主题和话题。但当你两次输入相同的提示语时并不意味着会更可能得到两个不同的答案。这与 temperature 不同 temperature 增加了不同查询下回复的差异性在较高的 temperature 下当多次输入相同的提示语给模型时会得到更多不同的回复。 
我喜欢将这种区别称为回复内多样性within-response diversity与回复间多样性between-response diversity。temperature 参数同时增加了回复内和回复间的多样性而频率惩罚/存在惩罚只增加了回复内的多样性。因此当我们需要增加回复内容的多样性时参数的选择应取决于我们需要增加哪种多样性。 
简而言之频率惩罚和存在惩罚增加了模型所讨论主题的多样性并使模型能够更频繁地更换话题。频率惩罚还可以通过减少词语和短语的重复来增加词语选择的多样性。 
05 参数调整备忘单 
本节旨在为选择模型推理参数提供一份实用指南。首先该节会提供一些明确的规则决定将哪些值设为零。然后会提供了一些tips帮助读者找到当参数应当为非零时的正确值。 
强烈建议您在选择推理参数时使用这张备忘单。现在就将此页面保存为书签或者收藏本文章~ 以免丢失 
将参数设为零的规则 
temperature 
对于每个提示语只需要单个答案零。对于每个提示语需要多个答案非零。 
频率惩罚和存在惩罚 
当问题仅存在一个正确答案时零。当问题存在多个正确答案时可自由选择。 
Top-p/Top-k 
在 temperature 为零的情况下输出不受影响。在 temperature 不为零的情况下非零。 
如果您使用的语言模型具有此处未列出的其他参数将其保留为默认值始终是可以的。 
当参数非0时参数调整的技巧 
先列出那些应该设置为非零值的参数然后去 playground 尝试一些用于测试的提示语看看哪些效果好。但是如果上述规则说要将参数值保持为零则应当将其保持为零 
调整temperature/top-p/top-k的技巧 
为了使模型输入内容拥有更多的多样性或随机性应当增加temperature。在 temperature 非零的情况下从 0.95 左右的 top-p或 250 左右的 top-k 开始根据需要降低 temperature。 
Troubleshooting 
如果有太多无意义的内容、垃圾内容或产生幻觉应当降低 temperature 和 降低top-p/top-k。如果 temperature 很高而模型输出内容的多样性却很低应当增加top-p/top-k。 
Tip虽然有些模型能够让我们同时调整 top-p 和 top-k 但我更倾向于只调整其中一个参数。top-k 更容易使用和理解但 top-p 通常更有效。 
调整频率惩罚和存在惩罚的技巧 
为了获得更多样化的主题应当增加存在惩罚值。为了获得更多样化且更少重复内容的模型输出应当增加频率惩罚。 
Troubleshooting 
如果模型输出的内容看起来零散并且话题变化太快应当降低存在惩罚。如果有太多新奇和不寻常的词语或者存在惩罚设置为零但仍然存在很多话题变化应当降低频率惩罚。 
简而言之可以将本节作为调整语言模型参数的备忘单。您肯定会忘记这些规则所以立即将此页面加为浏览器书签或加入社区收藏夹以便以后作为参考。 
06 总结 
尽管定义token选择策略token sampling strategy的方式多种多样但本文讨论的参数——temperature、top-k、top-p、频率惩罚和存在惩罚——是最为常用的。这些参数在诸如 Claude、Llama 和 GPT 系列等模型中被广泛采用。在本文中已经说明了这些参数实际上都是为了帮助我们在模型输出的质量和多样性之间取得平衡。 
在结束之前还有一个推理参数需要提及最大token长度maximum token length。最大token长度即为模型停止输出回复的截止点即使模型的回复尚未完成。在经历了前文对其他参数进行复杂的讨论后我希望对这个参数的介绍不言自明。 
简而言之如果对参数的设置有疑问将temperature、频率惩罚和存在惩罚这些参数的数值设为零。若不起作用请参考上述速查表。 
END 
参考资料 
[1]https://www.linkedin.com/in/echoxlu/ 
[2]https://developer.nvidia.com/blog/author/anniesurla/ 
[3]https://developer.nvidia.com/blog/how-to-get-better-outputs-from-your-large-language-model/ 
本文经原作者授权由Baihai IDP编译。如需转载译文请联系获取授权。 
原文链接 
https://towardsdatascience.com/mastering-language-models-32e1d891511a