自回归采样
LLM推理时常常使用自回归采样,其过程如下:
- 前缀输入到模型中,经过一次推理,将输出结果处理+softmax成概率分布,采样生成下一个token
- 生成的token和前缀组成新的前缀,重复1,直到生成EOS结束符或者达到最长token长度。
第一步中从概率分布中采样得到下一个token,有以下几种常见的采样方式:
- 贪婪采样(argmax):选择概率最高的词
- 随机采样:根据概率分布随机选择词汇,每个词被选择的概率与其在分布中的概率成比例
- Top-k采样:只考虑概率最高的前K个词,并在这个子集上随机采样
- Top-P采样:选择累计概率达到特定阈值p的最小词集合,并在这个集合中随机采样
Top-K
Top-K采样在概率分布中选择概率最高的K个词,对这K个词的概率重新进行概率分布,将K个词作为子集,为了维持概率分布的一致性和归一化特性,将子集重新归一化,使得K个词的概率之和为1,最后基于这个重新分布的概率,随机选择一个词作为下一个词。
Top-P
Top-K能在保持复杂度的情况下去除分布尾部的一些噪音,但其最大的问题是设定单一的K无法适用各种分布,对于左(扁平分布),右(峰值分布)两种不同的分布应用同一个K是不合理的,当k=4时,对于扁平分布在thought knew had saw
中选择很合理,对于峰值分布,待选项为hot cooling warm on
,其中warm on
的概率值极低,没必要加入待选。
受此启发,Top-P根据分布的形状灵活的设定K,Top-P从概率最高的词开始构造采样空间,知道采样空间里的所有词的概率和超过阈值
P
P
P。
温度采样(temperature sampling)
logits:在深度学习中,模型的输出(在应用softmax之前)被称为logits,每个词的logit作为下一个词的相对得分。
在将logits传递给softmax函数之前,首先除以一个“温度”值,这个操作实际上是在调整logits的尺度。当温度值高(比如大于1),通过除以一个较大的数值,较不可能的词(高logit)的概率被提高,较可能的词(低logit)的概率被降低,logits之间的差异减小,导致softmax后的概率分布更加平坦。从而增加了文本生成的多样性和随机性;当温度值低(比如小于1),logits间的差异变大,导致softmax后的概率分布更加尖锐。这说明较可能的词(高logit)的概率更高、更加突出,从而使得文本生成更加集中于高概率的词。
概念来源:在热力学中,高温度状态下,系统的微观状态更加均匀分布,因为高能量状态(低概率)和低能量状态(高概率)之间的差异减小。相反,低温度状态下,系统更倾向于低能量(高概率)状态。