大模型如何能够更好的辅助小模型的训练数据生成?

数据合成是训练一个只有极少标注数据的小型模型的一种有前景的方法。数据合成的一种方法是利用大型语言模型的丰富知识,为小型模型合成伪训练样本,从而同时实现数据和计算的效率。然而,数据合成面临的一个关键挑战是,合成的数据集通常与真实任务数据分布存在较大的差异。因此,在本文中,我们提出了“逐步合成”(Synthesis Step by Step,简称S3)的数据合成框架,通过迭代地推断在合成数据集上训练的小型模型在小型真实验证数据集上的错误,利用大型语言模型缩小这一分布差距。在多个自然语言处理任务上进行的广泛实验证明,我们的方法通过减小合成数据集与真实数据之间的差距,显著提高了小型模型的性能,相较于几个基准模型,性能分别提高了9.48%(相对于ZeroGen)、2.73%(相对于GoldGen)和15.17%(相对于基于人工标注数据训练的小型模型)。

1 引言

大型语言模型(LLMs)在各种任务上展现了有前景的零-shot性能,显示了它们作为通用模型的潜力。然而,由于模型体积庞大和推理延迟高,LLMs存在效率问题,这使得它们难以在实际应用中部署。因此,在许多资源受限的场景中,仍然更青睐于在任务特定数据上训练的小型模型,因为它们具有更少的参数,易于部署,并在特定下游任务中表现良好。

图 1: 在 IMDb 数据集上使用 ZeroGen(Ye等,2022b)训练的 DistilBert 模型的训练和测试准确性,其中包括 20 万个训练数据点。同时展示了在 GoldData 上训练的模型的训练和测试准确性。我们可以看到,在这里,ZeroGen 的训练准确性迅速接近 100%,但测试准确性仍然较低。

然而,为了适应特定任务,训练一个小型模型可能需要大量的人工标注数据,在许多下游任务中这种数据并不可用且注释成本高昂。这种数据效率问题使得微调小型模型变得具有挑战性。因此,许多不同的研究方法试图减少在特定任务上微调小型模型所需的数据量,包括知识蒸馏、数据增强、模块替换、半监督学习以及数据合成。

图 2: 传统的零-shot数据集合成方法(a)和直接在黄金数据上训练小型模型(b)均未利用在合成数据集上训练的小型模型的反馈。相比之下,(c)我们的方法S3首先以零-shot方式使用理由合成一个种子数据集(左侧)。然后,我们通过在小型黄金验证集上迭代地推断目前合成数据上训练的小型模型的错误,逐步减小合成数据分布与黄金数据分布之间的差距。因此,额外的合成数据可以被视为从当前合成数据分布与黄金数据分布之间的差异中采样得到。通过将其与当前合成数据混合,我们可以恢复黄金数据分布,从而提高在数据混合上训练的小型模型的性能。

在本研究中,我们专注于数据合成,该方法从头开始生成数据和相应的标签。与半监督学习不同,后者依赖于未标记数据,这种方法更简单、更高效,尤其是在未标记数据稀缺的情况下。大多数NLP领域中用于数据合成的现有方法利用LLMs生成大量训练数据来训练小型模型。现有的数据集合成方法通常需要大量的合成数据才能在小型模型上取得相对良好的性能,例如ZeroGen(Ye等,2022b),有时需要多达100万条的合成数据记录。然而,这通常会导致在训练小型任务特定模型时额外的数据合成成本和计算成本。

直观地说,合成数据的质量,或者说合成数据与黄金任务数据相似程度,对小型模型的性能至关重要。然而,由于现实世界中特定任务的复杂性,合成数据往往在分布上存在差异。这在图1中可以清晰地看到。小型模型在合成数据上的训练准确性接近100%,但在真实世界数据上的测试准确性仍然较低。相比之下,当在人工标注数据上训练时,训练和测试准确性之间的差距要小得多。

为了减小分布差距并提高数据效率,我们提出了“逐步合成”(Synthesis Step by Step,简称S3),这是一个新颖的数据合成框架,通过动态优化合成数据集以高效地缩小分布差距。如图2所示,S3首先使用一种“解释后生成”的方法合成一个种子数据集,该方法首先促使LLMs为每个标签生成理由,然后将生成的理由和任务特定提示结合起来生成数据点。接着,S3通过迭代地在小型验证集上推断在种子数据集上训练的模型在真实任务数据分布中采样的假设的错误来优化种子数据集。

我们总结我们的贡献如下:(1)我们提出了一种动态数据合成的新观点,可以创建较小模型的训练数据,并可以通过添加更多数据进行优化;基于这个观点,我们提出了S3框架,可以使用LLM合成和优化伪数据,从而高效地缩小数据合成中的分布差距。 (2)我们对S3减小分布差距的有效性进行了理论分析。 (3)我们在三个主要的NLP任务上进行了广泛实验证明,在相对于数据平均只使用30.43%的情况下,相对于数据集合成的代表性基线ZeroGen(Ye等,2022b)取得了平均9.48%的性能提升。

2 方法论

在本节中,我们详细描述了提出的S3框架。S3的关键思想是首先通过促使LLMs合成一个种子数据集,然后通过在小型验证集上迭代地推断小型模型在黄金数据分布上产生的错误来逐步减小分布差距。S3包括以下步骤:

  1. 种子数据生成:我们利用LLM来分析我们正在处理的任务,然后合成该任务的可能理由列表。如果任务难以分析,我们可以跳过此步骤。然后,我们将合成的理由、可能的上下文句子和标签组合在一个提示中,引导LLM合成数据集。
  2. 小型模型训练:使用合成数据集训练小型模型,然后在真实世界验证数据上验证小型模型,并获得小型模型的误分类数据,将它们用作错误。
  3. 错误外推:使用LLM推断小型模型的错误,并使用错误中的信息合成额外的数据。
  4. 合并和重复:将额外的数据集与原始数据集组合成小型模型的新合成训练数据集,然后重复步骤2和3多轮,直到小型模型的性能收敛。

我们首先在第2.1节介绍一些背景和关键符号。然后在第2.2节(上述第1点)和第2.3节(上述第2、3、4点)分别描述了用于种子数据合成和基于迭代错误外推的合成的算法。最后,在第2.6节中,我们对所提出方法进行了理论解释。

2.1 背景 按照Sharp等人(2017)的做法,我们将LLM在提示输入T下的人类语言分布表示为PLLM(·|T)。小型模型是在我们合成的数据集上进行训练的计算效率模型。通常,小型模型包含较少的参数,易于在实际应用中训练和部署。我们将由数据集Dtrain\mathcal{D}{train}Dtrain​训练的小型模型表示为f(·|Dtrain\mathcal{D}{train}Dtrain​)。

2.2 具有理由的种子数据合成

种子数据被定义为我们S3框架的基本零-shot合成数据集。

算法 1: 具有理由的种子数据合成

我们在算法 1 中呈现了具有理由的种子数据合成的算法。在这里,γ\gammaγ 表示我们正在处理的任务中所有可能的标签集合;Tration(y)\mathcal{T}{ration}(y)Tration​(y) 表示理由合成的标签和任务描述性提示;Tquery(1)(r,y)\mathcal{T}{query}^{(1)}(\boldsymbol{r},y)Tquery(1)​(r,y) 是将理由 r\boldsymbol{r}r 和标签 yyy 包装在一起用于向LLM查询数据点的数据合成提示;topKtopKtopK 表示从LLM输出中进行 top-K 抽样,以获取特定标签的理由列表;Ui(S)U_i(S)Ui​(S) 表示在集合 SSS 中均匀抽样 iii 个不重复元素。生成的种子数据集表示为 Dseed={Xseed,Vseed}\mathcal{D}{seed}={\mathcal{X}{seed},\mathcal{V}_{seed}}Dseed​={Xseed​,Vseed​}。

例如,对于 IMDb(Maas等,2011)数据集,即一部关于电影评论的情感分析数据集,Tration(yi=positive/negative)\mathcal{T}{ration}(y_i=positive/negative)Tration​(yi​=positive/negative) 为:“可能导致正面/负面电影评论的原因是什么。”,而 T‾query(rcurr,positive)\overline{\mathcal T}{query}(\boldsymbol{r}_{curr},positive)Tquery​(rcurr​,positive) 为:"现在想象一下,你刚刚观看了一部表演出色、情节引人入胜、画面精美的电影。现在你应该写一篇关于这部电影的正面评论。"我们使用提示作为LLM的输入,并将目标输出作为合成的伪示例。这种“解释后生成”的方法使我们能够生成更多样化、信息丰富且现实的示例。

2.3 错误外推的数据集优化

接下来,我们描述错误外推合成(EES)框架,该框架试图通过在小型验证集上迭代地推断在当前合成数据集上训练的小型模型的错误,从而逐步减小分布差距。这与传统的数据合成方法不同,在传统方法中,合成数据集在合成过程完成后是固定的,并用于训练小型模型。具体而言,EES过程推断了小型模型在真实世界验证数据集上产生的错误,以合成一些额外的数据来修复错误。

在EES过程中,我们使用两个不同的数据源:种子数据集 Dseed\mathcal{D}{seed}Dseed​ 和一个小规模的人工标注的真实世界数据集,称为黄金数据,表示为 Dgold\mathcal{D}{gold}Dgold​。在EES中,我们首先将黄金数据划分为一个验证数据集 Dgold(val)\mathcal{D}{gold}^{(val)}Dgold(val)​ 和一个测试数据集 Dgold(test)\mathcal{D}{gold}^{(test)}Dgold(test)​。我们使用 Dgold(val)\mathcal{D}{gold}^{(val)}Dgold(val)​ 来查找和修复分布差距,使用 Dgold(test)\mathcal{D}{gold}^{(test)}Dgold(test)​ 来评估小型模型的性能。

算法2: 错误外推算法

我们在算法2中展示了整个EES过程。循环开始于第2行的一轮表示一轮EES。R表示我们要执行的EES轮数;在我们的实现中,我们通常进行2轮实验。f表示小型模型;Dmis(q)D{(q)}_{mis}Dmis(q)​表示小型模型在第q轮EES中在黄金验证数据集上误分类的示例集。Tmis(1)(xmis,ymis)T{(1)}{mis}(x{mis}, y_{mis})Tmis(1)​(xmis​,ymis​)表示用于错误外推的提示。该提示要求LLM合成一个与xmisx_{mis}xmis​相似且标签为ymisy_{mis}ymis​的数据点。在我们的实现中,我们使用的提示是:“写一篇像《这部电影很棒》一样的正面电影评论。” Dadd(q+1)D{(q+1)}_{add}Dadd(q+1)​表示我们基于对Dmis(q)D{(q)}_{mis}Dmis(q)​进行外推而在LLM上合成的第q + 1个附加数据集。 EES算法的关键步骤是使用当前合成的数据集训练小型模型(第6行),并利用LLM对误分类的数据进行外推以生成更多的训练数据(第8-10行)。这创造了一个更好反映真相的数据集。 总的来说,EES过程通过使用误分类的数据对分布差距建模,并利用LLM从中采样额外的数据点来减小分布差距。这个思想类似于梯度提升文献中对残差进行优化的思想。

2.4 多句子任务的特殊处理

为了清晰起见,我们在先前讨论的算法中专注于单句子任务。当转移到多句子任务时,需要进行一些小的修改。具体而言,对于复杂任务(例如问答),上下文句子可能非常长,阻止我们的提示适应LLM的输入限制。即使提示适应,为每个上下文句子生成理由可能成本过高。因此,在这些情况下,我们采用更传统的种子数据合成方法。

具体而言,给定一组条件上下文 C=c1,⋅⋅⋅,cmC = c_1, · · · , c_mC=c1​,⋅⋅⋅,cm​(例如NLI中的前提和QA任务中的上下文和答案),我们按照以下步骤进行数据集合成:

  1. 从C中均匀抽样当前上下文 ccurrc_{curr}ccurr​ 和当前目标标签 ycurry_{curr}ycurr​,将它们组合成一个种子数据合成提示 Tquery(2)(ccurr,ycurr)T^{(2)}{query}(c{curr}, y_{curr})Tquery(2)​(ccurr​,ycurr​)。
  2. 通过 Tquery(2)(ccurr,ycurr)T^{(2)}{query}(c{curr}, y_{curr})Tquery(2)​(ccurr​,ycurr​) 从LLM中合成目标句子(例如NLI中的假设和QA中的问题)。合成的数据表示为 (ccurr,xsyn,ycurr)(c_{curr}, x_{syn}, y_{curr})(ccurr​,xsyn​,ycurr​)。
  3. 重复上述步骤,直到我们有足够的种子数据 Dseed=(Cseed,Xseed,Yseed)D_{seed} = (C_{seed}, X_{seed}, Y_{seed})Dseed​=(Cseed​,Xseed​,Yseed​)。

表 1: 四个数据集的设计提示。 Tration 表示LLM生成理由的提示。 T^{(1/2)}_{query} 表示种子数据合成的提示, 表示当前种子数据示例的理由列表或上下文句子。 T^{(1/2)}_{mis} 表示EES的提示,其中  是完整的误分类示例。

在多句子任务中的EES过程中,我们只需要修改算法2中从第8行开始的for循环以适应多句子任务。修改后的第8行版本如算法3所示。

算法 3: 多句子EES,内部for循环

2.5 提示工程

提示的设计对合成数据集的质量有很大影响。我们在表1中展示了用于生成理由、数据点和错误外推的提示模板。

2.6 理论分析

在这一部分,我们通过首先澄清分析设置,然后分析分布差距问题以及我们的S3框架的有效性,详细分析了为什么我们的S3框架可以缩小零样本合成和实际分布之间的分布差距。

我们将数据示例的概率空间表示为P=(S,Σ);\mathcal{P}=(\mathcal{S},\Sigma);P=(S,Σ); 在这里,为了简单起见,我们将数据示例中的所有可能元素包装到一个变量s∈Ss\in Ss∈S中,而sss中的组件可以根据具体任务而变化,例如,在文本分类任务中,即s=(x,y)s=(x,y)s=(x,y)其中xxx是一段文本,yyy是相应的标签。

我们假设金标数据集(表示为{Si(gold)}i=1ngold{S_{i}{(gold)}}_{i=1}{n_{gold}}{Si(gold)​}i=1ngold​​)是通过从真实世界分布PD∈P\mathbb{P}D\in\mathcal{P}PD​∈P中独立抽样ngoldn{gold}ngold​次获得的。然后,我们还假设获得合成数据示例的过程是从PLLM∈P\mathbb{P}{LLM}\in\mathcal{P}PLLM​∈P中独立抽样。在分析部分,为了简单起见,我们将PLLM\mathbb{P}{LLM}PLLM​定义为数据示例集合SSS上的分布,而不是人类语言空间。这种区别很重要,因为虽然文本数据是自然语言,但对于许多任务来说,标签可能不是。

同样,我们假设获得种子数据集的过程(表示为 {Si}i=1n1{S_i}{i=1}^{n_1}{Si​}i=1n1​​,其中 n1n_1n1​ 是种子数据点的数量),是从我们的种子数据分布 PLLM(0)\mathbb{P}{LLM}^{(0)}PLLM(0)​ 中抽取 n1n_1n1​ 个独立同分布的样本。

让我们首先回顾数据集合成方法中分布差异问题的起源:传统的数据合成方法,以及我们方法中的种子数据集合成阶段,都从固定的分布 PLLM(0)\mathbb{P}_{LLM}^{(0)}PLLM(0)​ 中采样数据点。由于该分布是固定的且不同于任务数据分布 PD\mathbb{P}_DPD​,无论我们合成多少数据,合成的数据集都会受到一个固定的分布差异的影响。因此,在真实任务数据上,训练在合成数据集上的小型模型的测试性能受到了这一差异的限制。我们的方法,S3,旨在解决这一限制。

让我们假设小型模型完美地学习了合成数据集的分布。在这种情况下,小型模型在小型金标验证数据集上产生的错误可以代表 PD\mathbb{P}{D}PD​ 与 PLLM(0)\mathbb{P}{LLM}^{(0)}PLLM(0)​ 之间的分布差异。我们认为一个好的局部线性模型(LLM)能够从这些错误中完美地外推。这意味着LLM可以从两个分布之间的差异 PD−PLLM(0)\mathbb{P}D-\mathbb{P}{LLM}^{(0)}PD​−PLLM(0)​ 中合成样本。形式上,EES过程的每一轮中合成的额外数据如下:

Padd:=PLLM(⋅∣PD−PLLM(0))\mathbb{P}{add}:=\mathbb{P}{LLM}(\cdot|\mathbb{P}{D}-\mathbb{P}{LLM}^{(0)})Padd​:=PLLM​(⋅∣PD​−PLLM(0)​)

因此,通过从 PaddP_{add}Padd​ 中采样相同数量的数据点,并将它们与原始的种子数据分布 PLLM(0)P_{LLM}^{(0)}PLLM(0)​ 结合,混合数据集应当遵循以下分布:

PLLM(1):=p⋅Padd+(1−p)PLLM(0)≈PD\mathbb{P}{LLM}{(1)}:=p\cdot\mathbb{P}_{add}+(1-p)\mathbb{P}_{LLM}{(0)}\approx\mathbb{P}{D}PLLM(1)​:=p⋅Padd​+(1−p)PLLM(0)​≈PD​

其中 p∈[0,1]p\in[0,1]p∈[0,1] 是组合的比例,可以直观地理解为额外数据和种子数据集的比例。这表明,理论上,我们可以通过简单地组合原始种子数据和通过EES合成的额外数据来恢复金标数据分布。然而,请注意在现实场景中我们无法保证LLM和小型模型的训练是完美的。因此,S3通过迭代重复这一过程,逐渐减小分布差异并优化混合数据集直至收敛。

3 实验

我们进行实验,测试我们的方法在四个数据集上跨三个主要自然语言处理(NLP)任务的有效性。我们还进行了彻底的消融研究(第3.4节)、S3框架的可迁移性研究(第3.5节)以及对额外数据质量的研究(第3.6节)。

3.1 设置
3.1.1 数据集

在这项研究中,我们评估了我们的S3在三个主要NLP任务上的性能:文本分类、自然语言推理(NLI)和问答(QA)。对于文本分类,我们使用了IMDb(Maas等,2011)数据集;对于NLI任务,我们使用了QNLI(Rajpurkar等,2016;Wang等,2018)和RTE(Bentivogli等,2009;Giampiccolo等,2007;Haim等,2006)数据集;对于QA任务,我们使用了Adversarial QA(Bartolo等,2020)数据集。

3.2 基线

我们将我们的S3框架与以下基线进行比较:

  1. ZeroGen:ZeroGen是由Ye等人提出的基本数据合成方法(2022b)。它既不使用合成数据的理由,也不试图减小分布差异。需要注意的是,ZeroGen也使用相同的小验证集来调整超参数。
  2. GoldGen:该基线对整个金标验证数据进行外推,而不是考虑小模型产生的错误。我们进一步使用此基线来测试S3框架中错误外推思想的有效性。我们保持合成数据集的规模相同,以便与S3进行公平比较。
  3. ProGen:该基线由Ye等人提出(2022a),类似于EES,它也考虑了训练反馈。然而,该框架仅适用于文本分类任务,而且不使用LLM的理由进行数据合成。
  4. Gold Data:我们还包括一个基线,该基线在原始金标数据上对小模型进行训练,作为参考。

表2:主要实验结果。所有比较的方法都是通过对DistilBERT进行微调来评估的。在金标数据上微调小型模型的性能显示为灰色,因为它与其他方法不是直接可比的。

3.2.1 实施细节

本节提供了我们实验中S3的完整实施细节。我们将基于的GPT3.5作为所有合成工作的LLM,采用了核心抽样(nucleus sampling)进行解码,温度设置为0.9。我们使用Hugging Face Transformers库提供的DistilBERT-base-uncased作为小型模型。 我们对小型模型的微调进行了批次大小、学习率、权重衰减和迭代次数的超参数调整。

3.2.2 评估方法

对于文本分类和NLI任务,我们使用准确率作为评估方法。对于QA任务,我们使用精确匹配(EM)和F1F1F1分数作为评估方法。为了实施S3方法的实验,我们将原始数据集的训练数据用作EES中的金标评估数据集(即,Dgold(eval)\mathcal{D}_{gold}^{(eval)}Dgold(eval)​)。并且我们使用来自原始数据集的测试数据来测试我们模型的性能。

3.3 实验结果

我们在表2中呈现了主要的实验结果。我们可以观察到,与ZeroGen相比,我们的S3框架有巨大的改进(平均提升了9.48%)。在NLI和QA任务中,性能差距尤为明显。此外,与ZeroGen相比,我们仅使用了平均30.43%的数据量,这可以被视为一项显著的改进。这种改进证明了初始种子数据合成方法以及在我们的S3中不断优化数据的思想的有效性。

然后,我们将S3与GoldGen基线进行比较,以测试在验证集上外推小型模型的错误而不是整个验证集的有效性。我们发现,S3的平均绝对性能提升为2.73%,优于GoldGen。这证实了通过直接外推金标数据的错误而不是整个数据集的外推的优势。

值得注意的是,与直接在完整的金标训练数据上微调小型模型相比,S3的结果相当有竞争力。具体而言,S3在IMDB和RTE上甚至优于金标数据性能。这证实了在实际应用中应用S3的潜力。

3.4 消融研究
3.4.1 EES消融

我们首先对S3的基于错误外推的合成(EES)框架进行了消融,仅使用基于第2.2节的种子数据进行合成。为了进行公平比较,我们确保训练数据集的规模大致相同。结果如表3所示。这个结果证明了我们对动态数据集和EES的看法的有效性。我们发现对于像QA和NLI这样更复杂的任务,我们的EES框架可以取得更大的改进,这证明了分布差异问题以及我们的EES框架缩小这一差异的能力。

3.4.2 使用合理性进行种子数据合成的消融

然后,我们对S3框架在IMDb数据集上使用合理性进行数据集合成的消融进行了研究。结果如表4所示。我们发现使用理由进行数据集合成使LLM能够生成更高质量的数据集,从而在较低预算下(即更少的合成示例)提高小型模型的性能。

表3:迭代错误外推的消融测试结果(%)。没有错误外推的基线与S3相比,微调了相同数量的数据。

表4:在种子数据合成中剖析合理性的消融实验结果。有理由的部分表示我们根据LLM合成的一组理由来合成种子数据,而没有理由的部分表示种子数据是根据任务描述性提示而合成的,没有理由。

3.5 EES数据的可迁移性

接下来,我们测试EES合成数据的可迁移性。结果如表5所示。 在这个测试中,我们将我们框架的种子数据集替换为Ye等人(2022b)合成的数据。 我们进行了两组测试。我们比较了直接添加在S3中合成的EES数据(+ourAdd)和使用由Ye等人(2022b)合成的数据训练的小型模型的变体。我们可以看到这两个变体都导致了类似的性能提升。这表明EES合成的数据可以有效地转移到其他零样本合成的数据集。我们认为这是因为不同零样本数据合成方法的分布差异相似。因此,EES方法合成的数据可以普遍有助于提升性能,这进一步证明了S3的潜力。

表5:可迁移性测试结果(%):其中 +ourAdd 是ZeroGen数据集作为种子数据,S3合成的数据作为额外数据,而 +synAdd 是在ZeroGen训练的小型模型误分类的数据上使用EES。

3.6 额外数据质量研究

我们进行了这个实验来检查由EES合成的额外数据的质量。请注意,对于早期的LLM(如GPT2或T5),存在一种重复提示的趋势。如果LLM只是重复误分类的数据,那么就没有外推。因此,我们设计了以下实验来测试额外数据的质量: 句子编码:对于误分类数据DmisD_{mis}Dmis​和额外数据Dadd\mathcal{D}{add}Dadd​,我们使用DistilBERT对每个xmisx{mis}xmis​和xaddx_{add}xadd​进行编码。这导致编码后的句子分别表示为zmisz_{mis}zmis​和zaddz_{add}zadd​,每个编码后的句子都在Rd\mathbb{R}^dRd中(在DistilBERT中,d=768d=768d=768)。

余弦相似度:然后,通过比较zmisz_{mis}zmis​和zaddz_{add}zadd​之间的余弦相似度,我们衡量它们的语义相似性。高余弦相似度表示存在实质性的语义重叠。

编辑距离:此外,为了了解文本的独特性,我们计算了句子xmisx_{mis}xmis​和xaddx_{add}xadd​之间的编辑距离。如果编辑距离接近句子长度,我们推断这些文本在构成上存在显著差异。结果如表6所示。

表6:额外数据质量研究

平均误分类数据长度(avg xmisx_{mis}xmis​长度)和平均生成数据长度(avg xaddx_{add}xadd​长度)提供了解释编辑距离的上下文。这个结果表明,虽然误分类数据和额外生成的数据之间存在很高的语义相似性(由余弦相似性得分证明),但生成的句子并不仅仅是误分类样本的复制品(因为它们的编辑距离几乎等于整个句子的长度)。这个结果为新生成的数据的质量提供了额外的证据。

4 相关工作

4.1 数据集合成

大多数机器学习方法所需的大量数据推动了许多研究人员探索数据集合成的概念。这旨在从大型预训练模型(例如LLMs)中生成数据集,以便将大型模型的丰富知识转移到小型模型。最初尝试实现这一目标的方法使用微调的生成模型生成数据。这些努力首先使用少量人工标注的数据(金标数据)对LLMs进行微调,然后将生成的数据与金标数据结合起来训练小型模型。其他研究人员试图为半监督学习合成大量数据。然而,这些方法仅适用于简单的文本分类任务,对于更复杂的任务如NLI或QA而言,证明了数据效率低下且无效。

LLMs提供的零样本性能的潜力导致一些研究人员考虑基于未微调LLMs的零样本数据集合成。然而,如图1所示,直接查询未微调的LLMs通常会导致数据存在很大的分布差距,并且通常效率低下。因此,一些研究尝试进行数据选择或数据增强。然而,它们纠正分布差距的能力仍有改进空间。

4.2 上下文学习

Brown等人(2020)提出,LLMs可以通过在提示中调整一些示例来更好地学习它们正在处理的任务。这种被称为上下文学习的范式特别吸引人,因为它消除了更新LLM参数的必要性。随后的研究侧重于优化提示模板和上下文示例的选择,以及学习带有上下文目标描述。上下文学习的关键思想是从类比中学习,与我们将误差外推以合成额外数据以填补分布差距的思想相一致。然而,大多数上下文学习方法设计用于少样本设置,而在我们的研究中,LLM不需要训练。我们探索LLM直接从错误外推的能力,为创建更有效的数据集提供了一个关键示例。

5 结论

本文提出了一种基于动态数据集视角的“逐步合成”(S3)方法用于数据集合成。S3是一种新颖的数据集合成框架,缩小了纯LLMs合成数据集与真实基础数据分布之间的分布差距。S3首先使用具有理由的种子数据合成,以在种子数据中实现低分布差距。然后,通过在少量真实世界数据上迭代外推小型模型的错误来缩小这个分布差距。对四个常用数据集上三个主要NLP任务的广泛实验表明,与代表性基线相比,S3显著提高了平均仅有合成数据的三分之一的小型模型的性能。S3在许多实际应用中具有高度的潜力,因为它能够有效(即性能更好)且高效(即提高数据效率)地将极大模型(例如GPT 3.5)中的知识传递给小型模型(例如DistilBert),同时实现数据效率和计算效率。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

在这里插入图片描述

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取==🆓

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值