在一定比例的时间内,使用指导模型实现高质量输出通常相对容易,这足以在看到精心挑选的示例时给人留下深刻印象,但这可能不够可靠,无法部署到生产环境中。
例子
这通常发生在我们称为输入的生成转换的一类问题中,其中的任务是将以一种格式作为输入呈现的信息转换为另一种格式。这些任务包括:
-
根据结构化输入(例如产品名称、颜色、尺寸、类别)创建引人入胜的产品描述
-
将大量客户评论总结成描述性的中性语气摘要、广告或朗朗上口的标语
-
将一段内容重写为特定的品牌风格和格式,同时关注感兴趣的话题。(例如,根据有关新智能手机的新闻稿,写一则针对业余摄影师的广告。
-
根据提供的上下文回答问题。
出于本指南的目的,我们将专注于根据提供的上下文生成广告。我们希望广告是真实的,有上下文的支持并且引人入胜。
主意
更好的提示可以提高此任务的性能,在大约 50% 到 65% 的时间内给出好的结果,但通常不会超过。然而,当观察温度稍高的 ~5 个不同世代时,人类专家通常会发现一个具有高发布质量的世代。
我们将微调分类器以执行与人类专家相同的判别功能——从生成的样本数量中有效地选择最佳样本。最佳范围可能从一个领域到另一个领域,但通常真实性是能够“生产化”原型的主要限制因素。例如,时不时地出现一个稍微不那么吸引人的广告是可以容忍的,但一个不受输入支持的不真实的广告则不是。
此外,我们可以创建其他鉴别器,专注于验证广告对读者的吸引力。
方法
该方法可以分解为以下步骤:
-
创建一个生成合理完成的提示,其中一些将是高质量的。或者根据所需的生成任务微调模型。我们将这个模型称为生成器。
-
微调 ada 二元分类器,根据几百到一千个专家标记的示例对每个完成的真实性进行评级,预测“是”或“否”。或者,使用我们训练的通用预建真实性和蕴含模型。我们将这个模型称为鉴别器。
-
生成多个不同的完成 (10-50),这最容易通过提高生成器的温度来实现。
-
根据步骤 2 中鉴别器的“是”标签的预测对数概率对每个完成度进行排序,并仅选择对您的应用程序所需的真实性具有足够高置信度的完成度。如果没有完成达到该阈值,您可以尝试生成更多具有更高温度的样本,或者您可以返回一个特殊的输出,表示生成的样本都不够真实。
如何微调鉴别器?
请阅读案例研究:模型是否做出了不真实的陈述?有关此主题的更多背景信息。
格式化输入
{“prompt”:”Context:<elaborate dry context>\nAd:<generated ad>\nSupported:”, “completion”:”yes”}
{“prompt”:”Context:<elaborate dry context>\nAd:<generated ad>\nSupported:”, “completion”:”no”}
{“prompt”:”Context:<elaborate dry context>\nAd:<generated ad>\nSupported:”, “completion”:”yes”}
设置参数
我们建议使用 ada,因为它是最快的引擎,并且能够在微调后在分类任务中创建良好的预测。为了通过微调获得更好的分类性能,与少量学习相比,我们通常每个类至少需要 100 个示例。随着示例数量的任何翻倍,性能往往会线性增加。
判别器的准确性越高,就越容易找到模型对其有足够信心的样本。
如何使用鉴别器获得信心?
第一个生成的完成令牌的对数概率可用于确定置信度。获取对数概率,可以在完成请求中加上logprobs=2和logit_bias={'645': 100, '3763': 100}参数,其中645和3763分别是`no`和`yes`的token ID . 在分类指南的最后一节中查看更多详细信息。“是”标记的对数概率越高,预测支持输出的置信度就越高。
如何确定对数概率阈值?
要确定一个阈值,超过该阈值,广告可能会在 98% 以上的时间内得到支持,我们可以:
-
使用鉴别器预测在保留数据集上“是”的概率
-
将对数概率度量转换为百分位数。这可以通过对预测进行排序,并为每个对数概率分配一个百分位等级来实现,它表示具有较低对数概率的预测的百分比。
-
对于每个百分位数,计算一个精度,即高于该阈值的实际真实广告的份额。
-
然后你可以找到一个精度刚好高于 98% 的百分位数。获得至少 98% 的精度所需的对数概率阈值是保留数据集上该百分位数的对数概率。
这是保留数据集上精度和真实性百分位数的图表。在此数据集上,98% 的精度是在 0.58 个百分位数处实现的,这对应于 -0.000685 的对数概率。
从图中可以看出,如果我们接受“是”的对数概率高于此阈值的任何样本,我们预计此类样本将在约 98% 的时间内得到支持。这意味着如果我们使用单个样本,我们只能在 56% 的时间内达到足够的精度。
通过生成更多样本来提高真实性
通过生成多个样本,然后选择具有最高对数概率的样本,我们可以增加所选广告确实真实的概率。通过生成 3 个样本,我们可以达到 98.3% 的足够真实性阈值。这可以通过生成 10 个样本增加到 99.6%,通过生成 17 个样本增加到 99.8%。随着样本数量的显着增加,我们可以用这种方法观察到收益递减。
训练一个好的鉴别器需要多少样本?
精度召回曲线下的面积 (auprc) 通常用于机器学习来评估鉴别器性能。我们比较了微调鉴别器的性能,因为我们将训练示例的数量增加到零样本 davinci-instruct-beta 基线,达到了 0.8 auprc。
正如我们所看到的,随着我们增加用于微调的训练示例的数量,任务的微调性能也会提高。通常每个类需要大约一百个示例才能获得比提示设计更好的性能,这也可以在此数据集上观察到。然后,随着我们将微调训练集的大小加倍,性能会大致呈线性增长。
我们想测试在一般推理任务上训练的模型在这个问题上的表现如何。它的表现似乎与具有 20 个示例的微调模型或设计良好的零样本 davinci-instruct-beta 提示大致相同。
多个鉴别器的可能扩展
我们可以训练多个鉴别器,并以有趣的方式组合它们的输出。
例如,我们可以训练一个鉴别器来预测生成的广告的吸引力,然后从足够真实的广告中选择最吸引人的广告。
结论
通过使用所描述的技术对 10 代进行采样,我们能够将可发布内容的百分比提高到 99.5% 以上。