采样策略
LLM通过自回归的方式,一步步预测出可能的下一个token。每次预测时,模型会输出一个概率分布,表示每个token作为下一个token的可能性。为了从这个分布中采样出一个具体的token,通常会使用一些采样参数来控制采样的方式和结果。这个过程的设计称为解码策略,分为候选集筛选和采样两步。
- 候选集筛选:通过temperature、top_k和top_p等参数来调整原始的概率分布,筛选出一部分可能性较高的token作为候选集。
- 采样:从候选集中随机选择一个token作为下一个输出。
1. Temperature
temperature是对模型输出的概率分布(logits)进行缩放的参数,高温度会使分布更加平坦,即差距变小,低温度会使分布更加尖锐,即差距变大。
图示表示为:
2. Top-k
高温可以使模型输出更有创意,但是由于候选集是词表全部token,可能导致模型采样出完全不相关的token。top_k设置只在概率最高的k个token中进行采样,避免了低概率token的干扰。
3. Top-p
top_k采样中,k是固定的,对于两种极端情况,当概率分布非常平坦时,k值需要设置很大才能涵盖所有合理的token,而当概率分布非常尖锐时,k值又需要设置很小才能避免采样到低概率token。top_p采样通过设置一个累积概率阈值p,动态选择候选集大小。
从最高概率token开始累加,直到这些token的累积概率超过p为止。这样可以自适应地选择候选集大小。