徐九 · 2023年03月21日 · 北京市

NLP / LLMs中的Temperature 是什么?

ChatGPT, GPT-3, GPT-3.5, GPT-4, LLaMA, Bard等大型语言模型的一个重要的超参数

大型语言模型能够根据给定的上下文或提示生成新文本,由于神经网络等深度学习技术的进步,这些模型越来越受欢迎。可用于控制生成语言模型行为的关键参数之一是Temperature 参数。在本文中,我们将讨论语言生成模型中Temperature 参数的作用,以及它如何影响生成文本的质量。

Temperature 在模型中的作用

Temperature 是一个超参数,可用于控制生成语言模型中生成文本的随机性和创造性。它用于调整模型的softmax输出层中预测词的概率。温度参数定义为在应用 softmax 函数之前用于调整 logits 的比例因子的倒数。

当Temperature 设置为较低的值时,预测词的概率会变尖锐,这意味着选择最有可能的词的概率更高。这会产生更保守和可预测的文本,因为模型不太可能生成意想不到或不寻常的词。另一方面,当Temperature 设置为较高值时,预测词的概率被拉平,这意味着所有词被选择的可能性更大。这会产生更有创意和多样化的文本,因为模型更有可能生成不寻常或意想不到的词。

温度参数通常设置为 0.1 到 1.0 之间的值,具体取决于生成文本中所需的随机性和创造性水平。温度值为 1.0 对应于标准 softmax 函数,其中预测词的概率未按比例缩放。

一般来说,Temperature 越低,GPT-3越有可能选择出现概率较高的单词。当我们想要GPT-3解释概念时,它特别有用,因为答案只有一个。如果想要产生想法或完成一个故事,Temperature 设置的更大会给我们带来更多的多样性。

比如说以下提示:

Prompt: “The quick brown fox”

Temperature = 0.1:

“The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog.”

Temperature = 0.5:

“The quick brown fox jumped over the lazy dog. The lazy cat was not impressed. The quick brown fox ran away.”

Temperature = 1.0:

“The quick brown fox jumped over the lazy dog. Suddenly, a flock of birds flew overhead, causing the fox to stop in its tracks. It looked up at the sky, wondering where they were going.”

可以看到,Temperature 对生成文本的质量和创造性有重大影响。低值生成更可预测和重复的文本,而高值生成更多样化和创造性的文本。

Temperature 的数学原理解释

神经网络的输出是词汇表中每个单词(实际上是标记)的概率分布,告诉它这些单词中任何一个可能跟随输入文本的可能性。

该概率分布由softmax函数计算:

如果将Temperature 参数(T)添加到softmax函数,则公式如下:

更深入的解释Temperature 参数:

如果当T趋于无穷时会发生什么。每个x_i / T都会趋于0,从而得到一个均匀分布。也就是说概率分布变得更 “平”, 这会导致结果更随机。

当T很小(比如0.1)时会发生什么。每个x_i / T之间的差异变得更加明显(例如5比1变成50比10),这样概率分布变得“更尖”,也就是说结果会更确定。

总结

Temperature 参数是语言生成模型中一个重要的超参数,可用于控制生成文本的随机性和创造性。通过调整该参数,可以生成更保守或更有创意的文本,虽然Temperature 参数是生成高质量文本的强大工具,但需要注意的是,它并不能提高生成语言模型的性能。因为生成文本的质量高度依赖于训练数据的质量、模型的架构以及其他超参数,如学习率和批处理大小。在设计和训练生成语言模型时,必须考虑所有这些因素。

另外就是Temperature 参数可能并不总是提高生成文本的质量,特别是在训练数据有限或有噪声的情况下。在这种情况下,其他技术,如数据增强、正则化或迁移学习可能更有效地提高模型的性能。

最后Temperature 可以控制语言生成模型的行为。通过适当的调整,可以得到我们期望的结果。比如说生成更确定的答案可以降低该值,而生成更发散和创造性的答案可以提高该值,所以尝试一下不同的值,看看这些更改对不的提示有什么影响,这会帮助我们更好的获得想要的结果。

https://avoid.overfit.cn/post/04f2376489184f53a6ae9c5d4b43dc97

作者:Lazy Programmer

推荐阅读
关注数
4139
内容数
718
SegmentFault 思否旗下人工智能领域产业媒体,专注技术与产业,一起探索人工智能。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息