趋近智
后续部分将讨论定性评估和人工判断,而本节侧重于数据。定量指标提供客观、可扩展且可重复的方法来评估合成文本的特点。这些测量对于追踪生成过程的改进、比较不同的数据创建方案,以及发现多样性不足或流畅度不佳等问题,在它们影响下游大型语言模型应用之前,非常有帮助。让我们来看看一些评估合成文本的常用指标。
这组指标评估生成文本的基本质量。它是否自然流畅?它是否合理?流畅连贯的文本是合成数据有用的根本,无论是用于预训练还是微调。
困惑度是评估语言模型生成文本流畅性的一种常用指标。简单来说,它衡量一个概率模型对给定文本序列的“惊讶”程度。较低的困惑度得分表示语言模型认为合成文本更可预测,这通常说明文本更流畅或听起来更自然。
假设你有一个在大量自然语言语料库上训练的语言模型。如果这个模型能轻松预测你的合成数据集中句子的下一个词,那么该句子的困惑度将很低。反之,如果句子显得别扭、语法不正确或没有意义,模型将难以预测它们,从而导致更高的困惑度。
困惑度 (Perplexity, PPL) 通常计算为序列的指数化平均负对数似然。对于文本序列 W=w1,w2,...,wN,其中 N 是词元数量:
PPL(W)=exp(−N1i=1∑NlogP(wi∣w1,...,wi−1))这里,P(wi∣w1,...,wi−1) 是语言模型估计的第 i 个词元在给定前序词元时的概率。
虽然较低的困惑度通常更好,但它并非衡量质量的完美指标。极低的困惑度有时可能表示文本过于重复或过于简单,虽然易于预测,但缺乏内容丰富性。困惑度也受评估模型的词汇量和所用分词方案的影响。因此,困惑度值在一致条件下进行比较时最有意义:即对所有要比较的数据集使用相同的评估语言模型和分词方法。
除了困惑度,你还可以考虑:
合成数据生成中常遇到的问题是文本过于单一、重复,或者只涵盖狭窄的主题、风格或结构。这种缺乏多样性的情况会限制合成数据用于训练大型语言模型的效用。多样性指标有助于量化生成文本的丰富性和变异性。多样性分数,有时在研究中表示为 Ds,旨在衡量这方面。
这是一组直观且常用的指标,用于衡量词汇多样性,即文本中短语的种类。它的计算方法是独特N元语法(n个词的序列)占N元语法总数的比例。
较高的Dist-n分数通常表示更大的词汇多样性。公式为:
Dist-n=N元语法的总数量独特N元语法的数量例如,如果一个合成数据集总共包含1000个二元语法,其中650个是独特的,那么 Dist-2 = 650/1000 = 0.65。
这里有一个简化的Python示例来说明Dist-1的计算:
# Dist-1(一元语法多样性)的简化示例
# 注意:在生产环境中使用可靠的分词器,并考虑大小写/标点符号。
def calculate_dist_1(texts_list):
all_words = []
for text_item in texts_list:
# 通过空格分割和转换为小写进行基本分词
all_words.extend(text_item.lower().split())
if not all_words:
return 0.0
unique_words = set(all_words)
return len(unique_words) / len(all_words)
# 使用示例:
dataset_alpha = ["the quick brown fox jumps over the lazy dog",
"a nimble red fox leaped over a sleeping canine"]
dataset_beta = ["the quick brown fox jumps over the lazy dog",
"the quick brown fox jumped over the lazy dog again"]
# 注意:实际数据集会大很多,才能获得有意义的分数。
print(f"数据集 Alpha Dist-1: {calculate_dist_1(dataset_alpha):.3f}")
print(f"数据集 Beta Dist-1: {calculate_dist_1(dataset_beta):.3f}")
在这个小例子中,数据集 Alpha 可能显示更高的 Dist-1,因为它使用了更多样的词汇。
BLEU(双语评估替身)是一种传统上用于通过比较机器生成译文与一个或多个人工参考译文来评估机器翻译质量的指标。自我BLEU巧妙地调整了这一点,它将合成数据集中的每个句子与该数据集中的所有其他句子进行比较。
在这种情况下,较低的自我BLEU得分是理想的。它说明合成语料库中的句子彼此之间没有过度相似,表明多样性更高。反之,较高的自我BLEU得分则指向生成文本的重复性。
如果你的合成数据旨在模仿特定风格、涵盖特定主题,或作为特定任务(例如,生成医疗对话或Python代码解释)的训练数据,你将需要评估其与这些目标语义一致性的指标。
当你有参考数据集时,这些指标特别有用,参考数据集是真实的、高质量的数据语料库,你的合成数据试图扩充、复制或从中获取启发。
使用这些指标时,你将你的合成语料库(或从中提取的样本)与一个可信的参考语料库进行比较。较高的分数通常表示在内容和风格方面与参考数据有更好的一致性。
词嵌入和句子嵌入(源自 Word2Vec、GloVe 或基于 Transformer 的模型如 Sentence-BERT 等)将语义信息表示为高维空间中的密集向量。这些嵌入可用于评估语义特性:
句子嵌入的二维投影。“合成数据 (覆盖良好)”点(绿色叉形)与“真实数据点”(蓝色圆形)重叠良好,表明语义覆盖充分。“合成数据 (覆盖不佳/漂移)”点(红色菱形)占据了不同且较小的区域,这可能说明它未能捕捉真实数据的完整语义范围,或已偏离目标分布。
归根结底,如果你正在为特定的下游大型语言模型任务(例如,为指令遵循、摘要或代码生成微调模型)生成合成数据,最直接的评估是使用这些合成数据训练或微调的模型在该任务上的表现如何。
这种评估直接衡量了你的合成数据对于预期目的的实用性,使其成为一个非常重要的质量指标。
有效使用定量指标不仅仅是计算数字:
temperature 设置,或基于规则系统中规则的复杂性)时指标如何变化。这种理解可以帮助你调整过程以获得期望的结果。evaluate 库: 一个全面的库,提供易于使用的各种指标实现,包括 BLEU、ROUGE、METEOR 和困惑度(通常与其 datasets 库结合使用)。定量分析提供关于合成数据特点的客观数值证据。它说明了你的数据有哪些属性。在后续部分,我们将通过查看定性评估方法来补充这一点,这些方法有助于说明数字背后的“原因”,并提供关于数据质量的重要人工见解。定量和定性评估的结合构成了一个稳固的评估框架。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造