大模型根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。为了生成输出文本,模型会逐个预测每个 token,直到达到一个终止条件(如一个标点符号或一个最大长度)。在每一步,模型会给出一个概率分布,表示它对下一个单词的预测概率。
贪心采样(Greedy Search)
直接选择分布中概率最大的 token
优点:计算简单高效
缺点:文本重复,缺乏多样性
集束搜索(Beam Search)
启发式图搜索算法,每轮保留 num_beams 个输出作为候选。num_beams 设置为 1 时则退化为贪心采样
优点:不仅仅关注当下的策略,一定程度上使最终得到更优的序列
缺点:num_beams 固定的情况下每次生成的结果依然相同,缺乏多样性
Top-k 采样
对前 k 个 token 的概率进行归一化,根据归一化结果的概率随机挑选出 token
优点:随机性有利于提高生成的多样性
缺点:如果前 k 个集合经常包含相似的标记,则仍然有可能出现重复;在分布陡峭的时候仍会采样到概率小的单词,或者在分布平缓的时候只能采样到部分可用单词;确定 k 的最佳值需要进行实验,因为 k 太小可能会导致可预测性,而 k 太大可能会重新引入过多的随机性
Top-P 采样 - 核采样
选择概率从大到小累计不大于 P 的 token,然后归一化随机选择
可以和 Top-k 结合使用,p 在 k 之后启用,用于动态设置 token 候选列表的大小。Top-P 的引入使得分布平缓时能存在更多候选,分布陡峭时候选数目少
缺点:P 太小则输出固定,太高则模型输出易混乱
Temperature
将模型输出的 logit 除以 T 后再进行归一化
T>1 时:除以大于 1 的temprature的效果是使 logit 在 softmax 操作之前彼此更接近。这种分布的“平坦化”意味着 logit 之间的差异不那么明显,从而导致更均匀的分布,其中可能性较小的 token 获得更高的被选中机会,生成会更加多样
T<1 时:相反,除以小于 1 的温度会放大 logit 之间的差异,使分布“更尖锐”。这会导致可能性较大的 token 的概率更高,而可能性较小的 token 的概率会显著降低。
一般来说,prompt 越长,描述得越清楚,模型生成的输出质量就越好,置信度越高,这时可以适当调高 temperature 的值;反过来,如果 prompt 很短,很含糊,这时再设置一个比较高的 temperature 值,模型的输出就很不稳定了。
联合采样
思路:通常我们是将 top-k、top-p、Temperature 联合起来使用。使用的先后顺序是 top-k->top-p->Temperature。主流大语言模型(Qwen、Llama、GPT)大多采用 Top-p 采样 作为核心策略,同时结合 温度调节 来优化生成质量和多样性。