Py学习  »  chatgpt

【ChatGPT有点热】浅聊Temperature参数对大语言模型的推理能力的影响

AINLP • 6 月前 • 122 次点击  

 “ 


前两天在玩OpenAI接口的时候,发现一个关于temperature的蛮有意思的点,记录下来,希望能抛砖引玉,引出大家的进一步的观点,或者给大家使用大模型的时候提供一些思路。

本文大致为观察和实验、原理探索、结论三个方面。

老样子,先把结论献上,业内同学可以不看后面的原理解释的内容。

结论

Temperature影响模型的生成内容,进而影响模型的“推理能力”

GPT4在某些场景下,受temperature的影响较GPT3.5小很多。

文末提供了不同场景的参考temperature,但具体值还是建议多测试实验,加入“let's think step by step”这类提示符,可以提高生成效果,特别是推理场景。

另外,也引出几个问题和思考, 希望可以与大家一起交流:

思考

为什么temperature会影响“推理”能力?

大模型的推理能力,是真的在“推理”,还是只是统计层面的概率分布?

为什么GPT4的结果受temperature影响要较GPT3.5小很多?


观察

套壳站泛滥,很多站会宣称自己用了GPT4,实际是3.5。通过一些特殊的问题,可以分辨出模型是GPT3.5还是GPT4,这本质上是看模型的推理能力,有这么一个小学生级别的算术题:

我的狗Tony的年龄是我的一半,我今年10岁,65年后,Tony多少岁,只需要回答年龄的数字

答案很明确,10/2+65=70岁。但是这个问题确实蕴含了理解和推理,以及答案格式约束。即,通过“我的狗Tony的年龄是我的一半”和“我今年10岁”推断出Tony的目前年龄是5岁,进而得知65年后Tony是70岁,返回70这个数字。

但是对于语言模型来说,这是一个颇具挑战性的任务,一来是我选择狗Tony,65年后,这一现实中出现的比较少的语料组合,防止模型简单的重复已有的语料,另外,这个问题是数学运算和逻辑推断的结合,而非简单的创作,另外也有输出格式的要求。

当然结果也是蛮有意思,下面是GPT3.4和4网页版:

下面依次是文心一言、通义千问、讯飞星火和Claude:

可以看到,ChatGPT网页版(3.5)和讯飞星火回答正确,但是比较啰嗦,GPT4出人意料的回答错误,但是遵循了只回复年龄数字的要求。

上面是网页版的回答。

由于网页版没法调整temperature参数,我们调用API,来进行实验,看temperature是否会对推理能力产生影响。

实验

下面是API接口返回结果,主要针对OpenAI的系列模型。

当temperature为1.5的时候,gpt-3.5-turbo得到了正确的答案。但是似乎结果不稳定,固定1.5多次尝试:

结果很发散,虽然确实有一次正确的回答。

gpt-3.5-turbo-16k类似,这里就不展开。

而gpt-4稳如老狗(这让我进一步加深了, 网页版GPT4和API的GPT4并不是同样的模型的观点)

接下来,让我们加入“magic words”: 

Let’s think step by step

全部正确!这是非常让人惊喜但是也疑惑的,加入这么简单的一句话,就能完全改变结果。

私以为,这句话的加入,让推理过程显式的生成出来,而前面生成的内容也会进一步影响最终的结果,有了不同step的结果做辅助,最终结果就更可靠。

实验和观察结束,本着知其然,也要知其所以然的原则,管中窥一下豹

首先我们需要定义,什么是推理能力。

 “ 

推理是一种认知过程,涉及使用证据、论证和逻辑来得出结论或做出判断。【1】

这是一般意义上的推理,但对于大语言模型来说,推理能力被定义为:可以迭代或递归地分解问题,或者说将复杂问题分解为顺序的中间步骤,然后生成最终答案。【2】【3】

但不管是通过Chain of Thoutght, 还是“let’s think step by step”

总归这里的推理,还是显示的推理,对此,也有很多人提出了自己的质疑,包括Lecun

也有对Chain of Thought进行了研究,虽然确实是可以提高模型效果,但是也存在一个问题,即很有用,但并没有回答模型为什么可以进行“推理”。

写到这可能有些跑题,但如果只讨论temperature,也只是回避了推理能力是否存在这一问题。

但关于推理,就先到这,回到Temperature。

对于OpenAI接口,这个参数的定义是这样的:

简而言之这个参数的效果就是越大,生成的结果越随机,我们用一个简单的问题“一加五等于”来进行测试:

可以看到,当temperature大于1.5后,开始胡说八道。

但比较有意思的是对于GPT4模型,似乎不受影响。

Temperature在模型生成的时候到底如何影响结果?

由于OpenAI对模型完全闭源,我们只能从文档中看到只言片语:

可以认为,GPT系列模型采用了Temperature sampling和Nucleus sampling【4】,下面的公式就是Temperature sampling的计算过程:

我们看到的模型生成的文字,实际上是逐字生成的,可以简单的理解为,模型每次在一堆字里面,以一定的概率去挑选可能的字,比如生成“我是小老弟”,在有了“我是小”的情况下,去在一堆字里面挑选出了“老”这个字。

那么temperature如何起作用?

举例:有一堆字,这堆字,每一个字被挑中的概率如下:

[0.04, 0.01, 0.12, 0.17,0.21, 0.03,0.02, 0.2,0.055,0.1, 0.045,]

Temperature可以对这些值进行缩放,如图,原始的分布是当T=1时候(左上角),

可以看到,T越小,会把之前较大的值放的更大,较小的收的更小;当T较大的时候,会将这些值拉的更均匀,换句话,使每个字被选到的概率更平均。

这也是为什么当temperature越大,模型会越喜欢“胡说八道”。

从Transformer的代码来看,

Temperature sampling的实现也确实是比较简单的, 当然这里和OpenAI接口的区别是,不能设置为0,最大值可以超过2。

用ChatGLM2做测试:

可以看到,temperature太高基本上就处于完全不可用的状态,但加入top_p结果就能恢复正常。

这也就是OpenAI接口temperature限制0-2,同时不建议与top_p同时使用的原因。

至此,temperature如何在模型生成中影响结果,已经得出了结论。

但也引出了文初的3个问题。

小老弟目前无法回答这3个问题,希望可以与读者们一起探讨。

但总归,我们得到结论,temperature和top_p这两个参数,对模型的生成结果,甚至推理能力,有很大的影响。

最后,也放上不同场景的参考temperature,当然,具体的值,也是要大家根据自己的真实业务需求进行调整测试。

参考资料:

【1】https://arxiv.org/pdf/2212.10403.pdf

【2】https://arxiv.org/pdf/2305.14992.pdf

【3】https://arxiv.org/pdf/2212.09597.pdf

【4】https://platform.openai.com/docs/api-reference/chat/create#chat/create-temperature


进技术交流群请添加AINLP小助手微信(id: ainlp2)

请备注具体方向+所用到的相关技术点

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/162789
 
122 次点击