大模型评估

大模型评估

越来越多的大模型不断发布,每一个都宣称自己超过了ChatGPT,但是如何定量地评估这个大模型是好或者不好呢?

在ChatGPT出现没多久的时候,评估方式往往是人工准备若干个刁钻问题,用来测试模型是否“智能”。但是显然这种测试只能带来一种“感觉”而非定量的衡量,如何客观公正得对一个模型进行充分的评估变成了一个迫切的需求。

从NLP任务到人类试题

传统NLP如果需要评估一个模型,就根据任务选择对应的数据集进行评测,如做阅读理解就选择SQuAD,做情感分析就选择SST-2,做句子表示的就选择STS等。最近几年随着预训练模型的发展,单个的数据集已经逐渐不足以综合评估一个模型,此时就选择拿多个数据集组成一个测试基准(benchmark)来测量。一些比较常见的测试基准有:

  • GLUE和SuperGLUE
  • 中文的CLUE和SuperCLUE
  • 多语言的XTREME和XTREME-R
  • sentence embedding的综合评估基准MTEB

这些NLP任务往往代表着模型在解决某类特定问题上的表现。

不过,各个新发布的大模型证明自己优越性的时候,用NLP任务来评测大模型并不是默认做法,主要有以下原因:

  1. NLP任务难度不够,许多简单的NLP任务,例如文本分类任务,预训练模型就可以逼近甚至超过人类表现,导致即使在这些数据集上取得很高的结果,也没有那么有吸引力
  2. NLP数据集存在严重的数据污染问题,许多NLP任务数据集都能在互联网上轻易获取,从而容易混入大模型的预训练语料里,导致其上的结果没有那么有说服力
  3. GPT-4不在这些NLP任务上测试了,这引领了大模型的评测方式

目前的测试范式是,利用人类考题来测试。例如MMLU数据集,它包含了57个任务的人类试题,如数学、历史、计算机科学和法律等学科,将其组成一个测试基准。如果模型要有比较好的效果,需要同时具备世界知识和解题能力。

人类试题是测试人类智能的一个很好的载体,无论在哪个国家,用试卷考试的方式来判断一个学生的智力水平发展到了什么阶段都是主流做法。

此外,不同科目的试题带来了不同维度的测量:

  • 语言、社科类的题目,可以测量世界知识
  • 数学、自然科学类的题目,可以测量推理能力

当然还有很多其它的能力,但是世界知识推理能力往往是大模型希望增强的方面。通用模型需要在不同领域都贡献生产力,这自然需要模型知道各个领域的知识,知识能力可以很好地衡量底座模型的潜力;推理能力是在知识基础的进一步提升的能力,它代表模型可以做很困难、很复杂的事情。一个强大的模型,首先需要广泛的知识,然后在知识的基础上做推理。

模型大小和模型分数的关系

  1. 知识型任务的榜单上,模型大小和模型分数一般是连续变化的

  2. 推理型任务的榜单上,只有当模型大到一定程度之后,模型推理能力才会显著提升

对于知识型任务,Chain-of-thought (CoT) Prompting和Answer-Only (AO) Prompting的效果是差不多的;对于推理任务,CoT的效果则显著优于AO

模型的评测多种多样,例如采用的checkpoint种类,是pretrained checkpoint还是instruction-finetuned checkpoint;例如采用的prompt方式,是answer-only还是chain-of-thought,是zero-shot prompting还是few-shot prompting。

主流评测数据集

MMLU

MMLU数据集包含超过2.5万个题目,涉及科学、技术、工程、人文学科和社会科学等57个学科,题目难度从初级到高级专业水平不等。

它既考验世界知识,也考验解决问题的能力。

GSM8K

GSM8K是一个包含8.5K高质量、多样化小学数学问题的数据集,创建该数据集是为了支持对需要多步骤推理的基本数学问题进行问答的任务。

该数据集包含7.5K训练数据和1K测试数据,这些问题通常需要2-8个步骤才能解决,有效评估了模型的数学和逻辑能力。

MATH

MATH是一个由数学竞赛问题组成的评测集,包含7.5K训练数据和5K测试数据。

HumanEval

HumanEval是由OpenAI发布的164个手写的编程问题,包括模型语言理解、推理、算法和简单数学等任务。

C-Eval

C-Eval数据集由13948道多选题组成,涉及4个学科大类,52个学科小类,分别对应四个难度等级。

C-Eval的题目构成:

  • STEM:科学、技术、工程和数学教育,包含计算机、电气工程、化学、数学和物理等多个学科
  • Social Science:社会科学,包含政治、地理、教育学、经济学和工商管理等多个学科
  • Humanity:人文科学,包含法律、艺术、逻辑学、语文和历史等多个学科
  • Other:其它,其它学科的汇总,包含环境、消防、税务、体育和医学等多个学科

共有四个难度等级,在图示中使用颜色标记区分,分别是初中(蓝色)、高中(绿色)、大学(黄色)和专业(红色),每个学科对应一个难度等级。

C-Eval包含三份数据,分别是devvaltest,其中dev数据有答案并且带有答案解释,可以用来构建CoT的few-shot提示词val数据有答案,test数据没有答案。一般来说,利用dev的few-shot在val数据上做离线测试获得C-Eval评分,而在test数据上提交答案给C-Eval官网获得最终得分。

C-Eval有两种Prompt方式来引导模型给出答案,一种是answer-only,另一种是chain-of-thought。每一种又可以采用zero-shot和few-shot两种形式。对于Base模型,由于没有经过指令微调,需要结合few-shot给出范例进行提示;而Chat模型采用zero-shot直接对话即可。

如果是few-shot设置,模型通常会遵循样例中给出的固定格式,所以提取答案很简单;如果是zero-shot或者没有做过指令微调的模型,它们可能无法很好地理解指令,甚至有时候不会回答问题,此时C-Eval直接计算下一个预测token等于ABCD的概率,然后以概率最大的选项作为答案。

GAOKAO-Bench

GAOKAO-Bench是一个以中国高考题目为数据集,评测大模型语言理解能力、逻辑推理能力的评测框架。

数据部分:收集了2010-2022年全国高考卷的题目,其中包含1781道客观题和1030道主观题

评测部分:采用zero-shot的方式测试各模型,对客观题采用基于规则的答案抽取方式,对主观题采取人工评阅的方式(其实是提供了LLM-as-a-Judge脚本,利用GPT-4-turbo为模型的主观题打分)

主观题Prompt样例:

请解答下面的数学填空题\n仔细阅读题目,解答其中的问题,请你一步步思考并将思考过程写在【解析】和之间。请把你的答案写在【答案】和之间。\n完整的题目回答格式如下:\n【解析】 …\n【答案】…\n请你严格按照上述格式作答。\n题目如下:

客观题Prompt样例:

请你做一道数学选择题\n请你一步一步思考并将思考过程写在【解析】和之间。你将从A,B,C,D中选出正确的答案,并写在【答案】和之间。\n例如:【答案】: A \n完整的题目回答的格式如下:\n【解析】 … \n【答案】 … \n请你严格按照上述格式作答。\n题目如下:

主观题评分Prompt样例:

你是一名高中地理老师,正在批改高考地理试卷。请根据下面的【题目】、【分析过程】、【标准答案】、【分值】、【学生分析与答案】,对【学生分析与答案】进行判分并给出理由。请注意【学生分析与答案】可能为空。输出格式为:【判分理由】…\n 【得分】…\n…【总分】…分\n其中【总分】直接给出这道题的最终分数,如【总分】5分,注意不要超过这道题的【分值】。请严格对照标准答案和学生答案给分。\n

CMMLU

CMMLU是一个综合性的中文评估基准,专门用于评估语言模型在中文语境下的知识和推理能力。

CMMLU涵盖了从基础学科到高级专业水平的67个科目,包括:需要知识的人文科学和社会科学,需要计算和推理的自然科学,以及需要生活常识的中国驾驶规则等,涵盖11528个多选题。此外,CMMLU中的许多任务具有中国特定的答案,可能在其它地区或语言中并不普遍适用。因此该评测基准是一个完全中国化的中文评测基准。

如何测试

解决了用什么来做测试,还需要讨论如何测试。具体来说涉及两个方面:1)谁来打分;2)在什么上面打分。

如何给模型的输出打分呢?无论是传统的NLP任务,或者是多选题形式的人类考题,都有相对明确的打分标准,例如准确率,或者专门的衡量指标例如ROUGE或者BLEU。但是对于更丰富的一些任务,例如对话或者人类试题中的主观题,自动评估往往是不够的。

早期碰到此类情况时,默认是用人类打分,然而随着LLM的发展,用模型来给模型打分也逐渐流行起来。具体来说,对于不同模型的输出,用一个(相对来说比较强的)模型,例如GPT-4来对这些输出进行比较和打分。

但是需要注意,有些工作也发现用模型做自动评估往往还是存在一些系统性的偏见,即使简单地把不同答案顺序做调换,也会影响到最终结果。所以,用模型来打分仍然不能被100%信任。

此外,以上的测试基准或者榜单重点在于衡量模型的通用能力,特别是知识和推理能力,有些基准额外考虑了对话类型模型的对话问答能力,然而目前看来LLM的应用潜力远不止于此。所以最近也出现了一些工作,从不同角度进行衡量LLM的能力:

  • 从领域的角度:模型在医疗、法律和教育等领域的表现

  • 从工具使用的角度:模型调用工具的能力

  • 模型的鲁棒性:评估大模型对对抗性提示的鲁棒性

  • 模型的可靠性:评估大模型在毒性、偏见和价值对齐等方面的表现,研究模型的伦理合规性

不过,即使是使用相同模型+相同数据集,如果Prompt和计算分数的方式略有差异,也会造成结果差异很大。Falcon在huggingface的榜单上超过LLaMA,官方给的解释就是用到的Prompt和计算分数的方式和原版稍有差异。

此外,每个榜单都是有偏的,也是可以通过各种手段刷上去的,所以基于自己的需求,构造一个专属的测试集也许要可靠的多。

【参考资料】

  1. C-Eval:构造中文大模型的知识评估基准
  2. C-Eval README_zh
  3. LLM Evaluation 如何评估一个大模型?