大语言模型研究进展综述

1、历史

       自20世纪50年代图灵测试被提出以来,研究人员一直在探索和开发能够理解并掌握语言的人工智能技术。

      作为重要的研究方向之一,语言模型得到了学术界的广泛研究,从早期的统计语言模型和神经语言模型开始,发展到基于Transformer的预训练语言模型。

2、现状

       近年来,研究者们发现通过扩大预训练语言模型的参数量和数据量,大语言模型(Large Language Model)能够在效果显著提升的同时,展示出许多小模型不具备的特殊能力(如上下文学习能力、逐步推理能力等)。

       最近,作为代表性的大语言模型应用ChatGPT展现出了超强的人机对话能力任务求解能力,对于整个AI研究社区带来了重大影响。

3、鸟瞰

       3.1 大语言模型的定义

       通常来说,大语言模型指的是那些在大规模文本语料上训练、包含百亿级别(或更多)参数的语言模型,例如GPT-3,PaLM,LLaMA等。

       3.2  大语言模型与小模型的区别

       目前的大语言模型采用与小模型类似的Transformer架构和预训练目标(如 Language Modeling),与小模型的主要区别在于增加模型大小、训练数据和计算资源。

        3.3 大语言模型具备“涌现能力

       大语言模型的表现往往遵循扩展法则,但是对于某些能力,只有当语言模型规模达到某一程度才会显现,这些能力被称为“涌现能力”,代表性的涌现能力包括上下文学习、指令遵循、逐步推理等。

         3.4 大语言模型取得成功的原因

        目前,大语言模型取得如此巨大的成就,我们总结了五方面原因:

               1)模型、数据和计算资源的扩展;

               2)高效稳定的训练手段;

               3)语言模型能力诱导;

               4)对齐训练,将大语言模型与人类偏好对齐;

               5)工具使用(潜在发展方向)。

4、相关资源

图1 大语言模型发展时间线

       4.1 开发大语言模型的公开可用资源

        为了帮助大家速览大规模语言模型的发展进程,概要了解模型的训练需求以及总结有助于训练的可用资源。我们简要总结了可以用于开发大语言模型的公开可用资源,包括模型检查点(model checkpoint)或公开接口(API),训练语料库以及代码库。

        4.2  检查点的模型(model checkpoint)

       对于公开检查点的模型,我们根据模型参数量分成两大类,分别是百亿(10B)参数到千亿(100B)参数模型和大于千亿(100B)参数模型。在每一部分介绍时,我们根据模型的预训练语料、任务,或者评测给出研究不同能力时的推荐模型,并且根据模型原论文罗列了预训练硬件配置。

        4.3  公开接口(API)

        对于公开接口,我们重点介绍了OpenAI的GPT系列接口,包括GPT-3系列到当前的GPT-4系列,并简要介绍了部分接口之间的关系。

        4.4  训练语料库

        对于训练语料库,我们简要总结了一列常用于训练大语言模型的公开数据集。我们按照内容将这些数据集分成了六类:书籍类、CommonCrawl类、Reddit link类、维基百科类、代码类和其他。每一类我们都介绍了数据集的内容、大小以及被用于训练的模型。

        4.5  代码库

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

        项目访问地址:https://github.com/RUCAIBox/LLMSurvey

5、预训练技术

        预训练是大语言模型能力的基础。当语言模型的参数量扩展到超千亿级别时,从头预训练一个大语言模型就成为一件十分困难且有挑战的事情。

(1)在数据层面,如何收集尽可能多的高质量语料对预训练模型的效果十分关键。本章从预训练语料的收集出发,主要探讨了数据的多种来源(如对话、代码等)和预处理(清洗与编码),并分析了预训练数据数量、质量、多样性等方面对模型效果的影响。

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

(3)在训练层面,大参数量的模型非常难以优化。研究人员付出众多努力,提出了若干增加训练稳定性,及提升训练效率的方案。本章对 3D 并行、ZeRO 等被集成于 DeepSpeed 等代码库的相关训练技术进行归纳整理,并在最后对如何稳定、高效地预训练一个大语言模型给出建议。

6、微调技术

       预训练之后,“适配微调”(adaptation tuning)可以进一步增强大语言模型能力并满足人类偏好。本章主要介绍了两种适配微调技术:指令微调与对齐微调。

图2 指令格式实例示意图

      指令微调通过收集指令格式的实例(图2)来微调大模型,大大增强了模型遵循人类指令的能力,能够让模型更好地泛化到未知任务。我们展示了两种收集指令格式实例的方法,并讨论了任务数量、实例数量、实例设计等因素对指令微调效果的影响;同时,我们也总结了指令微调过程中常见的数据集合和训练细节,方便研究者训练自己的模型。

图3 基于人类反馈的强化学习工作流程

       对齐微调通过收集人类反馈数据,利用强化学习进一步微调大模型,使模型与人类对齐,更加符合人类的偏好。我们首先讨论了三种常见的对齐标准:有用性、诚实性和无害性,接着展示了三种人类反馈收集方式,最后介绍了基于人类反馈的强化学习流程(图3)。

7、使用技术

图4 两种使用技术上下文学习(ICL)和思维链提示(CoT)的对比

       本章介绍了大模型完成训练之后的使用方法。其中的代表性技术是上下文学习,它以自然语言文本的形式给大模型提供任务描述和/或任务示例。我们重点总结了如何设计有效的任务示例来增强大模型通过上下文学习完成下游任务的效果,包括示例的选择、格式以及顺序。我们还从预训练和推理两个阶段讨论了大模型上下文学习能力的来源。

        此外,思维链提示也受到广泛关注,它的做法是在提示中添加中间推理步骤来增强大模型在推理任务上的性能。根据提示中是否存在样例,思维链提示的使用场景可以分为少样本和零样本两种情况。我们还讨论了思维链提示的适用场景以及大模型思维链推理能力的来源。

8、评估

为了评估大语言模型的有效性和优越性,研究者在大量任务和评测基准上进行了评测与分析。我们从三个角度总结梳理了大语言模型的相关能力评估。

对于大模型的基础评测,我们主要关注了三类任务,包括语言生成任务知识利用任务复杂推理任务。总体来看,大语言模型在各类基础任务中取得了令人瞩目的效果。但与此同时,大语言模型在一些方面也存在亟待解决的问题,包括可控性、幻觉、知识实时性、一致性等等。

除了上述基础任务外,大模型还表现出了很多高级能力。我们着重讨论了人类对齐、外界环境交互、工具操作三大类高级能力及其对应的评估方法。这三种能力极大地丰富了语言模型的应用场景,使得语言模型能做出符合人类价值观和偏好的行为,对现实世界产生作用,以及利用工具扩展能力边界。

接下来,我们介绍了面向大语言模型的现有综合评测基准以及相关实证分析。研究者提出了许多综合评测基准,用于全面的评测和比较大语言模型。同时,另一大类工作着重于对大语言模型通用能力以及专业领域应用能力的分析。

9、总结

该综述文章系统回顾了大语言模型的最新进展,介绍了重要概念与相关技术,最后总结了大语言模型的若干挑战与未来研究方向:

(1)大模型相关的理论和本质

(2)更优的模型架构;

(3)更有效的训练方法;

(4)更高效的使用策略;

(5)安全性与一致性;

(6)应用与生态。

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

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

相关文章

Linux CentOS配置阿里云yum源

一:先备份文件,在配置失败时可以恢复 cd /etc/yum.repos.d mkdir back mv *.repo back 二:下载阿里云yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.…

Linux下使用vscode编写Python项目

我此处是使用VScode远程连接的服务器,具体方法可看如下: 1、vscode中安装Python插件 按上面步骤安装好Python插件后,重启vscode; 2、选择Python解释器 创建Python项目结构: 按下F1,打开vscode命令栏&am…

zotero跨Windows设备数据同步(利用OneDrive、百度云同步空间等云服务)

zotero跨Windows设备数据同步(利用OneDrive、百度云同步空间等云服务) 特别注意 不能在多个设备同步使用zotero,否则会导致同步出现异常。 基本原理 同步zotero的数据,即同步全部的文献和笔记、高亮标记信息。而这两类数据分别…

Git介绍及使用

目录 一、Git 的基本概念 1. 仓库(Repository): 仓库是存储代码的地方。可以通过 命令将本地文件夹初始化为 Git 仓库,并使用 命令从远程仓库克隆到本地 2. 分支(Branch): 分支是指从主分支上创建出来的一个分支&…

QQ邮箱批量发送

场景 已有用户邮箱,需要批量对他们发送一些广告信息。 完整代码 # coding=gbk import smtplib import csv from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipartdef send_email(msg_from, passwd, msg_to_list, text_content)

【QT】QT自定义C++类

在使用Qt的ui设计时,Qt为我们提供了标准的类,但是在很多复杂工程中,标准的类并不能满足所有的需求,这时就需要我们自定义C类。 下面以自定义的QPushButton作一个很简单的例子。 先新建默认Qt Widgets Application项目 一、自定义…

机器学习中的嵌入:释放表征的威力

简介 机器学习通过使计算机能够从数据学习和做出预测来彻底改变了人工智能领域。机器学习的一个关键方面是数据的表示,因为表示形式的选择极大地影响了算法的性能和有效性。嵌入已成为机器学习中的一种强大技术,提供了一种捕获和编码数据点之间复杂关系的…

二维码智慧门牌管理系统全新升级:个性化配置,智能管理,让你的社区更安全!

文章目录 前言一、个性化配置功能的升级二、智能化管理和便捷性 前言 随着科技的飞速发展,智能化管理已经成为各个领域的标配。在社区管理方面,智能化的优势在便捷性、高效性和安全性方面得到了广泛认可。最近,二维码智慧门牌管理系统经过全…

SpringBoot整合JUnit

1.创建新项目 说明:创建springboot_04_junit项目,选择对应的版本。 2.接口类 说明:新建BookDao接口。 package com.forever.dao;public interface BookDao {public void save(); }3.实现类 说明: 新建BookDaoImpl实现类。 pa…

npm发布自己的包

npm发布自己的包 1. 首先在npm官网注册一个自己的账户(有账号的可以直接登录) 注册地址 2. 创建一个自己的项目(如果已有自己的项目, 跳过这一步) npm init -y3. 确认自己的npm下载源, 只能使用npm官方的地址 npm config get registry修改地址源 npm config set registr…

洛谷P1102 A-B数对 详细解析及AC代码

P1102 A-B数对 前言题目题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题目分析注意事项 代码经典二分(O(nlgn))酷炫哈希(O(n)) 后话额外测试用例样例输入 #2样例输出 #2 王婆卖瓜 题目来源 前言 酷&…

DASCTF X CBCTF 2023|无畏者先行

前言 笔者没有参加此次比赛,由于团队后面会复现此次比赛,所以笔者在此进行复现记录。 EASYBOX 考点:命令执行? 栈溢出 附件给了 docker 环境,可以直接在本地复现,但是 docker 我不会调试,幸…

11.Z-Stack协议栈使用

f8wConfig.cfg文件 选择信道、设置PAN ID 选择信道 #define DEFAULT_CHANLIST 0x00000800 DEFAULT_CHANLIST 表明Zigbee模块要工作的网络,当有多个信道参数值进行或操作之后,把结果作为 DEFAULT_CHANLIST值 对于路由器、终端、协调器的意义&#xff1…

Spring boot集成sentinel限流服务

Sentinel集成文档 Sentinel控制台 Sentinel本身不支持持久化,项目通过下载源码改造后,将规则配置持久化进nacos中,sentinel重启后,配置不会丢失。 架构图: 改造步骤: 接着我们就要改造Sentinel的源码。…

U盘显示无媒体怎么办?方法很简单

当出现U盘无媒体情况时,您可以在磁盘管理工具中看到一个空白的磁盘框,并且在文件资源管理器中不会显示出来。那么,导致这种问题的原因是什么呢?我们又该怎么解决呢? 导致U盘无媒体的原因是什么? 当您遇到上…

SLAM从入门到精通(被忽视的基础图像处理)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 工业上用激光slam的多,用视觉slam的少,这是大家都知道的常识。毕竟对于工业来说,健壮和稳定是我们必须要考虑的…

Pytorch 快速参数权重初始化

定义一个函数: 这里比如要初始化2维卷积权重值,采用xaiver 数据分布,还有很多其他的数据分布可以探索 def weights_init(m):if isinstance(m, nn.Conv2d):xavier(m.weight.data)xavier(m.bias.data) 然后定义一个含2维卷积的网络&#xff…

Zinx框架-游戏服务器开发002:框架学习-按照三层结构模式重构测试代码+Tcp数据适配+时间轮定时器

文章目录 1 Zinx框架总览2 三层模式的分析3 三层重构原有的功能 - 头文件3.1 通道层Stdin和Stdout类3.1.2 StdInChannel3.1.2 StdOutChannel 3.2 协议层CmdCheck和CmdMsg类3.2.1 CmdCheck单例模式3.2.1.1 单例模式3.2.1.2 * 命令识别类向业务层不同类别做分发 3.2.2 CmdMsg自定…

【Mac开发环境搭建】JDK安装、多JDK安装与切换

文章目录 JDK下载与安装下载安装 配置环境变量安装多个JDK共存 JDK下载与安装 下载 Oracle官网提供了非常多个版本的JDK供下载,可以点击如下链接重定向到JDK下载页面 ORACLE官网JDK下载 安装 下面的官方文档可以点开收藏到浏览器的收藏夹,这样后续在开…

思维模型 锚定效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。先入为主,决策易偏。 1 锚定效应的应用 1.1 定价策略中的锚定效应 黑珍珠的定价策略:在 20 世纪 70 年代,黑珍珠被视为一种廉价的珠宝。然而&#xff…