语言模型的困惑度PPL
什么是PPL
一句话说清楚PPL(Perplexity):PPL是语言模型对测试文本中每个token预测概率的几何平均数的倒数。

其中:
-
是测试样本中的总token数。 -
是模型对第 个token的预测概率。
纠正: 第一个ppl公式里的N代表测试集token数这里有点歧义,应该是代表样本的token数,不是代表词表token数
也可以等价地写为下面的形式:

PPL的性质
- 对于高质量数据集,如果模型预测的PPL越小,则模型的性能越好。对于低质量数据集,则未必。
- 如果模型能够完美预测每个token,则PPL为1。
- 如果模型预测样本中每个token的概率无限接近于0,则PPL为无穷大。前面纠正:是不是应该是概率为0(接近0),PPL才是无穷大
- 如果模型预测的为均匀分布,则PPL等于词表的大小。
- 同一模型和参数配置下,文本长度对PPL的影响。在理论上,PPL是归一化的指标,通常以每个token为单位计算,因此文本长度本身不应直接影响PPL的大小。然而,在实践中,文本长度可能间接影响PPL,原因包括:
- 文本内容的多样性:较长的文本可能包含更多复杂的句式和稀有词汇,增加模型预测的难度,从而提高PPL。
- 上下文信息的利用:对于一些模型,较长的上下文可以提供更多信息,有助于模型更准确地预测下一个词,可能降低PPL。
- 总体而言,在相同模型和参数配置下,文本长度对PPL的影响通常较小,但具体影响还取决于文本的内容和结构。
- 受词汇表大小和分词方式影响:不同的分词方法和词汇表规模会影响PPL的计算。较大的词汇表可能增加模型的PPL,因为稀有词的预测更具挑战性。
PPL的作用
- 评估语言模型的能力。
- 评估训练数据的质量。
- 构造评估数据集的其他指标,比如IFD(参考文档:Superfiltering:一种高效的SFT数据的过滤方法)。
- 监测PPL的变化趋势可以为模型的进一步改进提供线索。如果PPL明显升高,可能需要检查训练数据或训练策略。
用base模型还是Instruct模型计算?
计算PPL时,通常使用base模型更为合适,原因如下:
1. PPL的定义与用途:PPL(困惑度)主要用于评估语言模型在预测下一个词上的性能,是衡量模型对语言数据的概率分布拟合程度的指标。base模型经过大量无监督文本数据的训练,旨在学习语言结构和模式,因此更适合用于PPL的计算。
2. Instruct模型的优化目标不同:Instruct模型是在base模型的基础上,通过指令微调(Instruction Tuning)得到的,目的是使模型更好地理解和执行人类指令。这种微调过程可能改变模型的概率分布和生成行为,使其在PPL指标上不再直接可比。
3. 评估的一致性和可比性:为了确保评估结果的公平和一致,使用base模型计算PPL可以更准确地反映模型在纯语言建模任务上的能力。由于Instruct模型的特殊训练目标,其PPL可能受到微调数据和方式的影响,导致评估结果偏离实际语言建模性能。
需要注意的是:
• 如果你的目标是评估模型在指令理解和任务执行上的性能,PPL可能不是最合适的指标,应该考虑使用任务特定的评估方法,如准确率、F1分数等。
• 如果在Instruct模型上计算PPL,需谨慎解释结果,因为模型的生成策略可能与纯粹的语言建模不同,可能会影响PPL的可靠性。
总结:为了获得可靠和有意义的PPL评估结果,建议使用base模型进行计算。
困惑度和交叉熵的关系
在语言模型中,交叉熵用于衡量模型预测分布与真实数据分布之间的差异,其公式为:

其中:
-
是交叉熵。 -
是测试集中的总词数。 -
是第 \( i \) 个词。 -
表示从第 1 个词到第 \( i-1 \) 个词的词序列(即上下文)。 -
是模型在给定上下文 下预测词 的概率。
困惑度是交叉熵的指数形式,两者之间的关系为:
当使用自然对数时:

当使用以 2 为底的对数时:

- 交叉熵 衡量的是模型预测分布与真实数据分布之间的不匹配程度。交叉熵值越小,表示模型预测越准确。
- 困惑度 表示模型在预测下一个词时的平均不确定度。它是交叉熵的指数,因此也反映了模型的预测性能。困惑度越低,表示模型对下一个词的预测越有把握。
更多推荐

所有评论(0)