大家好啊,我是董董灿。
在对大模型进行微调训练时,经常会看到几个重要的超参数,用来控制大模型生成文本的效果。
其中一个超参数叫做 Temperature,中文名字叫温度,初见时很是不解,为啥一个模型还有温度这个选项。
其实温度这个超参数,是可以控制模型输出的多样性。
可以这么理解,热力学上,温度越高,分子运动越剧烈;温度越低,分子运动越缓慢。
在大模型中也是这样,温度这个参数的值越高,代表了输出结果越多变,越"歇斯底里",用褒义词讲,叫越具有多样性和创意性。
那么这个参数到底是如何控制大模型的输出效果的呢?今天就一起来了解一下吧。
1、温度影响的是 softmax 函数
之前介绍过 softmax 这个函数,它的作用是将原始数据归一化到 0-1 之间的概率分布,并且拉开输入数据之间的差距,让大的数据概率变得更大,小的数据概率变得更小。
关于softmax的原理介绍,查看:10 分钟搞懂 softmax 的底层逻辑。
对应到大模型中,softmax 的作用体现如下:
-
我们在跟大模型对话时,它会输出文本作为回答。模型在预测下一个输出的单词时,首先会为每个可能的词计算一个分数(这个分数基于模型的当前状态和它对语言的理解)。
-
然后,softmax 函数将这些分数转换为概率(上面的链接查看具体过程),转换的过程就会使得分数较高的词的概率更高,而分数较低的词的概率更低,从而模型选择概率更高的单词作为输出。
这是 softmax 函数的作用。
不过这是没有 Temperature 参数的 softmax,一旦加上 Temperature 参数,就会使的这个函数发生一点微妙的变化。
首先,在不考虑 Temperature 的情况下,softmax 函数的标准形式是这样的:
这里,Z 是一个向量,其中每个元素 Zi 代表模型为一个特定词语计算出的分数。理解为这是一对备选的下一个单词或词组的分数值。
函数 e^Zi 是对每个分数求指数值,分母是对所有分数的指数值求和,从而确保了所有单词的概率加起来等于1。
2、 高温度让 softmax 变得平滑
当引入 Temperature 参数 T 时,公式变为:
在这个修改后的公式中:
-
当 T = 1 时,它就是普通的 softmax 函数。
-
当 T > 1 时,分数之间的差异会减小,导致概率分布更加均匀(增加随机性和创新性),T越大,概率差异越小。
-
当 T < 1 时,分数之间的差异会增大,使得高分数的词的概率远远高于低分数的词(增加确定性和预测性)。
因此,Temperature 通过调节分数的缩放来影响 softmax 函数的输出,进而控制模型在生成文本时的随机性和创新性。
再说的通俗一点,本来模型倾向于选择最高概率的单词(老大)作为输出,一旦将 T 调高,那么大家的概率会变的更加均匀,大家的差距拉的不会很开,此时选择老大还是老二差别不大。
因此,模型可能会选择老大,也可能会选择老二,甚至老三,这样模型就有更多选择性,从而变得更加有创意。
因此,当你调整 Temperature 参数时,实际上是在调节这个转换过程中的“平滑度”或“尖锐度”。
上图展示了这个过程:在低温度下(黄色),softmax 输出的概率函数更加尖锐,意味着高分数的词语概率会更高,而低分数的词语概率会更低。
这导致模型更倾向于选择那些最有可能(概率最大)的词语,一种场景就是,给大模型相同的提问,每次都会得到类似的回答。
在高温度下(蓝色),softmax 输出的函数变得更平滑,即使分数较低的词也有合理的被选择概率。
此时对于相同的提问,就会使得模型具有更大概率生成不一样的回答,从而表现出更加有创意。