目录
1. Beam Search(束搜索)
Beam Search 是一种启发式图搜索算法,用于在序列预测问题中,特别是在自然语言处理中生成文本时。它扩展了贪心搜索的概念,通过保持一定数量(称为“束宽”)的最佳候选解决方案来进行搜索,然后在每个步骤中探索这些候选解的后续步骤。
实现 | 在每一步,算法都会为每个候选序列生成所有可能的下一个步骤,并选择概率最高的前N个序列,其中N是束宽。 |
优点 |
|
缺点 |
|
2. 贪心解码(Greedy Decoding)
贪心解码是一种简单直接的解码策略,它在每一步都选择概率最高的下一个词。
实现 | 在每一步,从模型预测的词汇分布中选择具有最高概率的词作为输出。 |
优点 | 计算速度快,因为每步只选择一个最佳选项。 |
缺点 | 很容易陷入局部最优解,不一定能找到全局最优解。 |
3. Top-k Sampling
Top-k Sampling 是一种随机采样策略,它从模型预测的词汇分布中选择概率最高的k个词,然后基于这些词的概率分布随机选择下一个词。
实现 | 在每一步,先确定一个k值,然后从概率最高的k个词中随机选择下一个词。 |
优点 | 通过引入随机性,可以避免贪心解码的局部最优问题。 |
缺点 | k的选择可能会影响生成文本的质量。 |
4. Top-p (Nucleus Sampling)
Top-p Sampling,也称为Nucleus Sampling,是一种更加精细的采样策略,它选择累计概率超过某个阈值p的最小集合,然后从这个集合中随机采样。
实现 | 选择一个概率阈值p,然后从累积分布中选择一个最小的词集合,使得这个集合的累积概率至少为p,随机选择下一个词。 |
优点 | 能够生成更加多样化且连贯的文本。 |
缺点 | 对于p的选择敏感,可能需要根据具体应用进行调整。 |
5. Temperature(温度)
Temperature 是用来控制采样过程中随机性的超参数。较低的温度值会使得模型倾向于选择概率较高的词,而较高的温度值会增加低概率词被选中的机会,从而增加生成文本的多样性。
实现 | 通过将模型的输出概率分布除以温度值,并应用Softmax函数进行归一化,来调整每个词被选中的概率。 |
优点 | 通过调整温度值,可以平衡确定性和多样性之间的关系。 |
缺点 | 需要仔细选择温度值,否则可能导致生成文本过于随机或过于重复。 |
1. Softmax函数与Temperature
在文本生成中,我们通常使用softmax函数来计算每个可能的下一个词的概率。softmax函数的表达式为:
softmax(x_i) = exp(x_i) / Σ exp(x_j)
其中,x_i是模型计算出的每个词的得分,Σ是对所有可能的词进行求和。
2. Temperature的影响
Temperature(T)的引入会改变softmax函数的表达式,变为:
softmax(x_i/T) = exp(x_i/T) / Σ exp(x_j/T)
3. Temperature的作用
可以看到,Temperature实际上是改变了每个词的得分x_i的尺度。当T>1时,得分的尺度被缩小,各个词的概率差异变小,输出更加随机。当T<1时,得分的尺度被放大,各个词的概率差异变大,输出更加确定。