论文浅尝 | 大语言模型综述

news2024/11/24 10:48:24

77976b354363a4d132df06d31f540a63.png

笔记整理:刘康为、方润楠,浙江大学硕士,研究方向为自然语言处理

链接:https://arxiv.org/abs/2303.18223

一、介绍

在当前机遇和挑战的背景下,对大语言模型的研究和开发需要更多的关注。为了让读者对大语言模型有一个基本的了解,本调查从四个主要方面对大语言模型进行了文献回顾。

首先是预训练方面,调查详细探讨了如何进行有效的预训练,以培养出具备强大能力的大型语言模型。其次是适应性调优,这一方面考虑了如何从有效性和安全性的角度对预训练的大语言模型进行优化和调整。第三个方面是利用,研究探讨了如何利用大语言模型解决各种下游任务。最后,是能力评估,调查介绍了如何评估大语言模型的能力以及现有的研究结果。

二、回顾

2.1 背景

大型语言模型(LLMs)通常指的是包含数千亿(或更多)参数的语言模型,这些模型是在海量文本数据上训练出来的,如GPT-3、PaLM、Galactica和LLaMA。

2.2 涌现能力

大语言模型的最显著特征之一是其具备了以往预训练语言模型所不具备的涌现能力。代表性的涌现能力包括上下文学习、指令遵循、逐步推理。这些代表性的涌现能力彰显了大语言模型的独特优势。

2.3 关键技术

大语言模型之所以能够取得成功,有五个主要原因。首先是模型、数据和计算资源的扩展,其次是高效稳定的训练手段,第三是语言模型能力诱导,第四是对齐训练,将大语言模型与人类偏好对齐,最后是工具使用。

三、大语言模型的资源

6353c0e267752e199c59b4e6175df34a.png

3.1 公开检查点和API

考虑到参数规模是使用大型语言模型(LLMs)时需要重要考虑的关键因素,作者将这些公共模型划分为两个规模等级,即百亿个参数或千亿个参数。这种划分有助于用户根据其资源预算确定适合自己的资源配置。此外,在推理阶段,可以直接使用公共API来执行任务,而无需在本地运行模型。

作者简要概述了大型语言模型的公开可用检查点和API。根据模型的预训练语料、任务类型或评估指标,推荐不同能力的模型。此外,作者还统计了近年来大语言模型的各项数据,包括容量评估、预训练数据规模和硬件资源成本等,详见表1。

表1

92950d32d8c850da28fab4c530be91e5.png

3.2 常用语料库

作者简要总结几个广泛使用的用于训练大语言模型的语料库。根据其内容类型,我们将这些语料库分为六组: 书籍、CommonCrawl、Reddit链接、维基百科、代码,以及其他。从图2中我们可以看出,大语言模型不再依赖单一的语料库,而是利用多个数据源进行预训练。因此,现有的研究通常将几个现成的数据集(如C4、OpenWebText和Pile)混合在一起,然后进行进一步的处理以获得预训练语料,如下图所示。

a29476fdc06761228e64ab3e83bb144f.png

3.3 代码库

作者搜集了一些用于训练的代码库,包括常用模型库和并行算法库。

四、预训练

4.1 数据

作者介绍了数据的来源以及处理方法,通用数据可以提高大语言模型的语言建模和概括能力,专用的数据集有助于提高大语言模型在下游任务上的能力。数据处理流程如下图所示:

b9832f27d687fa0872a742390db1ebfc.png

4.2 模型

本文解答了为什么大语言模型往往采用 Decoder-Only 架构的问题。本文从 Transformer 做语言模型的主干架构、具体模块和预训练任务三方面向读者们介绍如今大模型的常用方案,并在最后结合文献讨论大家选用 Decoder-Only 架构的原因。

4.3 训练

本章对 3D 并行、ZeRO 等被集成于 DeepSpeed 等代码库的相关训练技术进行归纳整理,并在最后对如何稳定、高效地预训练一个大语言模型给出建议。

五、适应性调整

5.1 指令调整

格式化实例构造:实例是指令微调中的重要因素,主要由任务描述,样例,输入和输出构成。如何构造格式化的实例对指令微调十分重要。首先可以从已经存在的数据集中来构造实例,通过对数据集进行人为的任务功能描述,来构造实体。第二种方法是格式化人们的具体需求。实例构造中需要注意实例的覆盖范围以及实例的数量和质量。具体实例如下图所示。

bca283efbc9f891ec06a0fb28ca95254.png

指令微调策略要平衡数据集的分布,尽可能涵盖到更多的领域,可以在预训练环节中将实例作为语料一起训练。

指令微调有助于大模型在特定领域的表现的进步,并且研究发现,指令微调获得的能力具有迁移性(英文指令微调后面对部分中文任务的表现也有进步)

5.2 对齐调整

对齐调整的目标是使大模型的输出更符合人类规范,变得更有,更确真,更少的攻击性语言。

对齐调整主要通过RLHF(Reinforcement Learning from Human Feedback)实现,通过收集人们对模型输出的内容的评价,来训练一个Reward model,之后利用这个Reward model以及相关的强化学习算法来对大模型进行调整来达到对齐的目的。

363ff82d6636009e5b081e9639165eff.png

六、模型使用

6.1 上下文学习

4d3a959342aadc96100b954c134553e9.png

上下文提示方式是通过将之前的输入输出作为样例参考,来推得目前的输出。公式如下所示:

ebf33d8fc71bfa564ef12c19c28effbc.png

样例参考的设计方法主要有启发式和基于大模型的方法。样例设计的格式为输入输出对,任务描述以及思维链构成。需要注意的是,样例的顺序对结果也有影响,具有偏向末尾的先向,因此在调整样例次序的时候尽量将与新输入相似的实例安排在末尾。

6.2 思维链提示

思维链设计是一种有效的思考方式,它注重多路线的方法来解决复杂的问题。这种方法可以通过不同的思考方式来探索问题的多个方面,从而更全面地理解问题并找到最佳解决方案。同时,思维链设计也能够通过自监督的方式来判断是否出现自相矛盾的情况并做出调整,从而保证思考的准确性和连贯性。

对于大模型而言,思维链设计在何时产生了效用大模型通常需要在处理复杂任务时进行大量的计算和推理。在这个过程中,思维链设计可以帮助大模型更好地理解问题、生成更准确的答案或预测,并且可以提高其效率和性能。因此,思维链设计在大模型应用中具有很高的实用价值。

为什么大模型能够涌现出思维链的能力?这主要是因为大模型具备强大的自学习和自适应能力。它们可以通过大量的数据和模型训练来自我优化,逐渐形成对于复杂问题的理解和处理能力。同时,大模型也可以通过自我监督和反馈机制来修正自身的错误和偏差,从而不断提高其性能和准确性。这些特点使得大模型具备了涌现出思维链的能力,能够更好地应对复杂任务和挑战。

七、能力评估

7.1 基本能力评估任务

语言建模和条件性文本生成是语言生成中的两个主要任务。语言建模是LLMs最基本的能力,它的目的是预测下一个符号。为了评估模型的性能,常用的数据集包括Penn Treebank、WikiText-103、Pile和LAMBADA等。困惑度指标通常被用来评估模型的性能。条件性文本生成则着重于根据给定的条件生成满足特定任务需求的文本,例如机器翻译、文本总结和问题回答等。为了衡量生成文本的质量,统一的指标和人类的评分通常被用来评估大模型的性能。LLM在这些任务上已经取得了显著的性能,甚至超过了人类的表现。然而,现有的评估基准可能无法适当地评估和反映LLMs的能力,因此需要更多的努力来开发新的指标和评估基准来更好地评估LLMs的性能。

除了以上两种文本生成任务之外,代码生成能力和复杂推理能力也是属于基本能力的评估任务。代码生成能力也是一个对大模型能力的评估方向,可以通过对LLM生成的代码的任务完成度,通过率来进行能力评估,如将Codeforces和ACM中的一些题目作为测试,通过率为评估分数。而复杂推理能力评估包括知识推理的正确性和质量,符号推理的能力评估,以及如数学计算问题的解答和证明题的推理相关的数学推理能力。

7.2 高级能力评估任务

大模型的高级能力评估通常包括人类价值对齐,外部交互能力,工具操作。

人类价值对齐有以下方面:有效性、正确性、安全性、无害性。其中,有效性是指模型是否能够完成预期的任务,正确性是指模型是否能够正确地完成任务,安全性是指模型是否能够保护用户的隐私和数据安全,无害性是指模型是否会生成一些具有攻击性的语言。在外部交互方面,代码提示能力是人工智能模型的一种应用场景,可以帮助程序员更快地编写代码。在工具操作方面,搜索引擎和编译器都是程序员常用的工具,可以帮助程序员更快地查找信息和编写代码,大模型可以结合搜索引擎和编译器进行应用,也是对其能力评估的一种方式。

八、总结与展望

尽管大模型在语言生成任务上的表现令人惊奇,但是它们还需要更多的可解释性,这可能需要跨学科的知识来实现。在模型架构方面,我们需要更加有效的Transformer结构,并寻找方法来解决灾难性遗忘和微调对模型综合能力的下降问题。此外,在模型训练方面,我们需要更加系统化和经济的方法,并提供更多的开源检查点以便更多的研究者能够复现和扩展现有工作。同时,我们也需要解决大模型在复杂逻辑推理和安全性方面的问题。为此,我们可能需要跨学科合作来探求模型的可解释性,并且未来朝着开发更加高效、可解释和安全的大型语言模型的方向努力。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

5ae3b6208cd755d636565abdb7543b1a.png

点击阅读原文,进入 OpenKG 网站。

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

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

相关文章

C++实现打包工具代码框架(附源码)

C++常用功能源码系列 文章目录 C++常用功能源码系列前言一、打包工具二、packtool框架前言 本文是C/C++常用功能代码封装专栏的导航贴。部分来源于实战项目中的部分功能提炼,希望能够达到你在自己的项目中拿来就用的效果,这样更好的服务于工作实践。 专栏介绍:专栏讲本人近…

windows10安装wsl2,centos内核

windows10安装wsl2,centos内核 检查系统环境 必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。 一、开启WSL2特性 【控制面板】>>【程序】>>【程序和功能】>>【启…

apple pencil平替笔哪个好用?适用于绘画的电容笔推荐

由于ipad的版本一直在升级,其功能也在增加,其功能已经达到了与手提电脑相媲美的程度。而且随着科技的发展,ipad也不仅仅是一个娱乐的工具,更是一个可以用来学习、画画、工作的强大工具。想要提高生产力,那么电容笔就是…

mysql 8.0版本更换用户密码

1、首先 cmd 进入命令行 mysql -uroot -p 2、查询版本号 select version(); 3、看一下数据库 show databases; 4、使用mysql即可 5、进行查询 user、host select user,host from user; 6、修改root的密码 alter user root% identified by 1234; 7、刷新权限 flush privi…

Kubernetes 服务发布方式(蓝绿发布、灰度发布和滚动发布)

目录 一、三种常用的项目发布方式1.1 蓝绿发布1.2 灰度发布(金丝雀发布)1.3 滚动发布 二、金丝雀的方式升级发布实验三、总结 一、三种常用的项目发布方式 应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境&…

Windows服务器——部署WSUS服务与综合测试

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 本章结构: 一.WSUS概述 1.WSUS概述 2.WSUS的特点 3.WSUS常见部署…

fastboot连接@设备识别问题

文章目录 fastboot模式(MIUI)界面变换fastboot链接电脑设备识别问题连接部件的兼容性 fastboot模式(MIUI)界面变换 老设备新设备 fastboot链接电脑设备识别问题 通常一根普通的数据线和PC就能够识别处于fastboot(bootloader)模式下的android设备 扫描已连接的bootloader模式…

软件设计模式与体系结构-设计模式-结构型软件设计模式-外观模式

目录 三、外观模式概念外观模式分析实例一:实例二:图形绘制外观模式讨论一个系统有多个外观类?不要试图通过外观类为子系统增加新行为外观模式与迪米特法则抽象外观类的引入 (因为违背开闭原则)使用外观模式的目的适配…

机器人学科建设沙盘套件!mechArm机械臂智慧农业3D分拣套装详解

作为最热门的技术领域,机器人技术正在彻底改变产业,并推动全球的创新。为了满足这个快速发展的领域对技术人才日益增长的需求,高校开发了一个开创性的机器人教育解决方案。这个创新的解决方案将自动化水果采摘机的模拟与水果分拣和运送的自动…

《AutoSar实战》读写DID之二:工具链配置

文章目录 前言一、配置DID存储功能1. 新建Ram memory2. 新建NvM Block Needs3. 检查 二、关联client/server接口1. 关联2. 生成代码并验证 总结 前言 本系列主要基于DaVinCi工具链来展开具体DID读写的配置以及最终实现。 DID读写功能实现流程包括如下几点: 1&#…

【ARM】-SWI 和未定义指令异常中断处理程序的返回

文章目录 处理流程示例代码实现SWI未定义指令 附录源码 处理流程 SWI 和未定义指令异常中断是由当前执行的指令自身产生的,当 SWI 和未定义指令异常中断产生时,程序计数器的 PC 的值还未更新,它指向当前指令后面第 2 条指令(对于…

《安全软件开发框架(SSDF) 1.1:降低软件漏洞风险的建议》解读(一)

安全软件开发框架SSDF是由美国国家标准与技术研究院发布的关于安全软件开发的一组实践,帮助开发组织减少发布的软件中的漏洞数量,减少利用未检测到或未解决的漏洞的潜在影响,从根本上解决漏洞防止再次发生。本文根据《Secure Software Develo…

异步的终极方案Async-Await 和Generator

Async-Await 基本介绍 之前解决异步我们一直使用Promise的.then()方案,虽然解决了回调地狱的情况,但使用链式写法也并不特别优雅。比如看下面的代码。 所以就出现了一种号称异步的终极方案Async、Await。我们看他的定义 async 函数是使用async关键字…

手枪钻改台钻(3D打印)

所需工具: 1、3D模型打印; 2、手枪钻; 首先在SOLIDWORKS里面新建一个电钻夹的模型: 第二步导出“STL”文件: 第三步将"STL"文件导入到3D切片工具 Cura_15.02.1 里面进行切片: 第四步导出“g-…

显示器方案

概述: USB HUB连接Host与Device之间,可以扩展出多个USB设备接口,使得一个Host能同时与多个Device进行数据连接。 注:普遍而言,一颗HUB扩展芯片可扩展4个USB下行接口,市面上1 to 7的HUB,一般使用…

【Python实训项目】pygame制作【飞机大战】

目录 一、课程设计目的及应用背景 二、课程设计内容 三、课程设计代码实现 1. 创建子弹类 2.创建玩家飞机类 3. 创建敌机类 4.检查键盘输入 5.创建主模块 四、测试结果 五、思考、心得和改进以及不明白的问题 附录 所有代码如下: 一、课程设计目的及应用背景 根据课…

网联V2X视频事件检测相机使用说明书

1 产品概览 网联 V2X视频事件检测相机 视频事件检测相机 ,内置 1/1.8″逐行扫描 800万像素传感器;视 万像素传感器;视 频编码协议支持 H.265、H.264、MJPEG;具有 1个 10M/100M/1000M自适应以 太网 RJ45接口、 1路 RS485接口&#…

Bash中的eval命令

主要参考:What is the “eval” command in bash 简而言之,它让一个输入行被解析两次。 它是如何做到这一点的? shell有一系列步骤来解析一行命令。 shell读取它的输入shell将输入放入token:分为运算符和单词The shell parses the input i…

Boundary Smoothing for Named Entity Recognition

原文链接:https://aclanthology.org/2022.acl-long.490.pdf ACL 2022 介绍 问题 作者认为在命名实体任务中,由于实体的边界标注存在模糊、不一致的情况,比如一些实体中的冠词和修饰词。如下图所示中蓝色框和红色框中的内容都可以被认为是同一…

静态断言 static_assert

文章链接: https://subingwen.cn/cpp/static_assert/ 1. 断言 断言(assertion)是一种编程中常用的手段。在通常情况下,断言就是将一个返回值总是需要为真的判断表达式放在语句中,用于排除在设计的逻辑上不应该产生的情况。 比如…