人工智能革命已经酝酿了数十年。这是一个充满兴奋的领域,但也时常充满失望和“人工智能寒冬”。但最近,情况发生了变化。 ChatGPT、Claude 和 Bard 等大型语言模型 (LLM) 将人工智能从实验室的好奇心推向了主流。
这种转变不仅是人工智能的胜利,也是对错综复杂的庞大而混乱的数据的胜利。俗话说“垃圾进来,垃圾出去”。新工具不断涌现,专注于改善基础数据,从而改善法学硕士。
“大型语言模型”一词包含两个巨大的挑战。首先,数据量巨大。我们谈论的 GPT-4 数据量高达PB (一百万千兆字节),其中包括数百万本书、博客、社交媒体帖子、视频记录等。这种巨大的规模提供了巨大的潜力,但也带来了重要的后勤考虑。
其次,自然语言的复杂性。依赖于上下文、模糊性和多样性的语言数据是一头野兽,即使是最好的算法也难以驯服。准确地标记所有这些数据是不可能的,这不可避免地意味着即使是最先进的法学硕士也要接受大量错误标记数据的训练。
面对这些挑战,新的以数据为中心的工具和方法出现了,实现了人工智能能力的真正飞跃。 Cleanlab 等解决方案开始提供收集各种数据、自动化质量控制以及将语言处理为适合人工智能模型的形式的方法。
这些工具不仅提供了渐进式改进,而且还提供了改进。他们从根本上重塑了人工智能数据处理的方法。他们将处理大规模语言数据的任务从容易出错的手动过程转变为自动化、精确的过程,使该领域民主化并以前所未有的速度取得进步。
在 AI 中,现实世界的数据集包含7-50% 的注释错误。这些缺陷极大地阻碍了培训和评估。以数据为中心的人工智能强调提高数据集本身的质量。
例如,OpenAI 的策略就说明了这一重点:“我们优先考虑过滤掉所有不良数据,而不是保留所有良好数据。这是因为我们总是可以在以后用更多的数据来微调我们的模型,以教它新的东西,但让模型忘记它已经学到的东西要困难得多。”
然而,手动过滤数据的方法既耗时又昂贵。 Cleanlab 包是当今流行的以数据为中心的人工智能实践的开源框架。它允许您在经过训练的 ML 模型的输出上运行数据质量算法,以检测常见的数据集问题,例如标签错误、异常值、漂移等。
只需几行代码,您就可以自动查找和识别图像、文本、表格和音频等各种类型数据中的问题。通过使用 Cleanlab 包,您可以决定如何改进数据集和模型、重新训练 ML 模型,并在不对现有代码进行任何更改的情况下查看其性能的提高。
另一方面,Cleanlab Studio 不仅仅是 Cleanlab 软件包的扩展;它是一个无代码平台,旨在查找和修复现实数据集中的问题。它不仅仅停留在检测问题上,还进一步处理数据管理和纠正,甚至自动化将原始数据转化为可靠的机器学习或分析的几乎所有困难部分。
让我们使用 Cleanlab 包来演示以数据为中心的 AI 的强大功能。
我们从斯坦福礼貌数据集开始。确保您已加载训练集和测试集。在此演示中,我们将针对 3 类分类对 Davinci LLM 进行微调,首先不使用 Cleanlab,然后了解如何通过以数据为中心来提高准确性。我们可以运行一个简单的 bash 命令来训练模型。
!openai api fine_tunes.create -t "train_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "baseline"
完成后,我们可以查询fine_tunes.results
端点来查看测试准确性。
!openai api fine_tunes.results -i ft-9800F2gcVNzyMdTLKcMqAtJ5 > baseline.csv
`df = pd.read_csv('基线.csv')
基线_acc = df.iloc[-1]['分类/准确度']`
我们得到的结果准确率为 63%。让我们看看是否可以改进这一点。
现在,让我们使用 OpenAI 的 API 来计算嵌入并拟合逻辑回归模型以获得样本外预测类别概率。
# Get embeddings from OpenAI. from openai.embeddings_utils import get_embedding
embedding_model = "text-similarity-davinci-001" train["embedding"] = train.prompt.apply(lambda x: get_embedding(x, engine=embedding_model)) embeddings = train["embedding"].values
# Get out-of-sample predicted class probabilities via cross-validation.
from sklearn.linear_model import LogisticRegression
model = LogisticRegression() labels = train["completion"].values pred_probs = cross_val_predict(estimator=model, X=embeddings, y=labels, cv=10, method="predict_proba")
只需一行代码,Cleanlab 就能估算出训练数据集中哪些示例存在标签问题。
from cleanlab.filter import find_label_issues
现在我们可以获得估计有标签问题的示例索引:
issue_idx = find_label_issues(labels, pred_probs, return_indices_ranked_by='self_confidence') # sort indices by likelihood of label error
现在,我们已经自动提取了可能被错误标记的示例的索引,因此我们可以删除它们并训练新的分类器。
# Remove the label errors
train_cl = train.drop(issue_idx).reset_index(drop=True) format_data(train_cl, "train_cl.jsonl")
现在让我们用更好的数据训练一个更强大的分类器。
!openai api fine_tunes.create -t "train_cl_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "dropped"
# Evaluate model on test data
!openai api fine_tunes.results -i ft-InhTRQGu11gIDlVJUt0LYbEx > cleanlab.csv df = pd.read_csv('cleanlab.csv') dropped_acc = df.iloc[-1]['classification/accuracy']
我们获得了超过 66% 的准确率,改进了最先进的可微调模型(GPT-3,因为你无法微调 GPT-4),只需自动改进数据集,无需任何更改到模型。
借助 Cleanlab Studio,还可以自动修复不正确的标签,而不是直接删除它们,从而进一步提高准确性。 Cleanlab 的指南显示,这需要高达 77% 的准确率。
使用 Cleanlab 等以数据为中心的工具,您可以有效地查找并修复数据和标签问题,从而显着提高 Davinci 等法学硕士的表现。这种方法不会改变模型架构或超参数,仅专注于提高训练数据的质量。
本指南中概述的方法可能是提高 AI 模型准确性和鲁棒性的关键,即使对于未来的高级法学硕士(如 GPT-5)也是如此。