赞
踩
LLMs:MMLU基准(大规模多任务语言理解)的简介(MMLU-ZS/MMLU-FS)、安装、使用方法之详细攻略
目录
1、两种特定的测试设置—衡量泛化能力和知识迁移能力:MMLU-ZS、MMLU-FS
2020年9月7日,Dan Hendrycks, Collin Burns, Steven Basart等人提出了一种新的测试方法,用于衡量文本模型的多任务准确性。该测试涵盖了57个任务,包括基本数学、美国历史、计算机科学、法律等多个领域。为了在这个测试中获得高准确性,模型必须具备广泛的世界知识和问题解决能力。
我们发现,尽管大多数最近的模型准确率接近随机猜测,但最大的GPT-3模型平均提高了近20个百分点的准确率。然而,在这57个任务中的每一个任务上,最好的模型仍然需要大幅改进,才能达到专家级的准确性。模型的性能也存在不平衡,经常不知道自己的错误。更糟糕的是,它们在一些社会重要的主题(如道德和法律)上的准确率仍然接近随机。通过全面评估模型在学术和专业理解上的广度和深度,我们的测试可以用于分析模型在多个任务上的表现,并发现重要的不足之处。
MMLU(Massive Multitask Language Understanding,大规模多任务语言理解)是一个由Hendrycks等人在《Measuring Massive Multitask Language Understanding》中提出的新基准,旨在通过仅在零样本和少样本设置下评估模型来衡量预训练期间获得的知识。这使得基准更具挑战性,更类似于我们评估人类的方式。该基准涵盖了57个科目,包括STEM(科学、技术、工程、数学)、人文科学、社会科学等领域。它的难度从初级水平到高级专业水平不等,测试的内容既涵盖世界知识,又涉及问题解决能力。科目涵盖传统领域(如数学和历史)以及更专业的领域,如法律和伦理学。基准的细粒度和广度使其能够发现模型的盲点。
官网:https://paperswithcode.com/dataset/mmlu
大模型排行榜:https://paperswithcode.com/sota/multi-task-language-understanding-on-mmlu
MMLU基准的目标是揭示模型在各个任务上的盲点和不足,并推动模型在多任务语言理解方面的进一步改进和发展。mmlu-zs和mmlu-fs测试是MMLU基准中的重要组成部分,用于衡量模型在零样本和少样本学习中的能力。
在MMLU基准中,涉及到了两种特定的测试设置,即mmlu-zs(zero-shot)和mmlu-fs(few-shot)。这些测试设置旨在模拟零样本学习和少样本学习的情况,更接近人类学习的方式。mmlu-zs测试涉及在没有任何训练数据的情况下对模型进行评估,而mmlu-fs测试涉及在有限的训练数据情况下对模型进行评估。
这两种测试设置旨在衡量模型在零样本和少样本情况下的泛化能力和知识迁移能力。
MMLU-ZS | "MMLU-ZS"代表"Massive Multitask Language Understanding - Zero-Shot"(零样本)。在MMLU基准中,MMLU-ZS是指在没有进行任何额外训练的情况下,通过零样本学习来评估模型的性能。在这种设置下,模型需要在没有之前见过的任务或领域的情况下进行推理和理解。 MMLU-ZS(Zero-Shot MMLU)是指零样本MMLU。这意味着模型在训练阶段没有接触过MMLU-ZS数据集中的示例。通过在这个子集上评估模型的性能,可以测试模型在新领域或未知主题下的语言生成和理解能力。 |
MMLU-FS | "MMLU-FS"代表"Massive Multitask Language Understanding - Few-Shot"(少样本)。在MMLU基准中,MMLU-FS是指通过少量样本进行学习来评估模型的性能。模型在这种设置下需要在只有极少数量的训练示例的情况下进行推理和理解。 MMLU-FS(Five-Shot MMLU)是指五样本MMLU。这意味着模型在训练阶段接触了MMLU-FS数据集中的少量示例(通常是五个示例)。通过在这个子集上评估模型的性能,可以测试模型对少量训练样本的学习和泛化能力。 |
意义 | 通过使用MMLU-ZS和MMLU-FS进行评估,可以更好地了解模型在没有大量训练数据的情况下的泛化能力和适应能力。这使得评估更加接近真实世界的应用场景,并揭示了模型的弱点和改进的方向。 |
地址:https://paperswithcode.com/dataset/mmlu
-
-
-
- # 何使用MMLU基准对一个预训练的语言模型进行评估
- import transformers
- from transformers import pipeline
-
- # 加载预训练的语言模型和标记器
- model_name = "bert-base-uncased" # 可根据需要选择合适的预训练模型
- model = transformers.AutoModelForMaskedLM.from_pretrained(model_name)
- tokenizer = transformers.AutoTokenizer.from_pretrained(model_name)
-
- # 定义要评估的任务和输入文本
- tasks = [
- "mathematics",
- "history",
- "computer science",
- "law",
- # 其他任务...
- ]
- texts = [
- "What is the square root of 16?",
- "Who was the first President of the United States?",
- "What is the difference between CPU and GPU?",
- "What are the basic principles of contract law?",
- # 其他文本...
- ]
-
- # 创建MMLU基准评估器
- # 使用pipeline函数来执行文本分类任务,对每个任务和文本进行评估,并打印出预测的标签和分数。
- mmlu_evaluator = pipeline(
- "text-classification",
- model=model,
- tokenizer=tokenizer,
- device=0, # 可根据需要选择使用的设备
- )
-
- # 对每个任务和文本进行评估
- for task in tasks:
- print(f"Task: {task}")
- for text in texts:
- result = mmlu_evaluator(text, task)
- print(f"Text: {text}")
- print(f"Label: {result[0]['label']}")
- print(f"Score: {result[0]['score']}")
- print("")
-
- if args.do_mmlu_eval:
- # 根据 args.mmlu_dataset 参数的不同值加载相应的 MMLU数据集
- if args.mmlu_dataset == 'mmlu-zs':
- mmlu_dataset = load_dataset("json", data_files={
- 'eval': 'data/mmlu/zero_shot_mmlu_val.json',
- 'test': 'data/mmlu/zero_shot_mmlu_test.json',
- })
- mmlu_dataset = mmlu_dataset.remove_columns('subject')
- # MMLU Five-shot (Eval/Test only)
- elif args.mmlu_dataset == 'mmlu' or args.mmlu_dataset == 'mmlu-fs':
- mmlu_dataset = load_dataset("json", data_files={
- 'eval': 'data/mmlu/five_shot_mmlu_val.json',
- 'test': 'data/mmlu/five_shot_mmlu_test.json',
- })
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。