Giskard Bot:识别十大最受欢迎 Hugging Face 模型中的稳健性、性能和伦理漏洞
TL;DR:在本文中,我们应用 Giskard Bot 来评估 Hugging Face 上最受欢迎的 10 个文本分类模型。我们发现,超过 90% 的顶级文本分类模型存在稳健性问题,而超过一半的模型表现出性能和伦理偏差,尤其是在情感分析方面。本文详细分析了这些漏洞、其原因,并提供了检测和缓解它们的实用解决方案。此外,我们还提供了使用 Giskard Bot 扫描您自己模型的便捷指南,无论是来自 Hugging Face Hub 还是自定义训练的模型。
文章作者:Mathieu Martial & Weixuan Xiao
目录
机器学习模型评估导论
在之前的文章中,我们介绍了 Giskard 机器人,这是一个允许 Hugging Face 用户进行以下操作的机器人:
- 自动为添加到 HF Hub 的每个新模型生成并发布漏洞报告。此报告将作为 HF 讨论和模型卡上的拉取请求 (PR) 提交。
- 调试这些漏洞并为您的业务案例创建自定义测试。
在本文中,我们决定应用此 Giskard 机器人 来评估 Hugging Face 🤗 上最受欢迎的 10 个文本分类模型。
- HF Hub 中最受欢迎的 10 个模型的主要漏洞是什么?
- 为什么会发生这种情况以及如何修复此类漏洞?
- 如何评估 HF hub 中上传的其他模型?
💡 方法论
这 10 个顶级模型是根据以下几个标准选择的:
- 我们选择了在公开可用数据集上训练的文本分类模型。
- 我们只关注可用于英语数据的模型。
- 我们运行了性能、稳健性和伦理检测器。
- 这些模型在其测试集上进行评估(除了在
FinancialPhraseBank
上训练的模型,由于没有可用的测试集,因此使用训练集进行扫描)
主要发现:90% 的顶级 Hugging Face 模型存在漏洞
在对 10 个顶级模型运行 Giskard 机器人后,我们发现:
- 超过 90% 的模型存在稳健性漏洞。
- 超过 50% 的模型存在性能漏洞。
- 超过 50% 的情感分析模型表现出伦理偏差。
为了更好地理解这些漏洞,让我们定义一些术语:
- 稳健性:指模型抵抗输入数据中微小扰动(例如添加错别字或将文本转换为大写)的能力。如果不稳健,即使输入中的微小变化也可能导致模型预测发生显著变化,从而降低模型的性能可靠性。
- 性能偏差:指模型在特定数据切片或子集上表现出低性能的情况,尽管在整个数据集上表现令人满意。性能偏差可能表现为准确性、精确度、召回率或其他评估指标在不同数据组或段之间存在显著差异。
- 伦理偏差:出现在模型对受保护属性(如性别、种族或宗教)进行扰动时表现出敏感性的情况。这些扰动可能涉及将某些词从女性改为男性,或例如改变特定的国家、国籍和宗教。
每个扫描模型的详细报告如下表所示
模型 | 数据集 | 稳健性 | 性能 | 伦理 | 扫描报告 |
---|---|---|---|---|---|
distilbert/distilbert-base-uncased-finetuned-sst-2-english | SST2 | 1 | 0 | 0 | SST2 上的 DistilBERT |
lxyuan/distilbert-base-multilingual-cased-sentiments-student(最新) | tyqiangz/multilingual-sentiments “english” | 1 | 1 | 1 | tyqiangz/multilingual-sentiments 上的 Distilbert-multilingual |
cardiffnlp/twitter-roberta-base-irony | tweet_eval “irony” | 1 | 3 | 0 | tweet_eval "irony" 上的 TwitterRoBERTa-irony |
SamLowe/roberta-base-go_emotions | go_emotions | 0 | 1 | 1 | go_emotions 上的 RoBERTa-base |
mrm8488/distilroberta-finetuned-financial-news-sentiment-analysis | 金融短语库 | 1 | 0 | 0 | 金融短语库上的 DistilBERT-Financial |
cardiffnlp/twitter-roberta-base-sentiment-latest | tweet_eval “sentiment” | 1 | 1 | 2 | tweet_eval “sentiment” 上的 TwitterRoBERTa-sentiment |
ahmedrachid/FinancialBERT-Sentiment-Analysis | 金融短语库 | 1 | 0 | 0 | 金融短语库上的 Financial BERT |
yiyanghkust/finbert-tone | 金融短语库 | 1 | 8 | 0 | 金融短语库上的 FinBERT-tone |
ProsusAI/finbert | 金融短语库 | 1 | 0 | 0 | 金融短语库上的 FinBERT |
cardiffnlp/twitter-xlm-roberta-base-sentiment-multilingual | tweet_sentiment_multilingual “english” | 2 | 0 | 2 | tweet_sentiment_multilingual 上的 XLM-RoBERTa-multilingual |
cardiffnlp/twitter-roberta-base-offensive | tweet_eval “offensive” | 1 | 3 | 0 | tweet_eval “offensive” 上的 TwitterRoBERTa-offensive |
⚠️ 本文无意批评或贬低他人的努力,而是为了举例说明我们的扫描如何用于发现模型中的漏洞,并提供修复这些漏洞的一般准则。
如何检测和缓解机器学习模型漏洞?
让我们通过一些示例来更好地理解这些漏洞(我们目前正在使用 AVID ML 分类法),并提供具体的修复措施。
机器学习模型中的稳健性问题
我们的分析揭示了这些模型中的一个常见漏洞:它们对错别字的高度敏感性。虽然错别字会降低输入保真度,但人们不会期望它们会显著改变模型预测。因此,鉴于错别字在真实数据中普遍存在,特别是对于情感分析模型,模型对错别字的敏感性问题相当严重。
此外,它通常对文本数据执行,以帮助企业监控客户反馈中的品牌和产品情绪,并了解客户需求。糟糕的性能可能会导致下游做出不明智且更糟糕的决策。因此,您希望您的模型对错别字具有很强的稳健性。
让我们通过一个例子来说明。
以下是模型 distilbert-base-uncased-finetuned-sst-2-english 报告的一部分,它是 🤗 上最受欢迎的文本分类模型。
正如您所看到的,在输入句子中添加一些错别字改变了 13% 的模型预测,这非常重要。人类注释者可以毫无问题地阅读转换后的句子(参见第二列)并理解它有些积极(作者表达了她对其他人的支持)。然而,模型完全改变了其预测:它从 96% 确定原始输入是积极的转变为 99% 确定转换后的输入是消极的。
在 11 个模型中,有 9 个模型对错别字表现出漏洞。这是为什么呢?
当一个句子被提供给模型时,它会被分词,这意味着单词会根据频率被切成更小的子词。例如,“I love HuggingFace”被分成:I、love、H、ugging、Face。现在让我们添加一些基本的错别字,就像我们漏掉了几个按键一样:“I lpve HiggingFace”。现在分词结果是:I、lp、ve、H、ig、ging、Face。这种差异会改变模型的计算,从而影响最终预测。
那么该怎么做呢?
训练模型以应对此类漏洞的一种好方法是增强您的数据。您可以通过查看键盘上每个字符旁边的其他字符来将它们映射到一组“常见错别字”(请注意,键盘布局不止一种!)。然后,随机向您的数据添加错别字,为您的模型创建额外的输入以供学习!
您还可以决定在数据中添加预处理步骤,以尽可能地清理数据。例如,您可以尝试根据一组词汇和 Levenshtein 距离来纠正错别字。其想法是根据该距离在您的词汇中找到与您的拼写错误的单词最接近的单词,并在将其输入模型之前进行纠正。
这些都是非常标准的想法,但它们可以走很远!
机器学习模型中的性能偏差
扫描显示,模型在处理非常特定的术语时表现更差。如果这些术语在您的数据集中频繁出现,这可能会很麻烦。
让我们看一个例子来更好地理解这个问题。
下面的例子来自一个 RoBERTa 模型,该模型经过微调,用于预测推文中的反讽。具有讽刺意味的是,它在包含“反讽”一词的文本上的准确率很低。
另一个例子来自 Finbert-Tone,这是一个用于金融情感分析的模型,它似乎在“eur”(如欧元)等关键词上表现不佳。
对于一个需要处理金融新闻的模型来说,即使在这样一个重要的词上损失一点性能也可能令人担忧。此外,这些漏洞通常很难修复,因为没有明确的解释为什么某些特定词语与不良性能相关。然而,这可能与模型的训练方式有关。
让我们深入探讨最后一个例子,以了解它是如何发生的
💶 FinBERT 和 FinBERT-Tone 是非常相似的模型:BERT 模型经过微调以进行金融情感分析。主要区别在于 FinBERT-tone 引入了自己的词汇表,不依赖于 FinBERT 这样的基本 BERT 词汇表,并且它们在不同的数据集上进行了微调。
与 FinBERT 不同,Finbert-tone 在“eur”或“finland”等词上表现出性能损失,这似乎很奇怪,考虑到它们是多么相似。第一个模型在路透社 TCR2 数据集上训练。路透社实际上是一家总部位于伦敦的国际新闻机构。这意味着他们处理大量欧洲新闻。
我们用于扫描的数据集称为金融短语库数据集。相关的论文来自芬兰一所大学,语料库由 OMX 赫尔辛基(赫尔辛基证券交易所)所有上市公司上的英文新闻组成,注释者大多是芬兰人。换句话说,这个数据集非常“欧洲化”。**请注意,Hugging Face 上可用的 FinBERT 模型也在此数据集上进行了训练。
然而,FinBERT-tone 在 3 个独立的数据集上进行了训练
- 2004 年至 2019 年的收益电话会议记录。它们来自 Seeking Alpha 网站,这是一家总部位于纽约的公司,发布金融市场新闻。
- 1995 年至 2008 年来自 S&P 公司(美国证券交易所)的分析师报告,存储在 Investext 数据库中,该数据库包含来自全球券商、投资银行和独立研究公司的活跃和历史研究报告。
- Hugging Face 上的模型也基于与上一个模型类似的数据集进行了训练。
总结一下,这个模型非常“美国化”,尤其是与测试集相比。这很可能是“芬兰”和“欧元”等词汇存在性能漏洞的原因。虽然这里没有确定性,但如果我们要尝试改进模型,这将是一个很好的假设。
如何修复这些漏洞?
在我们非常具体的例子中,最明显的行动是训练更多样化的数据,在这种情况下是欧洲新闻机构的文章。总的来说,性能偏差通常与训练阶段有关。过拟合非常常见,应用正则化技术(例如 dropout 或权重衰减)来防止对多数类或主导群体的过拟合可以鼓励模型关注更稳健的特征。
AI 模型中的伦理偏差
不幸的是,模型可能会学习到不希望出现的模式。这些偏差可能与性别、宗教、国家或国籍有关。
以下是 TwitterRoBERTa-sentiment(情感分析)的一些示例:
为什么会发生这种情况?
语言本身不可避免地带有偏见,文本分类模型是从我们人类撰写的句子中训练出来的,因此反映了我们自己的偏见。当模型被输入数据时,它将数据作为其唯一的知识库并将其解释为事实。然而,数据可能根深蒂固地带有偏见和错误信息,这可能导致模型的输出反映出偏见。
这在许多层面上都是有问题的:您不希望您的模型延续刻板印象,例如第二个例子,将“guy”一词替换为“gal”会使模型的预测从中性变为负面。
如何修复这些漏洞?
同样,这里最好的做法是确保训练数据多样化并代表各种人口群体、性别、种族、宗教等……因此,数据整理和数据增强是开始解决伦理偏差的好方法。
🐢 如需更多建议,我们鼓励您查阅 Giskard 文档,您将在其中找到关键定义、深入解释和所有漏洞的具体解决方案!
如何扫描您自己的 Hugging Face 模型以查找漏洞?
我们只分析了最受欢迎的文本分类模型,但您也可以为自己的模型进行分析!只需按照以下说明操作:
评估 Hugging Face Hub 上的现有模型
您可以直接复制其 ID 和您想要测试它的数据集的 ID。
评估您自己自定义训练的机器学习模型
您可以参考 🤗 hub 文档 此处 将您的模型发布到 HF。
许多基于流行库和框架构建的模型都得到了 🤗 的内置支持,包括 Keras、MLX、PyTorch、Scikit-learn 等。
您需要在模型卡中添加此模型的任务,例如 文本分类
。
我们强烈建议您在模型卡中添加其他元数据。您可以指定使用的库、语言、关联数据集、度量等。这可以在编辑模型 Readme 文件时的元数据 UI 中完成
您需要选择 🤗 上的流行数据集之一,或者 上传一个数据集 并指定特定任务,以适应您模型的目标。
运行 Giskard Bot 测试以查找机器学习模型漏洞!
现在您的模型已准备好进行测试,请访问我们 🤗spaces 上的 Giskard 评估器 此处。
然后,您可以填写空白处,并填入您自己的模型详细信息,如下所示:
然后,您可以根据需要选择您的子集和拆分,您就可以进行扫描了!
请注意,有时模型预测的标签与数据集中的标签不完全匹配。在这种情况下,您只需选中“Label and Feature Mapping”下的“label mapping”,然后选择语义含义匹配的标签即可。
然后,您需要添加您的 HF 访问令牌才能调用 HF 推理 API(您可以在此处找到它),然后就可以开始扫描了!
您可以在日志选项卡中看到评估器正在运行,完成后结果将出现在讨论选项卡中。
⚠️ 谨慎分析扫描结果
请注意,自动扫描可能会产生误报或遗漏某些漏洞。我们鼓励您审查发现结果并相应评估影响。
例如,模型存在稳健性漏洞在某些情况下实际上可能是期望的行为。我们的检测器会运行各种测试,例如“删除标点符号”或“转换为大写”,并且可能会警告您相关的漏洞,但这些漏洞可能实际上是您模型的一个实际功能。
为了说明,想象一个处理冒犯性推文的模型(例如 TwitterRoBERTa-offensive)。作为人类注释者,您可能会说“hello are you there”没有冒犯性,但“hello???? are you there???”有。因此,我们的扫描会在删除标点符号时检测到稳健性漏洞,但从整体来看,这并不是一个实际问题。
另一个例子是将整条推文重写为大写:“are you being real?”可以表达惊讶,但“ARE YOU BEING REAL?”可以表达愤怒。您会希望您的模型区分两者。有些基础模型(如 RoBERTa)默认区分大小写,因此我们的检测器会发现未区分大小写和区分大小写数据之间的差异是有道理的。
结论
即使是最受欢迎的模型也存在缺陷,检测漏洞可能非常困难。如果不加以检查,它们可能会导致实际数据性能大幅下降!它们还可能最终反映出有问题的伦理偏见并表现出不合理的偏好。所有这些漏洞都可能导致下游决策不佳,从而损害您的业务。
Giskard Evaluator 是您检测漏洞并保护自己免受潜在业务关键后果的盟友,因为它允许您快速对它们运行各种测试。我的模型对实际数据中可能出现的扰动是否稳健?训练数据是否足够多样化?它在重要数据切片上的表现是否不佳?使用我们的评估器轻松回答所有这些问题!
亲自尝试一下,别忘了在我们的 Github 存储库 上留下 ⭐,因为这对我们帮助很大!