最全语言模型领域知识评估Benchmark——獬豸:包含了516门学科、13学科门类、240w条数据

news2024/9/25 1:24:29

论文链接:https://arxiv.org/abs/2306.05783
代码链接:https://github.com/MikeGu721/XiezhiBenchmark

复旦大学肖仰华团队——獬豸(Xiezhi)是一套针对语言模型(LM)的领域评估Benchmark。它由249587道多选题组成,涉及516个不同的学科和三个不同的学科粒度。学科分类和所有的一级学科如下图所示,括号内表示的是每个一级学科下二级学科的个数。

Xiezhi 评估套件覆盖了13个学科门类,118个一级学科和385个二级学科。学科的分类来源于中国教育部公布的所有学科门类。题目来源于中国的小学考试题、中考、高考、大学生考试题、考研、成人教育。

一、Benchmark介绍

Xiezhi是一个综合的、多学科的、能够自动更新的领域知识评估Benchmark。Xiezhi包含了哲学、经济学、法学、教育学、文学、历史学、自然科学、工学、农学、医学、军事学、管理学、艺术学这13个学科门类,24万道学科题目,516个具体学科,249587道题目。这 516 个学科以及分类方式源自中国教育部颁布的学科分类法。作者从中国研究生入学考试中手动选择并注释了 20,000 道多选题,涵盖了这 516 个标签,以形成Xiezhi-Meta数据集。Xiezhi-Meta被用来训练一个能够计算题目和学科标签之间相关性的标注模型。作者们随后收集了来自不同考试的 150,000 个多项选择题,以及来自学术Survey的 70,000 个多项选择题,并使用标注模型对所有这些问题进行了注释。

为了方便进行实验,并能够有效地评估LLM对于跨学科知识的处理能力,作者们提出了Xiezhi-Specialty和Xiezhi-Interdiscipline,这两个数据集都提供了中英文的版本,并由 15,000 个更平衡、更不敏感、更不以中国为中心的多选题组成。 Xiezhi-Specialty 包含可以使用单一领域的知识解决的问题,而 Xiezhi-Interdiscipline 包含需要来自多个领域的知识才能解决的问题。

二、实验模型

本文覆盖的实验对象包括了45个开源模型,和2个非开源模型,所有模型的具体信息如下图所示:

                                                              表1:Xiezhi所有评估的模型

三、选项设置

所有被测试的LLM都需要从50个选项中选择最适合的答案。每道题除了正确答案外,还设置了3个易混淆的选项,另外还设置46个完全无关的选项,这些选项是从獬豸的所有题目的所有选项中随机抽取的。值得注意的是,如果研究者们希望进一步提升选项难度,可以使用WordNet、开源同义词库或其他构词方法来生成更多具有混淆性的选项。然而,作者的实验表明,虽然作者用了那么多完全无关的选项,但LLM的性能都会随着选项数量的增加而剧烈下降。考虑到作者的实验中包含了很多能力差距很大的模型,所以作者认为这一设定合理且已经达到了他们希望通过metric显著体现LLM之间的性能差距的目标。

四、衡量标准

对于评估的45个开源模型,作者利用了每个模型生成特定答案的概率来计算每个模型选择每个选项的概率,然后根据概率对所有选项进行相应的排名。因为担心被其他公司投诉,Xiezhi的制作者们只展示了两个公开认可的非开源的LLM结果:ChatGPT和GPT-4,作者们通过指令要求这俩模型对所有选项进行排序。最后,作者们使用了MRR作为衡量标准,它计算出正确答案平均会被模型排在什么位置。MRR值接近1则表示模型更有能力将正确答案放在排名的前面;而如果MRR值接近0,则模型倾向于将正确答案放在最后。

五、 实验结果

本篇论文有两个主要的实验结果。第一个是作者们为了验证他们的实验设定,以及为了充分评估目前市面上大多数的开源模型,所以把一些最近推出的知识性评估Benchmark也拿来进行了实验,实验结论如下:

表2:该表列出了所有语言模型的综合性能,所有的被测试模型都按照模型的特征进行分组,并用hline进行分割。粗体表示一组内表现最好的结果,下划线字体表示同一数据集在相同设置下所有模型中的最好结果。

除此之外,因为Xiezhi数据集覆盖了13个学科领域,除去了“军事”这个比较敏感的领域之外,他们给所有模型在所有学科领域上进行了排名,具体排名如下:

表3:在 0-shot 设置中每个类别中所有 LLM 的排名, ✓ 表示人类的表现超过了最先进的 LLM,而 ✗ 表示人类的表现已经被 LLM 所超越。

六、一些有意思的现象

Observation 1: Best Performance = Pretraining + Finetuning

观察表2中列出的总体结果,可以发现所有排名前十的开源LLM都是基于llama或bloom之上的。这表明,通过这两个基础模型是最有可能获得最优性能的,因为它们在领域文本理解方面具有巨大的潜力和卓越的性能。

此外,作者注意到,在表3中,所有总体性能排名前十的开源模型都是经过微调的模型,这意味着只有经过微调的LLM才能达到最高性能。因此,有效的预训练和微调过程都是在领域文本理解中获得最佳性能的关键因素。

Observation 2: 大多数LLM无法从演示中进行稳定的少量学习。

如表2中的 “Performance-Average”所示,就平均性能而言,few-shot learning能够增加LLM的performance。但就每个模型具体来看,每个具体的LLM的performance并没有随着few-shot样本数的增强而获得更好的表现。相反,随着学习实例数量的扩大,一些LLM的性能反而下降。相比之下,GPT-4和ChatGPT通过在few-shot learning表现出了非常稳定的性能提升。符尧之前的研究认为大模型牺牲了部分In-context Learning的能力来换取了对话能力[1],作者认为这个现象在非openAI的其他模型上尤为严重。这可以归因于GPT-4和ChatGPT所拥有的广泛的领域知识,使它们能够有效地理解嵌入在学习样本中的特征;也可能单纯地归因于OpenAI的模型的参数量大于现在市面上的开源模型。

Observation 3: 更多的LLMs参数并不一定保证更好的模型性能。

通常大家都认为,参数量越大的模型效果会越好,当比较两个参数上具有数量级差异的模型时,这个观念是对。例如,拥有1460亿个参数的Bloomz-mt明显优于拥有5.6亿个参数的Bloomz-560m。

但当两个模型的参数量并没有如此明显的差异时,上述观念则很可能不对。例如在表2中,Bloomz-7b1在大多数领域任务中超过了Bloomz-p3,而Pythia-1.4b在大多数基准中超过了参数数较大的其他所有Pythia模型。对这一现象的可能解释是,具有不同参数数量的LLM最适合于不同数量的预训练和微调数据,所以模型的最优效果很可能不是来源于参数量最大的模型[2]。

Observation 4: 小型LM增强了领域能力,而牺牲了通用能力。

在作者的实验中,他们考察了两个医学LLMs:DoctorGLM和Baize-Healthcare。DoctorGLM源于ChatGLM-6B,Baize-Healthcare源于Llama-7B,两个模型都使用医学领域文本进行了微调。尽管这两个模型与其他基于相同基础模型进行微调的LLM相比,MRR值都比较低,但它们在医疗领域都表现出了较强的性能。这表明,至少是针对较少参数量的LLMs,想要增强其在某一方面的领域能力,必然会牺牲其他方面的性能。这和符尧之前的研究结果是一致的[3]。

参考

[1] Fu Y, Peng H, Khot T. How does gpt obtain its ability? tracing emergent abilities of language models to their sources[J]. Yao Fu’s Notion, 2022.

[2]Hoffmann J, Borgeaud S, Mensch A, et al. An empirical analysis of compute-optimal large language model training[J]. Advances in Neural Information Processing Systems, 2022, 35: 30016-30030.

[3]Fu Y, Peng H, Ou L, et al. Specializing Smaller Language Models towards Multi-Step Reasoning[J]. arXiv preprint arXiv:2301.12726, 2023.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/796840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux下frp实现内网穿透

frp简介 frp是什么? frp采用Golang语言编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。 frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP,UDP,HTTP,HTTPS等多种协议。可以将…

Android开发之Fragment

Fragment可以看作一种灵活的子Activity,其依附于Activity运行。一个Activity下可以依附多个Fragment,从而实现一个页面多个窗口,而同一个Fragment也能被多个Activity复用,因此Fragment是Android开发中相当重要的板块。 文章目录 …

Docker-compose容器编排

Docker-Compose介绍 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关…

Visual Studio 2022 程序员必须知道高效调试手段与技巧(中)

🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言💬 调试的时候查看程序当前信息💭 查看临时变量的值💭 查…

实验报告-Sublime配置默认语法,以配置Verilog语法为例

实验报告-Sublime配置默认语法,以配置Verilog语法为例 1,下载Verilog语法环境2,Sublime配置语法工作环境,以Verilog语法环境为例。3,打开一个新的Sublime,验证编辑器配置Verilog为默认语法成功!4,Sublime汉化1,下载Verilog语法环境 参考文献: 1,Sublime Text 4加载…

29.Git版本控制工具

1.Git简介 Git是一开源的分布式版本控制系统,提供了存储代码、管理版本历史、分支和合并等功能。 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。它的主要目的是跟踪和记录软件开发过程…

【2500. 删除每行中的最大值】

来源:力扣(LeetCode) 描述: 给你一个 m x n 大小的矩阵 grid ,由若干正整数组成。 执行下述操作,直到 grid 变为空矩阵: 从每一行删除值最大的元素。如果存在多个这样的值,删除其…

手把手教你写代码——基于控制台的通讯录管理系统(单表)

栏目介绍 本栏目专为入门java学习者设计的一些简单的入门项目 功能介绍 本项目为简单的基于控制台的通讯录管理系统,所需要的环境仅仅为jdk以及mysql(版本不限)!只有一个简单的eclipse软件以及我们的mysql可视化工具(视…

企业网关:打开商业大门的关键

企业网关:打开商业大门的关键 在当今数字化时代,企业网关的重要性变得越来越明显。作为连接企业内外的关键枢纽,企业网关不仅提供了安全可靠的网络连接,还为企业提供了更高效的业务运营和更好的客户体验。本文将深入探讨企业网关…

Vue-路由

一、目标 能够说出前端路由工作的过程能够知道如何在vue3中配置路由能够知道如何使用嵌套路由能够知道如何实现动态路由匹配能够知道如何使用编程式导航能够知道如何使用导航守卫 二、目录 前端路由的概念与原理vue-router的基本使用vue-router的高级用法后台管理案例 前端…

linux下的questasim安装和与vivado的关联

一、questasim安装 参考链接 IC验证工具:Ubuntu下Questasim10.7安装(64bit)全攻略 参考2 易特创芯 linux环境下questasim 10.7的安装总结_limanjihe的博客-CSDN博客 前面操作参照的第一个链接,后面激活文件参考的第二个 另外…

JavaScript 常用数组方法之数组扁平化「赶紧收藏」

一、什么是数组扁平化 数组扁平化,就是将一个复杂的嵌套多层的数组,一层一层的转化为层级较少或者只有一层的数组。 比如: // 多维数组 var arr [1,2,[3,4,5,[6,7,8],9],10,[11,12]]; // 数组扁平化 [1,2,3,4,5,6,7,8,9,10,11,12]二、实现…

关于在Python的for循环中改变列表的值问题探究

案例一: def test():a [1, 2]for i in a:print(i, id(a))if i 5:breaka [a[0]2, a[1]2] 输出: 1 4313456192 2 4313269056 解释: 在for循环语句中的变量a使用的内存地址为4313456192,这个地址以及存储的值不会因为a的重新赋…

ceph-mon运行原理分析

一、流程:ceph-deploy部署ceph-mon组建集群 1.ceph-deploy部署ceph-mon的工作流程及首次启动 1)通过命令创建ceph-mon,命令为:ceph-deploy create mon keyring def mon(args):if args.subcommand create:mon_create(args)elif…

【Jenkins系列】-Pipeline语法全集

Jenkins为您提供了两种开发Pipeline的方式:脚本式和声明式。 脚本式流水线(也称为“传统”流水线)基于Groovy作为其特定于域的语言。而声明式流水线提供了简化且更友好的语法,并带有用于定义它们的特定语句,而无需学习…

金融行业软件测试面试题及其答案

下面是一些常见的金融行业软件测试面试题及其答案: 1. 什么是金融行业软件测试? 金融行业软件测试是针对金融领域的软件系统进行验证和确认的过程,旨在确保软件在安全、稳定、可靠和符合法规要求的条件下运行。 2. 解释一下金融软件中的风险…

golang,gin框架的请求参数(一)--推荐

golang,gin框架的请求参数(一) gin框架的重要性不过多的强调,重点就gin使用中的参数传递,获取进行梳理文件,满足使用需求。 获取前端请求参数的几种方法: 一、获取参数【浏览器地址获取参数】…

linux的一些基本指令第二期

rm rm -r 你要删除的目录名 加了-r 之后表示递归删除你要删除的目录 使用这个命名之后,他会一边递归到叶子节点,一边询问你是否要删除,然后会递归回来,在回来的途中删除: rm -rf 你要删除的目录名 强制执行删除操作…

权威认证!伙伴云入选亿欧2023AIGC应用场景创新TOP50榜单

近日, 知名科技与产业创新服务平台【亿欧】发布2023年度AIGC应用场景创新TOP50榜单。 伙伴云作为行业领先的零代码应用搭建平台,率先推出AI智能搭建系统功能,并将Chat GPT应用嵌入伙伴云应用在解决方案层,最终凭借前沿的技术创新力和突出的数…

【NVMe2.0d 17 - 1】Reservation 核心命令

文章目录 Reservation RegisterReservation AcquireReservation ReportReservation Release Reservation Register Reservation Register命令用于注册、取消注册或替换reservation key。 该命令使用Command Dword 10和内存中的Reservation Register data structure 如果该命…