新智元报道

  编辑:编辑部

  这个开源工具,居然能用 GPT-4 代替人类去标注数据,效率比人类高了 100 倍,但成本只有1/7。

  大模型满天飞的时代,AI 行业最缺的是什么?毫无疑问一定是算(xian)力(ka)。

  老黄作为 AI 掘金者唯一的「铲子供应商」,早已赚得盆满钵满。

  除了 GPU,还有什么是训练一个高效的大模型必不可少且同样难以获取的资源?

  高质量的数据。OpenAI 正是借助基于人类标注的数据,才一举从众多大模型企业中脱颖而出,让 ChatGPT 成为了大模型竞争中阶段性的胜利者。

  但同时,OpenAI 也因为使用非洲廉价的人工进行数据标注,被各种媒体口诛笔伐。

  时代周刊报道 OpenAI 雇佣肯尼亚廉价劳动力标注

  而那些参与数据标注的工人们,也因为长期暴露在有毒内容中,受到了不可逆的心理创伤。

  卫报报道肯尼亚劳工指责数据标注工作给自己带来了不可逆的心理创伤

  总之,对于数据标注,一定需要找到一个新的方法,才能避免大量使用人工标注带来的包括道德风险在内的其他潜在麻烦。

  所以,包括谷歌,Anthropic 在内的 AI 巨头和大型独角兽,都在进行数据标注自动化的探索。

  谷歌最近的研究,开发了一个和人类标注能力相近的 AI 标注工具

  Anthropic 采用了 Constitutional AI 来处理数据,也获得了很好的对齐效果

  除了巨头们的尝试之外,最近,一家初创公司 refuel,也上线了一个 AI 标注数据的开源处理工具:Autolabel。

  Autolabel:用 AI 标注数据,效率最高提升 100 倍

  这个工具可以让有数据处理需求的用户,使用市面上主流的 LLM(ChatGPT,Claude 等)来对自己的数据集进行标注。

  refuel 称,用自动化的方式标注数据,相比于人工标注,效率最高可以提高 100 倍,而成本只有人工成本的1/7!

  就算按照使用成本最高的 GPT-4 来算,采用 Autolabel 标注的成本只有使用人工标注的1/7,而如果使用其他更便宜的模型,成本还能进一步降低

  采用 Autolabel+LLM 的标注方式之后,标注效率更是大幅提升

  对于 LLM 标注质量的评估,Autolabel 的开发者创立了一个基准测试,通过将不同的 LLM 的标注结果和基准测试中不同数据集中收纳的标准答案向比对,就能评估各个模型标注数据的质量。

  当 Autolabel 采用 GPT-4 进行标注时,获得了最高的准确率——88.4%,超过了人类标注结果的准确率 86.2%。

  而且其他比 GPT-4 便宜得多的模型的标注准确率,相比 GPT-4 来说也不算低。

  开发者称,在比较简单的标注任务中采用便宜的模型,在困难的任务中采用 GPT-4,将可以大大节省标注成本,同时几乎不影响标注的准确率。

  Autolabel 支持对自然语言处理项目进行分类,命名实体识别,实体匹配和问答。

  支持主流的所有 LLM 提供商:OpenAI、Anthropic 和 Google Palm 等,并通过 HuggingFace 为开源和私有模型提供支持。

  用户可以尝试不同的提示策略,例如少样本和思维链提示。只要简单更新配置文件即可轻松估计标签置信度。

  Autolabel 免除了编写复杂的指南,无尽地等待外部团队来提供数据支持的麻烦,用户能够在几分钟内开始标注数据。

  可以支持使用本地部署的私有模型在本地处理数据,所以对于数据隐私敏感度很高的用户来说,Autolabel 提供了成本和门槛都很低的数据标注途径。

  如何用 AI 进行评论有害性标注

  所以,不论是律所想要通过 GPT-4 来对法律文档进行分类,还是保险公司想要用私有模型对敏感的客户医疗数据进行分类或者筛查,都可以使用 Autolabel 进行高效地处理。

  Autolabel 提供了一个简单的案例来展示了如何使用它进行评论有害性的标注过程。

  假设用户是一个社交媒体的内容审核团队,需要训练分类器来确定用户评论是否有毒。

  如果没有 Autolabel,用户需要首先收集几千个示例,并由一组人工注释者对它们进行标注,可能需要几周的时间——熟悉标注方针,从小数据集到大数据集进行几次迭代,等等。

  而如果使用 Autolabe 可以在分钟内就对这个数据集进行标注。

  Autolabel 安装

  首先安装所有必要的库:

pip install 'refuel-autolabel[openai]'

  现在,将 OpenAI 密钥设置为环境变量。

  下载和查看数据集

  将使用一个名为 Civil Comments 的数据集,该数据集可通过 Autolabel 获得。你可以在本地下载它,只需运行:

from autolabel import get_dataget_data ('civil_comments')

  输出为:

Downloading seed example dataset to "seed.csv"...100% [..............................................................................] 65757 / 65757Downloading test dataset to "test.csv"...100% [............................................................................] 610663 / 610663

  标注例子:

  使用自动标签贴标分为三个步骤:

  首先,指定一个标签配置(参见下面的 config 对象)并创建一个 LabelingAgent。

  接下来,通过运行 agent.plan,使用 config 中指定的 LLM 对的数据集进行一次标注

  最后,使用 agent.run 运行标签

  实验1:尝试简单的标签指南

  定义下面的配置文件:

config = {"task_name": "ToxicCommentClassification","task_type": "classification", # classification task"dataset": {"label_column": "label",},"model": {"provider": "openai","name": "gpt-3.5-turbo" # the model we want to use},"prompt": {# very simple instructions for the LLM"task_guidelines": "Does the provided comment contain 'toxic' language? Say toxic or not toxic.","labels": [ # list of labels to choose from"toxic","not toxic"],"example_template": "Input: {example}\nOutput: {label}"

  如果要创建自定义配置,可以使用 CLI 或编写自己的配置。

  现在,用 agent.plan 进行预演:

from autolabel import LabelingAgent, AutolabelDataset

agent = LabelingAgent (config)ds = AutolabelDataset ('test.csv', config = config)agent.plan (ds)

  输出:

┌──────────────────────────┬─────────┐│ Total Estimated Cost │ $4.4442 ││ Number of Examples │ 2000 ││ Average cost per example │ $0.0022 │└──────────────────────────┴─────────┘───────────────────────────────────────────────── Prompt Example ──────────────────────────────────────────────────Does the provided comment contain 'toxic' language? Say toxic or not toxic.

You will return the answer with just one element: "the correct label"

Now I want you to label the following example:Input: [ Integrity means that you pay your debts.]. Does this apply to President Trump too?Output:

  最后,进行数据标注:

ds = agent.run (ds, max_items=100) ┏━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓┃ support ┃ threshold ┃ accuracy ┃ completion_rate ┃┡━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩│ 100 │ -inf │ 0.54 │ 1.0 │└─────────┴───────────┴──────────┴─────────────────┘

  输出结果为 54% 的准确率不是很好,进一步改进的具体方法可以访问以下链接查看:

https://docs.refuel.ai/guide/overview/tutorial-classification/

  技术细节:标注质量 Benchmark 介绍

  在对 Autolabel 的基准测试中,包含了以下数据集:

  表1:Autolabel 标注的数据集列表

  使用了以下 LLM:

  表2:用于评估的 LLM 提供者与模型列表

  本研究在三个标准上对 LLM 和人工标注进行评估:

  首先是标签质量,即生成的标签与真实标签之间的一致性;

  其次是周转时间,即以秒为单位时,生成标签所花费的时间;

  最后是以分为单位,生成每个标签的成本。

  对于每个数据集,研究人员都将其拆分为种子集和测试集两部分。

  种子集包含 200 个示例,是从训练分区中随机采样构建的,用于置信度校准和一些少量的提示任务中。

  测试集包含 2000 个示例,采用了与种子集相同的构建方法,用于运行评估和报告所有基准测试的结果。

  在人工标注方面,研究团队从常用的数据标注第三方平台聘请了数据标注员,每个数据集都配有多个数据标注员。

  此过程分为三个阶段:

  研究人员为数据标注员提供了标注指南,要求他们对种子集进行标注。

  然后对标注过的种子集进行评估,为数据标注员提供该数据集的基准真相作为参考,并要求他们检查自己的错误。

  随后,为数据标注员解释说明他们遇到的标签指南问题,最后对测试集进行标注。

  结果

  标签质量

  标签质量衡量的是生成的标签(由人类或 LLM 标注者生成)与数据集中提供的基准真相的吻合程度。

  对于 SQuAD 数据集,研究人员用生成标签与基准真相之间的 F1 分数来衡量一致性,F1 是问题解答的常用指标。

  对于 SQuAD 以外的数据集,研究人员用生成标签与基准真相之间的精确匹配来衡量一致性。

  下表汇总了各个数据集标签质量的结果:

  表3:各种 NLP 任务中的标签质量(与基准真相的一致率),每列中的最高数字以绿色标出

  可以看到,与熟练的人工数据标注员相比,最先进的 LLM 已经可以在相同甚至更好的水平上标注文本数据集,并且做到开箱即用,大大简化了繁琐的数据标注流程。

  GPT-4 在一系列数据集中的标签质量都优于人类数据标注员。其他几个 LLM 的表现也在 80% 左右,但调用 API 的价格仅为 GPT-4 的十分之一。

  但由于 LLM 是在大量数据集上训练出来的,所以在评估 LLM 的过程中存在着数据泄露的可能。

  研究人员对此进行了例如集合的额外改进,可以将表现最好的的 LLM(GPT-4、PaLM-2)与基准真相的一致性从 89% 提高到 95% 以上。

  置信度估计

  对 LLM 最大的诟病之一就是幻觉。因此,当务之急是用一种与标签正确的可能性相关的方式来评估标签的质量。

  为了估计标签置信度,研究人员将 LLM 输出的 token 级日志概率平均化,而这种自我评估方法在各种预测任务中都很有效。

  对于提供对数概率的 LLM(text-davinci-003),研究人员使用这些概率来估计置信度。

  对于其他 LLM,则使用 FLAN T5 XXL 模型进行置信度估计。

  标签生成后,查询 FLAN T5 XXL 模型以获得生成的输出标注的概率分布,但前提是输入的提示信息与用于标签的信息相同。

  表4:同一数据集上 gpt-3.5-turbo 和 gpt-4 的标签质量与完成率

  在校准步骤中,研究人员利用估计置信度来了解标签质量和完成率之间的权衡。

  即研究人员为 LLM 确定了一个工作点,并拒绝所有低于该工作点阈值的标签。

  例如,上图显示,在 95% 的质量阈值下,我们可以使用 GPT-4 标注约 77% 的数据集。

  添加这一步的原因是 token 级日志概率在校准方面的效果不佳,如 GPT-4 技术报告中所强调的那样:

  GPT-4 模型的校准图:比较预训练和后 RLHF 版本的置信度和准确性

  使用上述置信度估算方法,并将置信度阈值设定为 95% 的标签质量(相比之下,人类标注者的标签质量为 86%),得到了以下数据集和 LLM 的完成率:

  95% 与基准真相一致的完成率

  相比之下,人类标注者与基准真相的一致性为 86.6%。

  从上图可以看到在所有数据集中,GPT-4 的平均完成率最高,在 8 个数据集中,有 3 个数据集的标注质量超过了这一质量阈值。

  而其他多个模型(如 text-bison@001、gpt-3.5-turbo、claude-v1 和 flan-t5-xxl)也实现了很好的性能:

  平均至少成功自动标注了 50% 的数据,但价格却只有 GPT-4 API 成本的1/10 以下。

  未来更新的方向

  在接下来的几个月中,开发者承诺将向 Autolabel 添加大量新功能:

  支持更多 LLM 进行数据标注。

  支持更多标注任务,例如总结等。

  支持更多的输入数据类型和更高的 LLM 输出稳健性。

  让用户能够试验多个 LLM 和不同提示的工作流程。

  参考资料:

  https://www.refuel.ai/blog-posts/introducing-autolabel