【评测】MMLU(大规模多任务语言理解)简介(MMLU-ZS/MMLU-FS)

文章介绍了MMLUBenchmark,一个用于衡量多任务语言理解模型泛化能力和知识迁移的工具,特别关注零样本(MMLU-ZS)和少样本学习(MMLU-FS)。文章还提供了使用预训练语言模型如BERT进行评估的方法示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官网MMLU Dataset | Papers With Code

大模型排行榜MMLU Benchmark (Multi-task Language Understanding) | Papers With Code

两种特定的测试设置—衡量泛化能力知识迁移能力:MMLU-ZS、MMLU-FS

         MMLU基准的目标是揭示模型在各个任务上的盲点和不足,并推动模型在多任务语言理解方面的进一步改进和发展。mmlu-zs和mmlu-fs测试是MMLU基准中的重要组成部分,用于衡量模型在零样本和少样本学习中的能力。
         在MMLU基准中,涉及到了两种特定的测试设置,即mmlu-zs(zero-shot)和mmlu-fs(few-shot)。这些测试设置旨在模拟零样本学习和少样本学习的情况,更接近人类学习的方式。mmlu-zs测试涉及在没有任何训练数据的情况下对模型进行评估,而mmlu-fs测试涉及在有限的训练数据情况下对模型进行评估。
         这两种测试设置旨在衡量模型在零样本和少样本情况下的泛化能力和知识迁移能力。

===========================================================

MMLU基准的安装

1、数据集下载

地址:MMLU Dataset | Papers With Code

MMLU基准的使用方法

1、使用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("")
 

2、QLoRA中的MMLU评估代码

    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',
            })

### Llama模型在MMLU基准测试上的表现 Llama模型展示了强大的多选题解答能力,在多个基准测试中表现出色,尤其是在MMLU (Multi-choice Multi-hop Logical Reasoning Understanding) 基准测试上[^3]。此基准涵盖了广泛的学科领域,包括科学、社会科学、艺术和人文等。 研究表明,当采用zero-shot设置时,即不使用额外训练样本的情况下,Llama能够在多种任务上取得令人印象深刻的成绩。然而,随着微调过程的应用——特别是通过加入人类反馈并针对模型难以处理的具体案例进行优化——其性能得到了进一步提升[^4]。这意味着即使是在未见过的数据集上,经过适当调整后的Llama也能展现出更高的准确性和可靠性。 对于像MMLU这样复杂的推理理解评测标准而言,拥有强大基础架构支持的Llama展现出了显著优势。它不仅能够快速适应新环境下的挑战,而且还能持续改进自身的表现,从而证明了该模型具备优秀的泛化能力和学习效率[^5]。 ```python # 示例代码用于展示如何加载预训练好的Llama模型并对MMLU数据集进行预测 from transformers import AutoModelForSequenceClassification, AutoTokenizer model_name = "facebook/llama" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name) def predict_mmlu_question(question_text): inputs = tokenizer(question_text, return_tensors="pt") outputs = model(**inputs) logits = outputs.logits predicted_class_id = logits.argmax().item() return model.config.id2label[predicted_class_id] sample_question = "What is the capital city of France?" print(predict_mmlu_question(sample_question)) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值