自然语言大模型的温度是如何影响输出的?

2024-03-10
2分钟阅读时长

温度是用于控制自然语言大模型生成多样性的。较低的温度会使模型的概率分布更加明显尖锐,较高的温度会使模型概率分布更加平缓,温度是控制模型生成结果的多样性和准确性进行权衡。

一、公式

$$ x_i'=\frac{x_i}{T} $$

其中 $x_i$ 是模型原始输出,$T$ 就是温度,取值范围是 $0\sim 1$。看上式就是 $x_i$ 直接除以温度得到新的 $x_i’$。实际效果是将所有值都统一变大,温度越小,变大得越明显。这就导致在 softmax 中的 $e^x$ 部分很大,这个函数 $e^x$ 的特点是 x 越大,就越陡峭,实际效果就是指数级的拉大了 $e^x$​​ 的之间差别。

结合 softmax 的最终完整概率输出的公式: $$ p_i=\frac{ \exp (x_i / T) }{ \sum_j \exp (x_j / T) } \tag 1 $$

二、直观的理解

下面是实际的实验代码:

import torch

a = torch.tensor([0.3, 0.6, 0.9])

print('原始', a.softmax(-1))
print('0.1 低温度', (a / 0.1).softmax(-1))
print('0.5 中温度', (a / 0.5).softmax(-1))
print('0.9 高温度', (a / 0.9).softmax(-1))
print('2.0 高温度', (a / 2.0).softmax(-1))

# 输出
# 原始 tensor([0.2397, 0.3236, 0.4368])
# 0.1 低温度 tensor([0.0024, 0.0473, 0.9503])
# 0.5 中温度 tensor([0.1628, 0.2967, 0.5405])
# 0.9 高温度 tensor([0.2302, 0.3213, 0.4484])
# 2.0 高温度 tensor([0.2848, 0.3308, 0.3844])

可以看到当温度越低,原本概率高的项,概率会更高,低的会更低,使得模型输出概率更具确定性。但温度高的时候,如 1.0,就是保持模型原本的概率分布。

补充: 结合信息熵的角度看,低温度是降低信息熵的,更具确定性。 $$ H(P)=E_P\left[-\log P(x)\right]=-\sum_{x\in X}P(x)\log P(x) \tag{离散型随机变量 X} $$ 其中 $-\log P(x)$ 是香浓信息量,确定性越大信息量越少,假设概率是 1,那么信息量就是 $-\log(1)=0$ 。

三、如何根据概率选中样本

采样的时候采用多项式采样 multinomial可以理解为,首先在 0~1 之间产生一个均匀分布的随机数,该随机数小于概率值表示被选中。当概率值越大比如 0.9,那么就更加容易被选中,如果是 1 的话,那就百分百会被选中了。


参考

Avatar

YISH

这个人很懒,什么都没有