使用大型语言模型(LLMs)本身作为生成工具,是一种特别有效的合成文本生成方式。此法使用现代LLMs固有的高级语言理解和生成能力,来创建多样化且情境相关的合成数据。使用LLM为其他LLM创建训练数据可能看似循环,但这是一种高效的策略,可快速生成满足特定需求的数据。
LLM作为可编程文本生成器
根本上,使用LLM生成合成数据,核心在于提示。你向LLM提供一系列指令,即提示,LLM则根据这些输入生成文本。这与更严格的基于规则的系统有着根本不同,提供了更高的灵活性,并能生成更像人类的文本。
这种方式的效果很大程度上取决于你设计提示的好坏。尽管下一节“通过有效提示设计指导生成”将详细讲解提示工程,但此处了解其基本模式很重要:
- 零样本提示(Zero-shot Prompting):你直接指示LLM执行任务,不提供任何例子。例如:“生成五个关于可持续投资的常见问题列表。”
- 少样本提示(Few-shot Prompting):在要求LLM生成新样本之前,你提供一些所需输入和输出格式的例子。这有助于模型更好地理解任务、期望的风格和输出结构。
例如,为生成产品描述,一个少样本提示可能如下所示:
产品:无线降噪耳机
特点:蓝牙5.0,30小时续航,可折叠设计
描述:戴上我们新款的无线耳机,沉浸在音效之中。它采用蓝牙5.0实现稳定连接,拥有长达30小时的惊人续航,以及方便便携的可折叠设计。
产品:智能咖啡机
特点:支持Wi-Fi,可编程冲泡时间,12杯容量
描述:用我们的智能咖啡机开启美好的一天。连接到Wi-Fi,通过应用程序设定冲泡时间,随时享受最多12杯完美冲泡的咖啡。
产品:人体工学办公椅
特点:腰部支撑,可调节扶手,透气网面
描述:
LLM随后会尝试根据示例的模式和风格,完成人体工学办公椅的描述。通过此类提示指导生成的能力,使LLM成为创建各类合成文本数据的多功能工具。
自指令:通过生成例子创建数据集
使用LLM生成合成数据,尤其是用于指令微调的最有影响力的技术之一是自指令(Self-Instruct)。其核心思想是使用LLM启动指令遵循数据集的创建。该过程通常包含以下步骤:
- 初始指令:从一小部分人工编写的指令开始(可选地包含输入-输出示例)。
- 指令生成:使用这些初始指令提示一个LLM(“指令生成器”),以生成更大、更多样的新指令集。
- 响应生成:对于每条新生成的指令,提示一个LLM(“响应生成器”,可以是相同模型或不同模型)来生成相应的响应或输出。这就创建了一个指令-响应对。
- 筛选:对生成的配对应用质量和多样性筛选。这一步很重要,用于去除低质量、无用或重复的样本。
- 迭代(可选):新验证的指令-响应对可以重新加入初始池,以便在后续轮次中生成更多样、更复杂的指令。
以下图表展示了典型的自指令工作流程:
自指令过程的简化表示,说明了如何使用LLM生成新指令和相应的响应,然后对它们进行筛选并添加到数据集中。
自指令在创建数据集方面发挥了重要作用,使LLM能更好地遵循人类指令,这对于许多应用来说是一项重要能力。
拓展方法:其他基于LLM的生成策略
除了自指令,LLM还可用于多种其他合成数据生成任务:
- 数据增强和变体生成:你可以向LLM提供现有数据点并提示其:
- 改写:生成复述版本以增加多样性。
- 摘要或扩写:创建文本的简短或扩展版本。
- 改变风格或语调:将正式文本转换为非正式文本,反之亦然,或改变情感。
- 翻译和回译:尽管回译之前作为独立技术已做介绍,LLM可以高质量地执行正向和反向翻译步骤。
- 生成结构化数据:可以提示LLM以特定的结构化格式(如JSON、CSV或XML)输出文本。这对于创建需要遵循预定义模式的数据集很有用。例如,你可以要求LLM生成JSON对象格式的产品列表。
{
"product_name": "环保水壶",
"category": "饮具",
"features": ["不含BPA", "防漏", "不锈钢"],
"price": 19.99
}
- 特定领域文本生成:如果LLM经过了特定领域(例如法律文档、医学研究、财务报告)文本的训练或接触,就可以提示它在该领域内生成新的合成文本。这对于在真实数据稀缺的专业领域扩充数据集很有价值。
- 创建情境或叙事:对于需要创意文本的任务,例如故事生成或为复杂推理任务的少样本学习创建示例,LLM可以生成合理且多样化的情境。
基于LLM的合成优势
使用LLM生成合成数据具有多项优势:
- 可扩展性:一旦制定出良好的提示策略,LLM就能相对快速地生成大量数据,远超人工创建的工作量。
- 多样性潜力:借助细致的提示工程和自指令等技术,LLM可以生成种类繁多的文本,涵盖众多主题、风格和格式。
- 可控性:提示对生成结果提供了显著的控制程度,使你能够指定长度、风格、内容侧重和格式。
- 减少人工投入:与人工标注或编写相比,基于LLM的生成大大减少了数据集创建中的人工劳动,尽管人工质量监督仍很重要。
- 适应性:通过适当的提示,LLM可以被引导为新任务或新领域生成文本,这使其成为一种灵活的方法。
应对挑战:注意事项
尽管有这些优势,使用LLM生成合成数据时,仍有一些重要考虑事项和潜在缺点:
- 成本:通过API访问强大的LLM通常会产生基于使用的费用(例如,处理的token数量)。生成超大型数据集可能会变得昂贵。
- 质量控制:输出质量可能有所不同。LLM可能会生成以下类型的文本:
- 事实错误(幻觉):生成听起来合理但实为虚假的信息。
- 偏颇:反映其训练数据中存在的偏见。
- 重复或通用:缺乏新颖性或特异性,尤其是在使用简单提示时。
- 流畅但无意义:语法正确但语义有缺陷。
严格的筛选和评估(第6章将介绍)是必不可少的。
- 同质性:如果管理不当,LLM可能会重复生成相似类型的例子,导致数据集缺乏真正的多样性。这可以通过多样化的初始数据和复杂的提示来缓解。
- 数据泄露和隐私:如果LLM在敏感数据上进行过训练,并且以可能引发泄露的方式进行提示,则存在生成无意中透露私人信息的文本的风险。数据脱敏和扰动技术,如前所述,在此处也适用。
- 计算资源:尽管API访问抽象了大部分这些资源,但在本地运行大型开源LLM进行生成需要大量计算能力。
合成数据的质量和可用性与你管理这些因素的水平直接相关。有效的提示设计,这是下一节的重点,是引导LLM生成高质量、相关合成数据的主要工具。之后,实践环节将让你有机会亲自使用LLM API进行文本生成,将这些想法付诸实践。