如何处理小众数据,如何让这些模型高效地学习专业领域的知识,一直是一个挑战。斯坦福大学的研究团队最近提出了一种名为EntiGraph的合成数据增强算法,为这个问题带来了新的解决思路。
简单点说,就是用这个名为EntiGraph的合成数据增强算法,生成人工合成数据,增加知识表述的多样性,为语言模型的学习提供更好的素材。
大语言模型通常需要海量的训练数据才能学到有用的知识。比如,GPT-3就是在超过45TB的文本上训练而成的。但在很多专业领域,我们往往只能获得有限的高质量文本资料,可能只有几百万个词汇。直接用这些小规模语料来训练模型,效果往往不尽如人意。
研究者们发现,即使是同样的事实,大语言模型也需要在不同的表述中反复出现数百上千次,才能真正学会。这种低效的学习方式在小规模语料上显得尤为突出。如果我们只有一本教科书的内容,模型很难从中提取出全面的知识。
为了解决这个问题,斯坦福大学的研究团队提出了EntiGraph算法。这个算法的核心思想是,从有限的文本中提取出关键实体和它们之间的关系,然后基于这些信息合成出大量的新文本。这个过程可以类比为,我们先从教科书中提取出知识点,然后用这些知识点编写出各种各样的习题和例子。
EntiGraph算法包含以下三个步骤:
1. 实体提取
首先,算法会从原始文本中提取出所有的关键实体。这里的实体可以是人名、地名、概念等。研究者使用了GPT-4作为基础模型,通过精心设计的提示词来完成这个任务。
例如,对于一篇介绍线性代数的文章,提取出的实体可能包括"线性空间"、"向量"、"奇异值分解"等。
2. 单实体描述
接下来,算法会针对每个提取出的实体,生成详细的描述文本。这个过程同样是通过设计提示词来引导GPT-4完成的。生成的文本会围绕该实体在原文中的角色和重要性展开讨论。
比如,对于"线性空间"这个实体,生成的描述可能是:"线性空间是代数的基本概念之一,它满足一系列的公理..."
3. 实体关系分析
最后,算法会分析不同实体之间的关系,并生成相关的文本。这一步骤不仅考虑实体对,还会考虑三个实体之间的关系。
例如,算法可能会生成描述"线性空间"、"向量"和"基"这三个概念之间关系的文本。
通过这三个步骤,EntiGraph能够从原始的小规模语料中生成大量的合成文本。这些文本虽然没有引入新的事实,但大大增加了知识表述的多样性,为语言模型的学习提供了更好的素材。
为了验证EntiGraph的效果,研究团队设计了一系列精巧的实验。他们使用了QuALITY数据集,这个数据集包含265本书籍和文章,总共约130万个词。研究者首先用EntiGraph算法处理这些文本,生成了约6亿个词的合成语料。
然后,他们用这些合成语料对Llama 3 8B模型进行继续预训练。为了评估训练效果,他们设计了一个封闭式问答任务:模型需要回答与原始文本相关的问题,但在回答时不能查看原文。
实验结果:
1. 使用EntiGraph合成数据训练的模型,在问答任务上的准确率从39.49%提升到了56.42%。这个提升幅度相当于直接使用原始文本进行检索增强生成(RAG)所能达到的80%。
2. 模型的表现随着合成数据量的增加而持续提升,呈现出对数线性的增长趋势。这意味着即使进一步增加合成数据量,模型的性能还有提升空间。
3. 相比之下,直接在原始小规模语料上训练,或者使用简单的重述方法生成的合成数据,都无法带来显著的性能提升。
这些结果充分证明了EntiGraph算法在小规模语料学习中的优越性。它不仅能够有效提取和重组原始文本中的知识,还能生成足够多样化的表述,从而帮助模型更好地学习和泛化。
研究团队通过一张清晰的图表展示了不同数据增强方法的效果对比。这张图的横轴表示合成数据的数量(以百万个token为单位),纵轴表示模型在问答任务上的准确率。图中包含了四条曲线,分别代表不同的方法:
1. EntiGraph CPT (红色曲线):使用EntiGraph算法生成的合成数据进行继续预训练。
2. Rephrase CPT (蓝色曲线):使用简单重述方法生成的合成数据进行继续预训练。
3. Raw CPT (绿色曲线):直接使用原始小规模语料进行继续预训练。
4. Llama 3 8B Base (黑色虚线):原始Llama 3 8B模型的基准性能。
从图中我们可以观察到以下几点:
1. EntiGraph的显著优势:EntiGraph CPT的红色曲线呈现出持续上升的趋势,在合成数据量达到600百万token时,准确率提升到约56%。这远远超过了其他方法的表现。
2. 简单重述方法的局限性:Rephrase CPT的蓝色曲线在开始时有小幅提升,但很快就趋于平稳,最终准确率停留在约43%左右。这表明简单的重述方法无法为模型提供足够多样化的学习素材。
3. 原始小规模语料的不足:Raw CPT的绿色曲线几乎与x轴平行,甚至略低于基准模型的性能。这清楚地说明了直接使用小规模语料进行继续预训练是无效的。
4. 基准模型的性能:Llama 3 8B Base的黑色虚线保持在约39.5%的准确率,为其他方法提供了一个比较基准。
5. EntiGraph的持续增长:值得注意的是,即使在600百万token时,EntiGraph CPT的曲线仍然呈上升趋势,这暗示着进一步增加合成数据量可能会带来更好的性能。最近,o1模型因在特定任务上这张图有力地证明了EntiGraph算法在小规模语料学习中的卓越效果。它不仅能显著提升模型性能,而且随着合成数据量的增加,性能还有进一步提升的潜力。相比之下,其他方法要么效果有限,要么完全无效。这个结果强调了EntiGraph在知识提取和重组方面的独特优势,为解决小规模语料学习问题提供了一个极具前景的方向。
EntiGraph的成功并非偶然。研究者们通过深入的理论分析,揭示了算法背后的工作原理。
实际上,EntiGraph并没有创造新的知识,而是巧妙地"重新安排"了原始文本中的知识,使其更容易被语言模型学习。这个过程可以类比为,将一本教科书的内容重新组织成各种练习题、讨论题和应用案例。
研究者们建立了一个数学模型来描述这个过程。他们发现,EntiGraph生成的合成数据中,不同知识点之间的连接呈现出一种特殊的分布。这种分布使得模型在学习过程中能够更快地建立起知识之间的关联。
具体来说,EntiGraph的工作过程可以分为三个阶段:
1. 快速增长阶段:在合成数据量较少时,模型的性能呈线性增长。这对应于模型快速学习到基本知识点的过程。
2. 缓慢增长阶段:随着合成数据量的进一步增加,模型性能的增长速度放缓,呈对数线性增长。这反映了模型开始学习更复杂的知识关联。
3. 平稳阶段:最终,模型性能会趋于稳定。这表明模型已经学到了原始文本中大部分可提取的知识。
这个理论模型不仅解释了实验中观察到的现象,还为如何优化合成数据的生成过程提供了指导。
EntiGraph的成功为AI开发,特别是在专业领域的应用,带来了重要启示:
1. 知识提取的重要性:在处理专业文本时,准确提取关键实体和概念是至关重要的。这为后续的知识重组和扩展奠定了基础。
2. 多样化表述的价值:单一的表述方式限制了模型的学习。通过生成多样化的表述,可以帮助模型建立更具有鲁棒性的知识表示。
3. 图示思维的应用:EntiGraph实际上是将文本知识转化为一种类似知识图谱的结构。这种结构化的思维方式在处理复杂知识时非常有效。
4. 理论与实践的结合:深入的理论分析不仅有助于理解算法的工作原理,还能指导实践中的优化方向。
对于Prompt工程师来说,EntiGraph的思路特别具有启发性。在设计提示词时,我们可以借鉴以下几点:
1. 实体关注:设计能够准确捕捉关键实体的提示词。
2. 关系探索:引导模型分析不同实体之间的关系,生成多角度的描述。
3. 知识重组:鼓励模型以不同的方式重新组织和表述已有知识。
4. 层次结构:在复杂任务中,可以设计层次化的提示词,逐步引导模型完成任务。
EntiGraph算法的成功,让我们看到了AI学习的一种新可能。它告诉我们,有效的学习不仅在于获取大量信息,更在于如何巧妙地组织和表达这些信息。这种思路与人类的学习过程何其相似:我们阅读教科书,做练习题,讨论案例,正是通过这样反复咀嚼知识的过程,才最终将知识内化为我们自己的智慧。
EntiGraph是一种受知识图启发的合成数据增强算法。EntiGraph不仅是一个技术创新,更是一种思维方式的启发。它鼓励我们跳出简单的"more data, better performance"的思维定式,去思考如何让AI更智慧地学习。在这个过程中,我们或许能够更深入地理解知识的本质,以及智能的真正含义。
文章来自于“AI修猫Prompt”,作者“AI修猫Prompt”。
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0