GraphGen:通过知识驱动的合成数据生成增强大语言模型的监督微调

https://arxiv.org/abs/2505.20416

https://github.com/open-sciencelab/GraphGen

摘要

大规模语言模型(LLM)的微调通常需要大量高质量的有监督数据,而这些数据的获取既昂贵又耗时。尽管合成数据生成已成为一种有前景的解决方案,但现有方法常常存在事实不准确、长尾知识覆盖不足、知识结构过于简单以及输出同质化等问题。为了解决这些挑战,我们提出了GraphGen——一个面向三类关键问答(QA)场景(原子QA、聚合QA和多跳QA)的知识图谱引导框架。GraphGen首先从源文本中构建细粒度知识图谱,然后利用期望校准误差指标识别LLM的知识盲点,优先生成针对高价值长尾知识的QA对。此外,GraphGen结合多跳邻域采样以捕获复杂的关系信息,并通过风格控制生成提升QA数据的多样性。在知识密集型任务的闭卷设置下,实验结果表明GraphGen优于传统的合成数据方法,为有监督微调中的数据稀缺问题提供了更可靠和全面的解决方案。

引言

随着大语言模型(LLM)的快速发展,如何高效地将新知识注入通用模型成为亟需解决的问题。监督微调(SFT)是当前广泛采用的方法之一,它能够让LLM通过标注数据学习领域知识。尽管SFT在提升模型知识能力方面效果显著,但其成功高度依赖于大规模高质量训练数据的获取,而这往往成本高昂且需要大量领域专家参与。

为缓解数据瓶颈,研究者们探索了基于LLM的合成数据生成方法,让模型自主生成训练样本,如问答对或知识片段。已有方法尝试通过扩充训练资源来提升领域适应能力。然而,在知识密集型的闭卷任务中,这些合成数据生成流程存在以下关键问题:

  • 事实不准确:LLM容易产生幻觉,生成不真实或错误的知识,导致训练数据不可靠。
  • 长尾知识覆盖不足:由于LLM优化目标偏向高频常识,难以捕捉稀有的领域知识,导致对长尾知识的覆盖不足,而这些知识对知识密集型应用至关重要。
  • 知识结构表达浅显:现有合成数据流程多生成简单的问答对,难以有效建模复杂的知识结构,如多跳推理等需要跨多源信息整合的场景。
  • 同质化与过拟合风险:合成数据常出现模板化、句式重复、难度单一等问题,导致模型泛化能力下降,甚至出现灾难性遗忘或模型崩溃。

近期有工作尝试引入蒙特卡洛树搜索和链式思维等机制提升合成数据质量,但这些方法主要聚焦于逻辑推理,对知识密集型闭卷任务的适应性有限。

针对上述挑战,我们提出了 GraphGen ——一个基于知识图谱(KG)校准的数据合成框架,通过结构化知识引导系统性提升合成数据质量。GraphGen面向三类关键场景:原子QA(基础知识)、聚合QA(复杂综合知识)、多跳QA\(k\)跳推理)。

具体而言,我们首先从源语料构建细粒度\(KG\),然后计算每个三元组的期望校准误差(ECE),识别模型信心与实际准确率不一致的知识点,即“知识盲区”。框架优先对这些高ECE三元组进行定向数据增强。为保证新生成样本的上下文连贯性,我们采用\(k\)跳邻域子图采样,并施加结构约束。最后,通过风格控制生成,将采样子图转化为多样化的QA对,适用于SFT。实验结果表明,GraphGen在上述三类场景下均优于五种主流数据合成基线方法。

综上,我们的主要贡献如下:

  • 提出GraphGen,一个基于KG的数据合成框架,能够保留知识关联、提升覆盖率,适用于原子QA、聚合QA和多跳QA等场景。
  • 构建了基于ECE的知识盲区识别模块,引导LLM聚焦高价值长尾数据。
  • 通过系统实验验证,GraphGen在知识密集型闭卷任务的SFT中显著优于现有主流方法。

相关工作

基于知识图谱的数据生成

知识图谱为领域特定信息提供了结构化表示,使得实体及其关系的系统建模成为可能。早期的知识图谱数据生成方法依赖于手工设计的模板,虽然能够保证句法正确,但往往导致输出重复、僵化,限制了语言多样性和可扩展性。

为克服这些局限,后续方法引入了基于循环神经网络和注意力机制的学习型模型,能够直接从三元组生成流畅的问句。近期的进展如LFKQG,结合了可控生成技术以提升实体覆盖率,并通过微调增强适应性。然而,如何保证事实一致性和生成高质量文本仍是开放性挑战。

基于大语言模型的数据生成

大语言模型在自然语言任务中展现出卓越的泛化和推理能力。在数据生成领域,已有工作提出利用大模型生成数据以训练更小的模型。与知识图谱驱动的方法不同,大模型无需预定义模板即可生成多样且类人的文本,但往往存在可控性差和幻觉问题,导致事实不一致。

此外,部分方法仅依赖模型自身合成指令,缺乏结构化外部知识注入机制,因此在需要丰富领域知识的知识密集型任务中表现不佳。

为缓解上述问题,研究者提出了多阶段精炼流程,如Genie,通过多轮生成与筛选提升事实准确性和连贯性。但即便如此,单一大模型在大规模场景下实现领域精确性仍面临挑战。

大模型与知识图谱的结合

为提升事实一致性,已有研究探索了将大语言模型与知识图谱结合的方法。这类混合方法利用知识图谱引导文本生成,在保证流畅性的同时提升了生成内容的可靠性。然而,大多数工作主要关注通用文本生成或问答任务,而非面向监督微调的合成数据生成。

问题设定

从原始语料合成数据

我们关注于将原始文本语料 \(D_{\text{source}}\) 转化为结构化合成数据 \(D_{\text{synth}}\) 的方法。为此,我们提出了一种合成算法 \(A_{\text{synth}}\) 用于生成数据。具体而言,我们利用算法 \(A_{\text{organize}}\) 对知识图谱进行约束遍历以提取子图。系统化的流程可表示为:

\[A_{\text{synth}}: D_{\text{source}} \xrightarrow{A_{\text{extract}}} KG \xrightarrow{A_{\text{organize}}} D_{\text{synth}} \]

合成数据质量评估

合成数据的质量评估需要结合内在的定量分析与下游任务验证。我们建立了一组多维度的指标 \(Met = \{\text{Metric}\}_{i=1}^n\) 用于数据质量评估。此外,我们构建了无偏的评测数据集 \(D_{\text{eval}}\) 以确保任务相关性。在闭卷知识密集型问答任务中的表现,是检验后SFT模型 \(M_f\) 是否有效掌握知识的重要依据。综合质量指标形式化为:

\[Q_{D_{\text{synth}}} \propto (s(Met, D_{\text{synth}}), s(D_{\text{eval}},M_f)) \]

其中 \(s(Met, D_{\text{synth}})\) 表示 \(D_{\text{synth}}\) 在各项指标上的得分,\(s(D_{\text{eval}},M_f)\) 表示 \(M_f\)\(D_{\text{eval}}\) 上的表现。

方法

本节介绍 GraphGen 数据合成框架,如图 1 所示。GraphGen 针对三类场景生成数据:原子 QA、聚合 QA 和多跳 QA。从知识组织角度,这些场景代表了闭卷问答中最具代表性的知识密集型任务。该框架包含四个步骤,涉及两个相互依赖的大语言模型:合成模型(\(M_{\text{synth}}\))和训练模型(\(M_{\text{train}}\))。其中,\(M_{\text{synth}}\) 具备较强的通用能力,负责知识抽取与重述;\(M_{\text{train}}\) 是我们希望注入新知识的目标模型。GraphGen 中使用的提示模板、中间示例和实现细节详见附录。

img

步骤 1:知识构建

首先,将原始文档按语义切分为较小片段。随后,利用 \(M_{\text{synth}}\) 从这些片段中抽取各类实体及其关系。实体类型预先定义,通用类别包括日期、地点、事件,领域特定类别如基因等。在抽取过程中,若同一实体或关系出现在多个片段中,其描述会自动合并。最终,跨片段的实体和关系被聚合为知识图谱 \(G=(E, R)\)。LLM 与知识图谱的结合实现了原子知识的关联,解决了长文本处理、格式噪声、知识分散等问题,同时保证了生成内容的低幻觉率。步骤 1 的具体实现基于前人工作进行改进。

步骤 2:理解能力评估

我们提出了一种方法,用于评估训练模型 \(M_{\text{train}}\) 是否已经充分理解了知识图谱中的某一知识点。

对于知识图谱中的每一条边,其描述可以视为一个陈述句 \(R_i\),代表一个在现实世界中绝对为真的知识点 \(K_i\),即 \(P(R_i \ \text{为真})=1\)

为了评估 \(M_{\text{train}}\) 对这些陈述的理解能力,我们首先利用 \(M_{\text{synth}}\) 生成该陈述的多种同义改写 \(R_{i1}, R_{i2}, \dots, R_{in}\) 及其否定形式 \(\neg R_{i1}, \neg R_{i2}, \dots, \neg R_{in}\)

遵循 ECE(期望校准误差)原理,当模型的置信度预测(即 softmax 概率)与真实正确率一致时,模型被认为是良好校准的。对于大语言模型,只有当模型的置信度估计与现实世界的正确概率一致时,才算真正理解了某一概念。

因此,我们设计了如图2所示的提示词,引导 \(M_{\text{train}}\) 对单个改写陈述的置信度输出。随后,通过对 \(n\) 个正样本和 \(n\) 个负样本的置信度取平均,量化 \(M_{\text{train}}\)\(R_i\) 的置信度,计算公式如下:

img

\[C_{R_i} = \frac{1}{2n} \left( \sum_{j=1}^n P(t|R_{ij}) + \sum_{j=1}^{n} P(f|\neg R_{ij}) \right) \]

其中 \(P(t|R_{ij})\) 表示在给定真实陈述时下一个 token 为“是”的概率,\(P(f|\neg R_{ij})\) 表示在给定错误陈述时下一个 token 为“否”的概率。

我们进一步定义了理解损失(comprehension loss),用于衡量真实分布与预测分布之间的交叉熵:

\[\text{Loss}_{C_{R_i}} = -\frac{1}{2n}\sum_{j=1}^n \log(P(t|R_{ij})) - \frac{1}{2n}\sum_{j=1}^n \log(P(f|\neg R_{ij})) \]

该指标反映了大语言模型当前理解与对知识点完全掌握之间的差距。通过评估 \(M_{\text{train}}\) 的理解损失,可以系统性地判断是否需要对这些知识点进行进一步训练。

步骤 3:图结构组织

子图是生成 QA 对的最小单元。我们采用 \(k\) 跳子图抽取以实现高效的图结构组织,具体流程如算法1所示。为规范子图的组成,设计了多种遍历策略:

img

  • 深度策略:用于控制 \(k\) 跳深度,确保子图从起始边出发覆盖预设的跳数。
  • 长度策略:对于每个候选子图,计算前提长度(记为 \(pre\_length\)),即子图内所有实体和关系描述的 token 总数,并对 \(pre\_length\) 设置上限,以保证数据分布均衡。

在扩展子图时,采用三种选择策略:

  1. max_loss:优先选择损失值较高的边,代表模型不确定性大或潜在信息增益高。
  2. min_loss:优先选择损失值较低的边,代表模型较为自信或关系较为稳定。
  3. random:随机选择边。

这些策略共同平衡了子图的复杂性、相关性与计算可控性。

步骤 4:QA 生成

在抽取出子图后,可以根据其用途生成三类 QA 对:

  • 原子 QA:子图包含单个节点或边,\(M_{\text{synth}}\) 基于该结构生成代表基础知识的 QA 对。
  • 聚合 QA:针对需要分析、总结或比较子图内一组实体及关系的信息,先提示 \(M_{\text{synth}}\) 将数据组织、重述为连贯文本(作为答案),再由 \(M_{\text{synth}}\) 生成相应的问题。
  • 多跳 QA:明确子图中实体间的多步关系,指示 \(M_{\text{synth}}\) 生成需要多步推理的 QA 对。

这种方式能够针对不同知识结构,灵活生成多样化的问答数据,提升合成数据的覆盖率和复杂性。

实验设置

领域语料与评测数据集

针对闭卷知识密集型问答任务,我们选取了三个数据集,分别对应三类关键场景。我们从 SeedBench 中改编了领域特定的 SeedEval 数据集,聚焦于种子知识(农业),覆盖了 one-shot 和 zero-shot 场景。此外,我们从 PQAref 数据集改编了 PQArefEval,该数据集以医学为主题,面向聚合 QA 应用。我们还构建了 HotpotEval,基于 HotpotQA,主要用于多跳 QA 任务。每个数据集均包含两个部分:QA 测试集(\(D_{\text{eval}}\))和对应的源文本(\(D_{\text{source}}\))。数据集的来源和详细信息见附录。

img

质量评估指标

我们采用一组自然语言指标对生成文本的质量进行评估。详细内容见附录。由于大多数指标更适合评估完整句子而非简短回答,我们主要比较了 GraphGen 与基线方法在聚合 QA 场景下生成的答案。奖励分数为两种奖励模型的平均分,分别记为 IndDeb。UniEval 分数包含三个评价维度,分别为 NatCohUnd

基线方法

我们对 WRAP、Genie、LongForm、EntiGraph 和 SELF-QA 等方法的代码进行了适配,用于本研究中的数据合成基线。基线方法的详细信息见附录 。

实现细节

本研究中,\(M_{\text{train}}\) 指定为 Qwen2.5-7B-Instruct,\(M_{\text{synth}}\) 指定为 Qwen2.5-72B-Instruct。这两款模型均为开源大模型,具备较强性能且计算成本可控。结合三个数据集的任务特点,并为全面验证方法有效性,GraphGen 分别为 SeedEvalPQArefEvalHotpotEval 生成原子、聚合和多跳 QA 对。更多实验设置见附录。

性能对比

数据质量评测指标结果

我们展示了各项指标对数据质量的直观衡量。在聚合 QA 场景下,GraphGen 生成的答案与各基线方法进行了对比。如表2所示,GraphGen 在平均分上比最佳基线方法高出 1.9 分。值得注意的是,在词汇多样性 MTLD 指标上,GraphGen 达到 75.8,超过最佳基线方法 28.2 分。GraphGen 在 MTLD 指标上的优势,源于其能够跨文档聚合知识,生成的 token 数量远超其他方法仅能生成较短 QA 的情况。我们还注意到,基于图的方法在 Uni-Score 指标上表现领先,说明通过图结构生成的数据(尤其是展现多个实体关联关系的)更贴近日常 QA 场景。需要指出的是,LongForm 方法直接将 \(D_{\text{source}}\) 作为 QA 对的答案,因此其分数反映了 \(D_{\text{source}}\) 的质量。受训练语料影响,Deb 指标对原文有明显偏向,这对于更杂乱的 \(D_{\text{source}}\) 来说可能并不适用。

img

评测数据集上的结果

我们用生成的数据对 \(M_{\text{train}}\) 进行 SFT,并在对应测试集上评估 \(M_f\),结果如图3所示。GraphGen 生成的数据为基础模型带来了最大的性能提升。在 SeedEval、PQArefEval 和 HotpotEval 上,GraphGen 分别比最佳基线高出 1.08、2.7 和 4.73 分。值得注意的是,在 PQArefEval 数据集上,基线方法训练后的性能反而低于训练前,这一现象与直觉相悖。我们推测,这一下降是由于基线方法在聚合 QA 任务中仅用单一文本片段生成 QA 对,导致模型丧失了跨文档关联能力,从而影响了多参考任务的表现。相比之下,使用 GraphGen 生成数据的 \(M_f\) 很好地解决了这一问题。此外,GraphGen 在多跳 QA 场景下的表现尤为突出,说明子图带来的知识关联提升了 Post-SFT 模型的多跳推理能力,而不仅仅是表层知识的获取。不同数据集上的性能差异,主要源于基线方法对领域或风格适应性的不足。例如,LongForm 直接用原始语料作为答案并生成问题,对于 SeedEval 和 HotpotEval 等短文本语料,合成模型能较好地遵循指令生成合适的问题;但在 PQArefEval 等长文本语料中,生成问题的质量往往下降,导致训练效果不佳。

img

值得注意的是,在本阶段我们仅使用了与知识相关的数据,并未混合通用指令跟随类数据,目的是突出生成数据在注入新知识方面的作用。

此外,为缓解合成数据可能导致过拟合的担忧,我们将生成数据与 10 万条通用指令跟随数据混合,并在更广泛的评测集上进行了测试。测试结果见附录。

\(M_{\text{train}}\) 的敏感性

为进一步验证性能提升主要归因于合成数据的质量,而非 \(M_{\text{train}}\) 本身的特性,我们选取了两款具有代表性的开源模型:Meta-Llama-3.1-8B-Instruct 和 MiniCPM3-4B,进行了额外实验。这两款模型在架构类型和参数规模上具有明显差异,有助于检验方法在不同 LLM 结构下的鲁棒性和通用性。两款模型的实验结果与主实验结果一致,GraphGen 在三项评测数据集上均显著优于基线方法。这一发现进一步表明,方法的有效性并不依赖于特定的 LLM 架构或参数规模,强化了“合成数据的质量和结构才是性能提升的主要来源”这一结论。

Scaling law分析

大语言模型的规模规律表明,随着训练数据的增加,模型性能会提升。在本研究中,我们获得了用于训练模型的每个知识点的理解损失。通过对知识图谱中所有知识点的 \(\text{Loss}_C\) 进行统计分析,我们观察到 \(\text{Loss}_C\) 的分布高度偏斜,如图4所示。这一发现支持了 \(M_{\text{synth}}\) 更倾向于生成常见知识,而 \(M_{\text{train}}\) 在训练中需要掌握的知识往往集中在稀有的长尾数据上。

img

为了进一步探究长尾数据与训练效果之间的关系,我们分析了 GraphGen 生成数据的规模规律。类似于困难样本挖掘的思想,我们将合成数据按照 \(\text{Loss}_C\) 从高到低排序,并分成不同比例依次用于训练,以突出关注最具挑战性的样本的重要性。令人惊讶的是,即使只用很小比例的数据(少于 5%)进行训练,模型依然能够保持较高的性能占比,如图5所示。随着训练数据总量的增加,整体得分提升有限。因此,数据头部对模型贡献的新知识很少。

img

此外,我们还进行了对比实验,分别用 \(\text{Loss}_C\) 排序后前 30% 和后 30% 的数据训练模型。结果显示,使用前 30% 高损失数据训练的模型性能优于使用后 30% 低损失数据训练的模型。在我们的研究中,理解损失反映了模型对正确或错误陈述预测置信度与真实准确率之间的差异。较高的理解损失值表明模型存在知识盲区,这些高损失样本通常涉及模型难以掌握的长尾或稀有知识。对高损失数据进行训练,有助于模型学习此前训练阶段覆盖不足的知识。尽管这类知识较为稀有,但对于知识密集型任务至关重要,并能带来性能提升。这一发现表明,高 \(\text{Loss}_C\) 的数据能够为训练模型带来更大的性能增益,详见附录。

理解损失变化

在 SFT 阶段后,我们对 \(M_f\) 进行了理解能力评估。尽管我们并未直接将是/否判断问答作为训练数据的一部分,但我们观察到 \(\text{Loss}_C\) 显著下降,如图6所示。这表明 GraphGen 增强了 \(M_{\text{train}}\) 对知识领域的理解能力,使其能够可靠地区分正确与错误的陈述。因此,模型在知识密集型任务中表现出更高的准确性。

img

消融实验

实体与关系的选择

在原子 QA 生成实验中,我们比较了仅使用实体与仅使用关系作为生成来源的效果。结果表明,仅依赖关系的方式优于仅用实体,甚至略微超过了使用整个知识图谱的表现。我们认为,这是因为关系能够更有效地表达知识的内在属性。此外,知识图谱中知识组织的重叠也可能导致整体性能下降。相关结果见附录。

图结构组织策略的选择

我们通过将 GraphGen 的长度策略 \(pre\_length\) 分别设置为 256、512、768 和 1024,对每种情况下的数据质量指标进行了评估,结果见附录。实验发现,尽管生成数据的平均长度有所增加,但最终得分趋于稳定,说明得分与数据长度并无直接相关性。

我们还在 \(D_{\text{eval}}\) 上对数据进行了评测,结果见附录。结果显示,虽然更长的 \(pre\_length\) 可能提升大模型的长文本能力,但 \(pre\_length\) 为 256 时的评测结果最佳。对最终生成数据长度分布的分析表明,原因可能在于数据长度分布的特性:当 \(pre\_length\) 为 256 时,长度在 5000 以内的分布更为集中,而更大的 \(pre\_length\) 会导致分布向更长文本扩展。过多的长文本数据会显著延长模型收敛所需的时间。

我们还以选择策略为控制变量进行了实验,分析表明策略对结果的影响较小,详见附录。这说明只要子图内部存在一定的相关性,理解水平的差异对最终结果影响有限。不过,底层规律仍有待未来进一步探索。

结论

本文提出了 GraphGen,一种基于知识图谱的高效合成数据生成方法,专为闭卷知识密集型问答任务中微调大语言模型而设计。GraphGen 针对原子 QA、聚合 QA 和多跳 QA 三类典型场景,利用知识图谱引导高质量问答对的生成。实验结果表明,GraphGen 有效克服了现有合成数据方法的局限性,确保生成数据的相关性与多样性,为有监督微调中常见的数据瓶颈问题提供了有前景的解决方案。

未来研究 可进一步提升知识图谱构建质量,例如引入外部知识源和动态更新机制,以增强数据的覆盖率和准确性。此外,探索自适应的图结构组织策略和子图采样方法,有望进一步优化训练数据,提升模型性能。

局限性

尽管 GraphGen 展现出良好的实验效果,仍存在若干有待改进之处。首先,框架在构建和处理大规模知识图谱时对计算资源的需求较高,这可能限制其在资源受限环境或超大规模数据集下的应用。因此,提升计算效率对于方法的广泛推广至关重要。

其次,虽然 GraphGen 已在三个代表性领域取得了优异表现,其在更多领域的适应性仍需进一步验证。目前实验主要聚焦于闭卷问答任务,尚未充分探讨其在数学、推理、代码等其他任务中的泛化能力。此外,将 GraphGen 生成的合成数据用于模型训练时,仍需精细调优,特别是合成数据与真实数据的配比及其对模型收敛和泛化能力的影响,有待深入研究。

本文未涉及开放式问答(如检索增强生成 RAG)相关内容。RAG 的效果高度依赖于检索库的质量和召回能力,检索失败时甚至可能加剧幻觉现象。将数据合成与 RAG 方法结合,是未来值得深入探索的研究方向。

posted @ 2025-08-13 10:34  一介布衣、  阅读(153)  评论(0)    收藏  举报