模型简介
模型特点
模型能力
使用案例
语言:
- 英文 标签:
- 文本分类
- 零样本分类 基础模型: facebookai/roberta-large 管道标签: 零样本分类 库名称: transformers 许可证: mit
模型描述: roberta-large-zeroshot-v2.0-c
zeroshot-v2.0 系列模型
该系列模型专为使用Hugging Face管道进行高效零样本分类而设计。
这些模型无需训练数据即可进行分类,并可在GPU和CPU上运行。
最新零样本分类器的概述可在我的零样本分类器集合中找到。
zeroshot-v2.0
系列模型的主要更新是,部分模型针对具有严格许可要求的用户,使用完全商业友好的数据进行训练。
这些模型可执行一项通用分类任务:给定一段文本,判断一个假设是“真”还是“非真”(蕴含
vs. 非蕴含
)。
此任务格式基于自然语言推理任务(NLI)。
该任务具有普适性,任何分类任务均可通过Hugging Face管道重新表述为此任务。
训练数据
名称中包含“-c
”的模型使用两种完全商业友好的数据进行训练:
- 使用Mixtral-8x7B-Instruct-v0.1生成的合成数据。
我首先通过与Mistral-large对话,为25个职业创建了500多个多样化的文本分类任务列表,并进行了人工筛选。
随后以此作为种子数据,使用Mixtral-8x7B-Instruct-v0.1为这些任务生成了数十万条文本。
最终使用的数据集可在synthetic_zeroshot_mixtral_v0.1数据集的子集mixtral_written_text_for_tasks_v4
中找到。数据筛选经过多次迭代,未来版本将进一步优化。 - 两个商业友好的NLI数据集:(MNLI, FEVER-NLI)。
这些数据集用于提升泛化能力。 - 名称中不含“
-c
”的模型还包含更广泛的训练数据混合,涵盖多种许可证:ANLI、WANLI、LingNLI,以及此列表中所有标记为used_in_v1.1==True
的数据集。
如何使用模型
#!pip install transformers[sentencepiece]
from transformers import pipeline
text = "安格拉·默克尔是德国政治家,基民盟领袖"
hypothesis_template = "这段文本关于{}"
classes_verbalized = ["政治", "经济", "娱乐", "环境"]
zeroshot_classifier = pipeline("zero-shot-classification", model="MoritzLaurer/deberta-v3-large-zeroshot-v2.0") # 在此更改模型标识符
output = zeroshot_classifier(text, classes_verbalized, hypothesis_template=hypothesis_template, multi_label=False)
print(output)
multi_label=False
强制模型仅选择一个类别。multi_label=True
允许模型选择多个类别。
指标
模型在28个不同的文本分类任务上使用f1_macro指标进行评估。
主要参考点是facebook/bart-large-mnli
,截至撰写时(2024年4月3日),这是最常用的商业友好零样本分类器。
facebook/bart-large-mnli | roberta-base-zeroshot-v2.0-c | roberta-large-zeroshot-v2.0-c | deberta-v3-base-zeroshot-v2.0-c | deberta-v3-base-zeroshot-v2.0 (fewshot) | deberta-v3-large-zeroshot-v2.0-c | deberta-v3-large-zeroshot-v2.0 (fewshot) | bge-m3-zeroshot-v2.0-c | bge-m3-zeroshot-v2.0 (fewshot) | |
---|---|---|---|---|---|---|---|---|---|
所有数据集均值 | 0.497 | 0.587 | 0.622 | 0.619 | 0.643 (0.834) | 0.676 | 0.673 (0.846) | 0.59 | (0.803) |
亚马逊极性 (2) | 0.937 | 0.924 | 0.951 | 0.937 | 0.943 (0.961) | 0.952 | 0.956 (0.968) | 0.942 | (0.951) |
IMDB (2) | 0.892 | 0.871 | 0.904 | 0.893 | 0.899 (0.936) | 0.923 | 0.918 (0.958) | 0.873 | (0.917) |
应用评论 (2) | 0.934 | 0.913 | 0.937 | 0.938 | 0.945 (0.948) | 0.943 | 0.949 (0.962) | 0.932 | (0.954) |
Yelp评论 (2) | 0.948 | 0.953 | 0.977 | 0.979 | 0.975 (0.989) | 0.988 | 0.985 (0.994) | 0.973 | (0.978) |
烂番茄 (2) | 0.83 | 0.802 | 0.841 | 0.84 | 0.86 (0.902) | 0.869 | 0.868 (0.908) | 0.813 | (0.866) |
情感分析 (6) | 0.455 | 0.482 | 0.486 | 0.459 | 0.495 (0.748) | 0.499 | 0.484 (0.688) | 0.453 | (0.697) |
情感上下文 (4) | 0.497 | 0.555 | 0.63 | 0.59 | 0.592 (0.799) | 0.699 | 0.676 (0.81) | 0.61 | (0.798) |
共情对话 (32) | 0.371 | 0.374 | 0.404 | 0.378 | 0.405 (0.53) | 0.447 | 0.478 (0.555) | 0.387 | (0.455) |
金融短语库 (3) | 0.465 | 0.562 | 0.455 | 0.714 | 0.669 (0.906) | 0.691 | 0.582 (0.913) | 0.504 | (0.895) |
银行77 (72) | 0.312 | 0.124 | 0.29 | 0.421 | 0.446 (0.751) | 0.513 | 0.567 (0.766) | 0.387 | (0.715) |
大规模 (59) | 0.43 | 0.428 | 0.543 | 0.512 | 0.52 (0.755) | 0.526 | 0.518 (0.789) | 0.414 | (0.692) |
维基毒性聚合 (2) | 0.547 | 0.751 | 0.766 | 0.751 | 0.769 (0.904) | 0.741 | 0.787 (0.911) | 0.736 | (0.9) |
维基毒性淫秽 (2) | 0.713 | 0.817 | 0.854 | 0.853 | 0.869 (0.922) | 0.883 | 0.893 (0.933) | 0.783 | (0.914) |
维基毒性威胁 (2) | 0.295 | 0.71 | 0.817 | 0.813 | 0.87 (0.946) | 0.827 | 0.879 (0.952) | 0.68 | (0.947) |
维基毒性侮辱 (2) | 0.372 | 0.724 | 0.798 | 0.759 | 0.811 (0.912) | 0.77 | 0.779 (0.924) | 0.783 | (0.915) |
维基毒性仇恨 (2) | 0.473 | 0.774 | 0.798 | 0.774 | 0.765 (0.938) | 0.797 | 0.806 (0.948) | 0.761 | (0.931) |
仇恨攻击性 (3) | 0.161 | 0.352 | 0.29 | 0.315 | 0.371 (0.862) | 0.47 | 0.461 (0.847) | 0.291 | (0.823) |
仇恨解释 (3) | 0.239 | 0.396 | 0.314 | 0.376 | 0.369 (0.765) | 0.378 | 0.389 (0.764) | 0.29 | (0.729) |
偏见框架攻击性 (2) | 0.336 | 0.571 | 0.583 | 0.544 | 0.601 (0.867) | 0.644 | 0.656 (0.883) | 0.541 | (0.855) |
偏见框架性别 (2) | 0.263 | 0.617 | 0.835 | 0.741 | 0.809 (0.922) | 0.846 | 0.815 (0.946) | 0.748 | (0.905) |
偏见框架意图 (2) | 0.616 | 0.531 | 0.635 | 0.554 | 0.61 (0.881) | 0.696 | 0.687 (0.891) | 0.467 | (0.868) |
AG新闻 (4) | 0.703 | 0.758 | 0.745 | 0.68 | 0.742 (0.898) | 0.819 | 0.771 (0.898) | 0.687 | (0.892) |
雅虎主题 (10) | 0.299 | 0.543 | 0.62 | 0.578 | 0.564 (0.722) | 0.621 | 0.613 (0.738) | 0.587 | (0.711) |
真实教师 (2) | 0.491 | 0.469 | 0.402 | 0.431 | 0.479 (0.82) | 0.459 | 0.538 (0.846) | 0.471 | (0.518) |
垃圾邮件 (2) | 0.505 | 0.528 | 0.504 | 0.507 | 0.464 (0.973) | 0.74 | 0.597 (0.983) | 0.441 | (0.978) |
格式良好查询 (2) | 0.407 | 0.333 | 0.333 | 0.335 | 0.491 (0.769) | 0.334 | 0.429 (0.815) | 0.361 | (0.718) |
宣言 (56) | 0.084 | 0.102 | 0.182 | 0.17 | 0.187 (0.376) | 0.258 | 0.256 (0.408) | 0.147 | (0.331) |
CAPSOTU (21) | 0.34 | 0.479 | 0.523 | 0.502 | 0.477 (0.664) | 0.603 | 0.502 (0.686) | 0.472 | (0.644) |
这些数字表示零样本性能,因为这些数据集的数据未包含在训练混合中。
注意,标题中不含“-c
”的模型评估了两次:一次不包含这28个数据集的任何数据以测试纯零样本性能(各列中的第一个数字),
另一次包含来自每个28个数据集的每类最多500个训练数据点(列中括号内的第二个数字,“fewshot”)。没有模型在测试数据上训练。
不同数据集的详细信息请见:https://github.com/MoritzLaurer/zeroshot-classifier/blob/main/v1_human_data/datasets_overview.csv
何时使用哪种模型
- deberta-v3-zeroshot vs. roberta-zeroshot:deberta-v3性能明显优于roberta,但速度稍慢。
roberta直接兼容Hugging Face的生产推理TEI容器和flash attention。
这些容器是生产用例的良好选择。简而言之:追求准确性,使用deberta-v3模型;
若生产推理速度是关键,可考虑roberta模型(例如在TEI容器和HF推理端点中)。 - 商业用例:标题中含“
-c
”的模型保证仅使用商业友好数据训练。
不含“-c
”的模型训练数据更多、性能更好,但包含非商业许可数据。
法律意见对此类训练数据是否影响模型许可存在分歧。对法律要求严格的用户,
推荐使用标题中含“-c
”的模型。 - 多语言/非英语用例:使用bge-m3-zeroshot-v2.0或bge-m3-zeroshot-v2.0-c。
注意多语言模型性能低于纯英语模型。因此也可先用EasyNMT等库将文本机器翻译为英语,
再对翻译后的数据应用任何纯英语模型。若团队不掌握数据中的所有语言,机器翻译也便于验证。 - 上下文窗口:
bge-m3
模型最多可处理8192个token,其他模型最多处理512个。注意更长的文本输入会降低模型速度及性能,
因此若仅处理最多约400词/1页的文本,使用如deberta模型可获得更好性能。 - 最新模型更新请见零样本分类器集合。
复现
复现代码位于v2_synthetic_data
目录:https://github.com/MoritzLaurer/zeroshot-classifier/tree/main
局限性与偏差
模型仅能执行文本分类任务。
偏差可能来自底层基础模型、人工NLI训练数据及Mixtral生成的合成数据。
许可证
基础模型依据MIT许可证发布。
训练数据的许可证因模型而异,详见上文。
引用
此模型是此论文所述研究的扩展。
若学术使用此模型,请引用:
@misc{laurer_building_2023,
title = {基于自然语言推理构建高效通用分类器},
url = {http://arxiv.org/abs/2312.17543},
doi = {10.48550/arXiv.2312.17543},
abstract = {生成式大语言模型(LLMs)凭借文本生成的普适性,已成为少样本和零样本学习的主流选择。然而,许多用户仅需自动化分类任务时,并不需要生成式LLMs的广泛能力。较小的BERT类模型也可学习通用任务,使其无需微调(零样本分类)或仅需少量示例(少样本)即可执行任何文本分类任务,同时显著比生成式LLMs更高效。本文(1)阐释了如何将自然语言推理(NLI)用作遵循类似生成式LLMs指令微调原则的通用分类任务,(2)提供了构建通用分类器的分步指南及可复用的Jupyter笔记本,(3)分享了基于33个数据集、389个多样类别训练的通用分类器。截至2023年12月,我们分享的部分代码已用于训练下载量超5500万次的旧版零样本分类器。新版分类器零样本性能提升9.4%。},
urldate = {2024-01-05},
publisher = {arXiv},
author = {劳雷尔, 莫里茨 and 范阿特维尔特, 沃特 and 卡萨斯, 安德鲁 and 韦尔伯斯, 卡斯珀},
month = 12,
year = {2023},
note = {arXiv:2312.17543 [cs]},
keywords = {计算机科学 - 人工智能, 计算机科学 - 计算与语言},
}
合作意向或问题?
如有问题或合作意向,请联系moritz{at}huggingface{dot}co或LinkedIn
灵活使用与“提示”
通过更改零样本管道的hypothesis_template
,可自定义假设表述。
类似于LLMs的“提示工程”,可测试不同hypothesis_template
和类别表述以提升性能。
from transformers import pipeline
text = "安格拉·默克尔是德国政治家,基民盟领袖"
# 表述1
hypothesis_template = "这段文本关于{}"
classes_verbalized = ["政治", "经济", "娱乐", "环境"]
# 根据用例调整表述2
hypothesis_template = "此文本主题为{}"
classes_verbalized = ["政治活动", "经济政策", "娱乐或音乐", "环境保护"]
# 测试不同表述
zeroshot_classifier = pipeline("zero-shot-classification", model="MoritzLaurer/deberta-v3-large-zeroshot-v2.0") # 更改模型标识符
output = zeroshot_classifier(text, classes_verbalized, hypothesis_template=hypothesis_template, multi_label=False)
print(output)








