Openai微调分类器以提高真实性

原创 admin  2023-04-14 21:06  阅读 1 次

在一定比例的时间内,使用指点模型实现高质量输出通常相对容易,这足以在看到精心挑选的示例时给人留下深入印象,但这可能不够可靠,没法部署到生产环境中。

例子

这通常产生在我们称为输入的生成转换的一类问题中,其中的任务是将以一种格式作为输入显现的信息转换为另外一种格式。这些任务包括:

  • 根据结构化输入(例如产品名称、色彩、尺寸、种别)创建引人入胜的产品描写

  • 将大量客户评论总结成描写性的中性语气摘要、广告或朗朗上口的标语

  • 将一段内容重写为特定的品牌风格和格式,同时关注感兴趣的话题。(例如,根据相关新智能手机的新闻稿,写一则针对业余摄影师的广告。

  • 根据提供的上下文回答问题。

出于本指南的目的,我们将专注于根据提供的上下文生成广告。我们希望广告是真实的,有上下文的支持并且引人入胜。

主张

更好的提示可以提高此任务的性能,在大约 50% 到 65% 的时间内给出好的结果,但通常不会超过。但是,当视察温度稍高的 ~5 个区别世代时,人类专家通常会发现一个具有多发布质量的世代。

我们将微调分类器以履行与人类专家相同的辨别功能——从生成的样本数量中有效地选择最好样本。最好范围可能从一个领域到另外一个领域,但通常真实性是能够“生产化”原型的主要限制因素。例如,时不时地出现一个略微不那末吸引人的广告是可以容忍的,但一个不受输入支持的不真实的广告则不是。

另外,我们可以创建其他鉴别器,专注于验证广告对读者的吸引力。

方法

az9mCPCm54Ty46ZM6zbTPWduK-zFXBNMf-W5M6xwzJP4Id4I9ZycW-kVjga_JeC5A5jbr2jITZBbclr_hJrhLvMBPlgQXx1qQNAd1P-Q57Ie8bNk0Nh1IezNNR8rbwigvlcFkBPUs0

该方法可以分解为以下步骤:

  1. 创建一个生成公道完成的提示,其中一些将是高质量的。或根据所需的生成任务微调模型。我们将这个模型称为生成器。

  2. 微调 ada 二元分类器,根据几百到一千个专家标记的示例对每一个完成的真实性进行评级,预测“是”或“否”。或,使用我们训练的通用预建真实性和包含模型。我们将这个模型称为鉴别器。

  3. 生成多个区别的完成 (10⑸0),这最容易通过提高生成器的温度来实现。

  4. 根据步骤 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% 以上的时间内得到支持,我们可以:

  1. 使用鉴别器预测在保存数据集上“是”的几率

  2. 将对数几率度量转换为百分位数。这可以通过对预测进行排序,并为每一个对数几率分配一个百分位等级来实现,它表示具有较低对数几率的预测的百分比。

  3. 对每一个百分位数,计算一个精度,即高于该阈值的实际真实广告的份额。

  4. 然后你可以找到一个精度恰好高于 98% 的百分位数。取得最少 98% 的精度所需的对数几率阈值是保存数据集上该百分位数的对数几率。

这是保存数据集上精度和真实性百分位数的图表。在此数据集上,98% 的精度是在 0.58 个百分位数处实现的,这对应于 -0.000685 的对数几率。

TYxTmT1x8cwugmuH_eof3G4xAhKFOrsGyUzeYJlQCQipuLf9rXmJ0mrY8VV0FAl2riPCOw1ws4oDtOAZTg8Jx-1Mk4JhU5isruv6co8BVndPd5K4hTcHCpbDM8zVhPBDAVJPyew6s0

从图中可以看出,如果我们接受“是”的对数几率高于此阈值的任何样本,我们预计此类样本将在约 98% 的时间内得到支持。这意味着如果我们使用单个样本,我们只能在 56% 的时间内到达足够的精度。

通过生成更多样本来提高真实性

通过生成多个样本,然后选择具有最高对数几率的样本,我们可以增加所选广告确切真实的几率。通过生成 3 个样本,我们可以到达 98.3% 的足够真实性阈值。这可以通过生成 10 个样本增加到 99.6%,通过生成 17 个样本增加到 99.8%。随着样本数量的明显增加,我们可以用这类方法视察到收益递减。

lbfmK3Lmbfda14wIfL-TuagzIwjXbYwgLN8SQMS8Ss8PeZV0vQ8jU2dSM4Upa0Kxl0F4jsdDfFyHBSTRwuc9H0HNPJgiuiHAwZpQfmBdexx3nsUJmPGE16Wct0YK4d39ACwAPqa6s0

训练一个好的鉴别器需要多少样本?

精度召回曲线下的面积 (auprc) 通经常使用于机器学习来评估鉴别器性能。我们比较了微调鉴别器的性能,由于我们将训练示例的数量增加到零样本 davinci-instruct-beta 基线,到达了 0.8 auprc。

XM-iP7dw_ykb0mQxPls-oVWDuvmAI_BgSNBOJLDlaJoxQA-irz5hwgTUd7mKNEmnYJIoyK1hqgg-414bjr3YX9p_qFPAU86pKX_YXFt4b6FPiMIzsYcdQj-DODmhMTSuKx8OBdqss0

正如我们所看到的,随着我们增加用于微调的训练示例的数量,任务的微调性能也会提高。通常每一个类需要大约一百个示例才能取得比提示设计更好的性能,这也能够在此数据集上视察到。然后,随着我们将微调训练集的大小加倍,性能会大致呈线性增长。

我们想测试在一般推理任务上训练的模型在这个问题上的表现如何。它的表现仿佛与具有 20 个示例的微调模型或设计良好的零样本 davinci-instruct-beta 提示大致相同。

多个鉴别器的可能扩大

我们可以训练多个鉴别器,并以有趣的方式组合它们的输出。

例如,我们可以训练一个鉴别器来预测生成的广告的吸引力,然后从足够真实的广告当选择最吸引人的广告。

结论

通过使用所描写的技术对 10 代进行采样,我们能够将可发布内容的百分比提高到 99.5% 以上。

ChatGPT中国体验版https://go.guigege.cn

来源:https://www.huanp.com/idc/140724.html
声明:欢迎分享本文,转载请保留出处!

发表评论


表情