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