Scaling Synthetic Data Creation with 1,000,000,000 Personas
链接:https://github.com/tencent-ailab/persona-hub/
文章目录
- [Scaling Synthetic Data Creation with 1,000,000,000 Personas](#Scaling Synthetic Data Creation with 1,000,000,000 Personas)
-
- [1. 摘要](#1. 摘要)
- [2. 背景](#2. 背景)
-
- [2.1 什么是数据合成](#2.1 什么是数据合成)
- [2.2 为什么需要数据合成](#2.2 为什么需要数据合成)
- [2.3 10亿种人格的获得方法](#2.3 10亿种人格的获得方法)
-
- [1. Text-to-Persona 方法](#1. Text-to-Persona 方法)
- [2. Persona-to-Persona 方法](#2. Persona-to-Persona 方法)
- [3. 重复数据删除](#3. 重复数据删除)
- [4. 规模与扩展](#4. 规模与扩展)
- [2.4 Persona Hub如何访问目标LLM的全部内存](#2.4 Persona Hub如何访问目标LLM的全部内存)
-
- [1. 局限性与潜力](#1. 局限性与潜力)
- [2. 将LLM视为压缩的世界知识](#2. 将LLM视为压缩的世界知识)
- [3. 挑战与展望](#3. 挑战与展望)
- [2.5 MinHash 的使用示例](#2.5 MinHash 的使用示例)
1. 摘要
我们提出了一种新的人物角色驱动的数据合成方法,利用大型语言模型(LLM)中的各种观点来创建不同的合成数据。为大规模地充分利用这种方法,我们引入了Persona Hub ------ 一个从网络数据中自动策划的10亿个不同人物角色的集合。Persona Hub 中的 10 亿个人物角色(占世界总人口的 13%)作为世界知识的分布式载体,可以利用LLM中封装的几乎每一个视角,从而促进为各种场景大规模创建多样化的合成数据。
通过展示 Persona Hub 在综合高质量数学和逻辑推理问题方面的用例(如用户提示、知识丰富的文本、游戏NPC和工具功能的规模),我们证明了人物角色驱动的数据合成是通用的、可扩展的、灵活的、易于使用的。这一技术有潜力驱动合成数据创建和应用程序在实践中的范式转变,并可能对LLM研究和开发产生深远的影响。
免责声明:Persona Hub 可以促进十亿级的合成数据创建,以模拟不同的输入(如用例)来自各种现实世界用户。如果将该数据用作输入来查询目标LLM以大规模地获得其输出,则存在LLM的知识、智能和能力将被倾倒并容易被复制的高风险,从而挑战最强大的LLMs的领先地位(例如,我们的方法允许7BLLM在MATH上达到65%,与gpt-4-turbo-preview的性能相匹配)。
本技术报告仅用于研究目的,必须避免滥用,确保合乎道德和负责任的应用。我们将在第5节详细讨论其广泛影响和潜在问题。
2. 背景
作者使用Persona Hub中的不同人格生成了107万条数据,并用其训练了Qwen2-7B模型,然后在MATH数据集上进行了测试。结果表明,模型获得了64.9%的准确率,比原始版本提高了15个百分点,并与1106、0125两个版本的GPT4-Turbo打成了平手。
真正要合成的不是数据集的数量,而是数据集的质量,即如何提高数据集的多样性。
简单地将人物角色添加到数据合成提示中,可以将LLM转向相应的视角以创建独特的合成数据。由于几乎任何LLM用例都可以与特定的人物角色相关联,因此只要我们构建一个全面的人物角色集合,就可以大规模创建包罗万象的合成数据。
2.1 什么是数据合成
合成数据(Bauer等人,2024;Liu等人,2024)通常指的是由模型或算法生成的数据,而不是直接由人类生成的数据。随着大型语言模型(LLMs)的发展,使用LLMs进行数据合成变得越来越有价值,人们对通过指定数据合成提示生成所需合成数据的兴趣也日益增长。
2.2 为什么需要数据合成
在实践中,大规模创建合成数据并非易事:虽然我们可以轻松地扩大合成数据的数量,但很难确保其多样性也随之扩大。在不考虑采样的情况下,在数据合成提示下,LLM只能生成1个实例。因此,为了大规模地创建多样化的合成数据(例如,10亿个不同的数学问题),需要大量不同的提示。
以前的研究倾向于通过以下两种范式使数据合成提示多样化,但不幸的是,两者都不能实际实现可扩展的合成数据创建:
2.3 10亿种人格的获得方法
1. Text-to-Persona 方法
- 概念:通过分析大量互联网文本数据生成 persona。具体来说,给定一段文本,通过提示大语言模型(LLM)回答:"谁可能会[阅读|写作|喜欢|不喜欢]这段文本?"模型根据文本内容推断出对应的 persona。
- 过程 :
- 输入文本:从网络上获取的大量文本(如新闻文章、博客、论坛帖子等)。
- 推断 persona:模型根据输入文本的内容,生成与文本相关的人物描述。例如,如果文本是关于医疗护理的,模型可能会生成"一个专门从事儿科护理的护士"这样的 persona。
- 细粒度控制:通过调整提示,模型可以生成不同粒度的 persona 描述,比如从宽泛的"计算机科学家"到更具体的"专注于神经网络架构的机器学习研究者"。
2. Persona-to-Persona 方法
- 概念:通过现有 persona 推导出与之相关的其他角色,以弥补 Text-to-Persona 方法可能遗漏的不常见角色。
- 过程 :
- 关系推导:模型基于现有 persona 的社会关系推导出新的 persona。例如,给定"儿科护士"的 persona,模型可以推导出与之相关的角色,如"儿科患者"、"儿科医生"或"药品供应商"。
- 六度分离理论:通过类似六度分离的概念,模型可以对每个初始 persona 进行多次关系扩展,从而生成更多的相关 persona。
3. 重复数据删除
- 概念:为了确保生成的 persona 的多样性和独特性,必须对生成的 persona 进行去重处理。
- 方法 :
- MinHash:使用MinHash算法基于n-gram特征来检测和删除相似度高的 persona 描述。例如,如果两个 persona 描述的相似度超过0.9,则视为重复。
- Embedding 去重:在去除表面重复之后,使用文本嵌入技术计算每个 persona 的语义相似度,并删除相似度高的 persona,进一步确保生成 persona 的多样性。
4. 规模与扩展
- 自动化生成:上述方法能够大规模自动生成 persona。通过对海量的互联网文本进行处理和推导,并使用上述去重方法,可以生成多达10亿个独特的 persona。
- 覆盖广泛:这些 persona 涵盖了广泛的职业、兴趣、背景和文化,因此几乎可以代表现实世界中各种各样的个体和他们的知识。
2.4 Persona Hub如何访问目标LLM的全部内存
1. 局限性与潜力
- 局限性:当我们在特定场景与LLM交互时,只能调动模型记忆和能力的一小部分,即使LLM内含广泛的世界知识,也难以在单一交互中完全利用其潜力。
- 潜力:通过使用「Persona Hub」中的10亿个不同的"persona",我们可以从多种角度和视角生成查询,进而激活并提取LLM中的广泛信息,从而获取更多的知识,并将其转化为合成数据。
2. 将LLM视为压缩的世界知识
- LLM的特性:可以将LLM视为世界知识的参数化压缩形式,即LLM通过其训练参数浓缩了大量的世界知识。「Persona Hub」可以被看作是一种基于分布式载体的压缩形式,这些persona作为不同知识的载体,帮助我们解压和提取这些知识。
- 知识解码:通过生成多样化的查询,LLM中的知识得以以文本形式"解压"出来,这种过程类似于将LLM中的知识进行解码,转化为可读的合成数据。
3. 挑战与展望
- 当前局限:目前,「Persona Hub」仍处于初步阶段,今天的LLM还无法完美地将其记忆转化为合成数据,主要是因为生成数据时不可避免的"幻觉"问题。幻觉指的是模型生成不准确或不符合事实的内容,这限制了合成数据的广度和质量。
- 未来展望:随着「Persona Hub」的改进和扩展,以及LLM能力的增强(如减少幻觉的发生),未来可能会实现几乎无损地将LLM中的全部记忆转化为平文本数据的目标。这将极大地拓展我们对LLM的利用能力,允许我们更全面地访问和使用模型所拥有的知识。
2.5 MinHash 的使用示例
通过一个简单的例子来解释如何使用MinHash进行重复数据删除。
情境设置
假设我们有两个简短的人物描述,每个描述只有一到两句话。我们想要判断它们是否足够相似,以至于可以被视为重复数据。我们使用MinHash算法来基于这些描述的n-gram特征进行去重。
人物描述
- 描述A: "A computer scientist interested in artificial intelligence and machine learning."
- 描述B: "A machine learning expert focused on artificial intelligence and computer science."
步骤1:提取n-gram特征
由于人物描述通常比较短,我们使用1-gram特征(即单个词)来表示每个描述。
- 描述A的1-gram特征: ["A", "computer", "scientist", "interested", "in", "artificial", "intelligence", "and", "machine", "learning"]
- 描述B的1-gram特征: ["A", "machine", "learning", "expert", "focused", "on", "artificial", "intelligence", "and", "computer", "science"]
步骤2:计算MinHash签名
MinHash的主要思想是通过多个哈希函数将特征集合映射到签名中。假设我们使用128个不同的哈希函数(这就是"128的签名大小"),我们将每个描述的特征集合映射到128个哈希值中,形成描述A和描述B的签名。
- 描述A的MinHash签名: [10, 45, 56, ..., 230]
- 描述B的MinHash签名: [12, 47, 56, ..., 232]
步骤3:计算签名之间的相似度
MinHash的核心优势是通过比较签名中的哈希值来估计原始集合之间的相似度。我们可以通过计算两个签名之间相同哈希值的比例来得到相似度。
- 计算描述A和描述B的相似度 :
- 比较签名中的128个值,假设它们有115个值相同,那么相似度为115/128 ≈ 0.90。
步骤4:应用相似度阈值
根据设定的相似度阈值0.9,如果两个描述的相似度达到或超过0.9,它们将被视为重复数据,并执行去重操作。
在这个例子中,描述A和描述B的相似度正好是0.9,所以它们会被认为是相似的,描述B可能会被去除以避免重复。