当大型语言模型(LLM)进行训练或微调时,训练数据的事实正确性不可或缺。如果这些过程中使用的合成数据包含不准确之处,LLM可能会学习并延续这些错误,从而导致通常所说的“幻觉”——即听起来自信却不正确或毫无意义的陈述。因此,管理合成输出中的事实准确性不仅是质量控制的一个步骤;它是构建可信赖且可靠的LLM的基本要求。将探讨这些不准确之处的产生原因,并提供减少它们的策略。
了解合成数据中事实错误的来源
合成数据中的事实不准确并非凭空出现。它们通常源于以下一个或多个方面:
- 生成模型本身:如果你使用LLM生成合成数据(例如,在自指导方法中是一种常见做法),那么该生成LLM本身可能产生幻觉。这些生成的虚假内容,若未被发现,就会成为你“真实”合成数据集的一部分,随时可能误导你训练的下一个模型。
- 种子数据中的缺陷:合成数据生成通常从一些种子数据开始。如果这些初始数据,无论是人工编写还是从其他地方获取,包含事实错误,生成技术(特别是那些侧重于改写或风格转换的技术)可能会沿袭甚至放大这些不准确之处。
- 过度依赖表面模式:生成模型有时可能只从种子数据中学习到表面模式,而没有对深层原理的理解。这可能导致生成听起来合理且语法正确,但事实没有根据的文本。例如,模型可能会学习到“X公司发布Y产品”是一种常见模式,然后开始生成虚构的产品发布信息。
- 缺乏外部知识支撑:如果合成数据生成过程独立运行,不访问或不对照可靠的外部知识源进行验证,那么产生事实不正确陈述的可能性会大幅增加。模型基本上是根据其训练数据“凭空捏造”信息,而这些数据可能不完整或已过时。
加强事实准确性的策略
确保你的合成数据事实准确需要多方面的方法。以下是你可实施的几种策略:
1. 生成过程中的知识支撑
提高事实准确性最有效的方法之一是,将生成过程建立在可靠知识之上。这意味着为数据生成模型提供对事实信息的访问,作为参考。
- 检索增强生成(RAG):当使用LLM生成合成数据时,你可以用检索系统增强它。在生成特定主题的文本片段之前,系统首先从可信知识库(例如,精选文档库、内部数据库,甚至专业搜索引擎)中检索相关事实片段。LLM随后利用这些片段来指导其生成,使其更有可能产生准确的陈述。
例如,如果生成关于历史事件的合成问答对,RAG系统可以从百科全书获取细节,以确保答案正确。
- 基于事实文档进行条件生成:你可以直接将事实文档或结构化数据(如数据库中的表格)作为上下文提供给LLM,并指示它仅根据所提供的信息生成新样本。
2. 实施事实核查和验证流程
数据生成后,验证步骤必不可少。这可以从全自动化检查到人工审核。
-
自动化事实核查:
- 使用LLM作为事实核查工具:你可以专门使用另一个LLM,通过提示来评估合成数据中陈述的事实准确性。例如,给定一个生成的陈述“澳大利亚的首都是悉尼”,一个事实核查LLM可能会被提示:“以下陈述是对还是错?请提供简要说明。陈述:澳大利亚的首都是悉尼。”
- 与知识库交叉引用:通过编程对照结构化知识库(如维基数据或特定领域数据库)检查声明。这对于可验证的事实,如日期、统计数据或实体的属性,特别有效。
- 自定义分类器:训练分类器以识别可能为假或需要人工验证的陈述。这些分类器可以通过真假陈述的例子进行训练。
-
人工参与(HITL)验证:
- 对于准确性要求高的领域(例如,医疗信息、金融建议),或当自动化系统信心不足时,人工审核者不可或缺。
- 建立一个工作流程,其中合成数据的样本(对于重要数据集,可以是全部)由领域专家审核。这些专家可以纠正错误,标记问题生成内容,并提供反馈以改进生成过程本身。
以下图表展示了一个用于管理合成数据事实准确性的典型流程:
一个用于验证合成数据事实准确性的流程,包括自动化检查和可选的人工审核阶段。
3. 提示工程策略
当使用LLM进行生成时,你使用的提示是你的主要控制工具。精心设计提示,明确鼓励事实准确性:
- 直接指示:包含“确保所有信息事实准确”、“为所有声明引用来源”或“如果不确定,请说明信息无法核实”之类的短语。
- 角色扮演:提示LLM扮演专家或事实核查员。例如:“你是一位严谨的历史学家。生成一段关于第一次世界大战起因的文字,确保所有陈述的事实都得到历史共识的广泛接受。”
- 要求置信度分数:一些模型可以提供其生成内容的置信度分数。虽然这并非衡量事实准确性的完美标准,但它可能是识别不太可靠输出的有用信号。
4. 生成反面示例
这是一种更进阶的技术,你有意创建听起来合理但事实不正确的合成数据。然后将这些样本明确标记为“假”或“不准确”。用此类反面示例训练LLM可以帮助它更好地辨别事实与虚构。然而,这必须小心操作,以避免无意中让模型生成更多虚假内容。
5. 约束生成
对于某些类型的合成数据,特别是结构化或半结构化文本,你可以在生成过程中施加约束以确保事实正确性。
- 模式强制:如果生成JSON对象或表格数据,确保生成的值符合预定义模式、数据类型和有效范围(例如,产品价格应为正数)。
- 使用事实实体填充模板:使用模板,其中槽位只从已知、已验证实体列表中填充。例如:“【已验证公司列表中的公司】的CEO是【已验证人员列表中的人】。”
6. 基于下游模型表现的迭代改进
衡量你的合成数据事实准确性的最终检验通常在你使用它来训练下游LLM时到来。
- 监控幻觉:追踪LLM在目标任务中基于合成数据训练后产生事实错误的比率。
- 反馈循环:如果下游模型表现出高幻觉率,分析用于训练它的合成数据。找出可能导致这些错误的合成样本的模式或类型。利用此分析来改进你的数据生成和验证过程。例如,如果模型经常错误陈述历史日期,你可能需要改进日期相关合成数据的知识支撑或事实核查。
衡量事实准确性
评估事实准确性并非总是直接了当,但以下是常用方法:
- 声明提取和验证:
- 开发或使用工具自动从合成文本中提取离散的事实声明(例如,“[实体A]拥有[属性B]”)。
- 对照知识源验证这些声明。
- 事实准确率:计算经核实为真的已提取声明的百分比。对于一个包含 N 个声明的合成数据集 Dsyn,如果 Ntrue 个声明被核实为真,准确率 Af 可以简单表示为:
Af=NNtrue
- 人工评估:使用人工评估者根据李克特量表对合成数据样本的事实准确性进行评分(例如,1 = 完全不正确, 5 = 完全正确)。
- 下游任务表现:如前所述,衡量LLM(通过合成数据训练的)在特定任务中的幻觉率或事实正确性。这是一种间接但非常实用的衡量方法。
挑战与考量
- 可扩展性:全面的人工事实核查是资源密集型的。自动化系统可扩展但并非万无一失,并且可能难以处理依赖上下文的事实。
- “真实”的定义:何为“事实”可能很复杂。信息会随时间变化,有些陈述可能在一个情境下为真,但在另一个情境下为假。为事实准确性的定义建立清晰的指导原则。
- 知识支撑的成本:在生成过程中使用RAG或频繁调用知识库API会增加延迟和计算成本。
- “未知之未知”:如果你不知道要查找什么,就很难检查出不准确之处。审核团队中的多元视角会有所帮助。
管理合成输出中的事实准确性是一项持续的工作,结合了审慎的生成策略、验证机制和持续的监控。虽然它增加了合成数据流程的复杂性,但在模型可靠性和可信度方面的回报非常可观。通过主动处理潜在的不准确之处,你为LLM预训练和微调工作建立了一个更坚实的起点。