文本生成与采样策略 (Text Generation Sampling)
我们已经学习了如何构建和训练一个基于 Transformer Decoder-only 的语言模型。模型训练的目标是学习预测给定前缀下下一个 token 的概率分布。但是,训练完成后,我们如何利用这个模型来生成全新的、连贯的文本呢?
这就涉及到推理过程和采样策略。推理是模型投入实际使用、生成文本的过程;采样策略则是从模型预测的概率分布中选择下一个 token 的方法。不同的策略会对生成文本的质量、多样性和“创造力”产生显著影响。
本篇博客,我们将:
- 详细解释文本生成的逐步推理过程。
- 介绍并对比多种采样策略:贪婪搜索、束搜索、温度采样、Top-K 采样、Top-P (Nucleus) 采样。
- 解释各种策略的优缺点和适用场景。
- 动手编写代码,基于之前实现的 Decoder-only 模型,演示不同的采样策略如何影响生成结果。
我们将基于上一篇博客中的字符级 Decoder-only 模型和数据准备代码。请确保你已经完成了上一篇的代码实现,或者直接将上一篇的完整代码作为基础进行修改。
1. 推理过程:逐步生成
文本生成是一个自回归 (Autoregressive) 的过程。这意味着模型一次只生成一个 token,并且生成当前的 token 依赖于所有先前已经生成的 token。整个过程是逐步进行的: