大语言模型(LLM)基础知识概述


参考的文章与地址

参考《大语言模型概述》一书,书的地址:

http://aibox.ruc.edu.cn/docs//2024-04/da308db79a5d4c5697da99e012d46c76.pdf
https://github.com/RUCAIBox/LLMSurvey

本文出现图片大多数来源于《大语言模型概述》一书,学习完内容后,为了方便回顾,特结合书中内容与自身理解做一个记录,做一个融合自身见解的一个精简整合,就不用每次都看几百页的书了。

内容主要包含大语言模型发展历程,基本结构,不同模型区别,如何自己架构一个大语言模型,一些在线工具网址等等,并且后续会根据情况不断补充与修改新的内容。

没用把书上内容全部写,原书将近400页,太多了,只将一些自己觉得相对好理解的,比较重要的,接触比较多的一部分内容写在了上面,做了精简,不过大概也包含了原书的主要内容吧(有些公式太过复杂,也比较难懂,就都没放上面,一般不深度开发相关项目的话,那些可有可无。如果只是单纯搭建个大语言模型玩一玩啥的(没特别高的要求的话,这些基础知识基本都是够用的,搭建嘛,照葫芦画瓢),没有上传搭建步骤,毕竟网上都有教程,有机会再考虑上传)

一、大语言模型背景知识

1.发展历程

语言模型旨在对于人类语言的内在规律进行建模,从而准确预测词序列中未来(或缺失)词或词元(Token)的概率 (即通过对已有数据的训练,然后预测其他数据的值,根据概率大小一般优先选择概率大的词作为填入,包括机器翻译,分词等任务)

根据所采用技术方法的不同,目前主要可以分为以下四个主要发展阶段(感觉也可以分成两个,因为第三第四感觉基本路线差不多,只不过规模上不一样):

统计语言模型(Statistical Language Model, SLM) 从概率统计的角度出发,通过计算文本中各个词或词序列出现的概率,来解决自然语言上下文相关的特性.

神经语言模型(Neural Language Model, NLM) 通过神经网络角度出发,通过神经网络来进行自然语言处理任务,如常见的RNN(循环神经网络)

预训练语言模型(Pre-trained Language Model, PLM) 在通过在大规模文本数据上预先训练模型,以捕获语言的普遍特征和规律,然后将这些知识和能力迁移到下游的NLP任务中,如ChatGPT1,ChatGPT2等等,基于谷歌提出了基于自注意力机制(Self-Attention)的 Transformer 模型.

大语言模型(Large Language Model, LLM) 可以理解为数据规模更大的预训练语言模型,经过实践表明,当预训练语言模型存在 “扩展发展” ,即随着数据量的越大,模型会出现一些涌现性的能力,可以显著提升模型的效果 (例如本来是一个处理专门领域的模型,但是随着数据量的不断变大,发现其对其他领域也有着强大的通用能力,具备了本来不拥有的能力,哲学上是否可以理解为“量变引起质变”)

如ChatGPT-2不具备以少样本处理下游任务和非常优秀的人机对话能力,但是随着模型参数规模的辩护,GPT-3 可以拥有令人震撼的人机对话能力(这也是GPT-3.5一经发布引起震撼的一部分原因,其实相关的邻域之前也一直在推进,主要三个方向(GPT是只基于解码器的Transformer 架构,这也成了目前的主流,毕竟效果在这呢,其他两个方向一个是基于编码器,一个是两种结合的,每个架构理论上优势不同,目前基于解码器的Transformer 架构是主流,包括LLAMA等等),具体后面会介绍).

一般认为编码器架构被认为更适合去解决自然语言理解任务(如完形填空等),而解码器架构更适合解决自然语言生成任务(如文本摘要等),即编码器架构更倾向于对文本内容进行理解,解码器架构更倾向于文本生成

发展历程图片参考:
在这里插入图片描述

总结
早期的统计语言模型主要被用于(或辅助用于)解决一些特定任务,主要以信息检索、文本分类、语音识别等传统任务为主。随后,神经语言模型专注于学习任务无关的语义表征,旨在减少人类特征工程的工作量,可以大范围扩展语言模型可应用的任务。进一步,预训练语言模型加强了语义表征的上下文感知能力,并且可以通过下游任务进行微调,能够有效提升下游任务(主要局限于自然语言处理任务)的性能。随着模型参数、训练数据、计算算力的大规模扩展,最新一代大语言模型的任务求解能力有了显著提升,能够不再依靠下游任务数据的微调进行通用任务的求解。

70B,1B=1亿,70B=700亿

2.一些免费工具与个人见解

目前相关的工具比较多,有些是开源大模型预训练微调后的(也有直接拿来用,不微调的),这个其实还好;有些则是直接调用别人API接口,然后包个外壳(功能上其实不差,毕竟能被调用的基本都是大公司的),也有的是从头到尾自己训练的(这种一般都是大公司才有这种财力,毕竟几万片的A100,A800,价值不菲)

因此随便推荐几个免费的用户比较多或者比较经典的大语言模型工具,有些支持文生图等多种功能,openai的那个官网就不写了,当时用的贼麻烦,节点要求比New Bing 限制还多,而且能力方面其实和其他的差距不是很大,chatgpt-4,目前还有chatgpt-4o等等,与其麻烦的调用,不如用其他平替工具外加人工识别,基本都可以得到需要的答案,如果需要调用openai的API接口,那可以去用:

1.微软的基于大语言模型增强的搜索引擎 New Bing(当时自称是配备chatgpt-4的,可以理解为ChatGPT-4的在线版(联网版),现在似乎改名成Copilot了),优势是可以联网并且免费,当时用了一段时间,感觉还可以。地址(https://www.bing.com/chat),需要魔法上网,且对节点有要求。

2.据说是字节跳动的一个大语言工具模型,功能比较多,之所以拿出来是因为他支持自定义配置:(https://www.coze.cn/),需要魔法上网

3 月之暗面推出的一个大语言模型(实时联网的),KimiAI助手,有网页版也有手机app版 https://kimi.moonshot.cn/

4 谷歌的Gemini大语言模型 https://gemini.google.com/

5 百度的文心一言 https://yiyan.baidu.com/

6 360的AI助手(整合了国内比较出名的一些大语言模型,用的时候莫名奇妙自动打开了360浏览器(理论上好像没安装),哈哈,可以适当注意一下) https://bot.360.com/

还有一些专业领域的大语言模型,如商汤的医疗,通义千问的法律等方向,不再具体介绍,那个AI助手里都整合了,感兴趣可以去试试

个人觉得,几个比较出名的大语言模型没有绝对的说哪个好哪个坏(只以上面6个为例),只能说相对上可能倾向方向不同,chatgpt4是强,不过在中文等方面可能不如国内的中文大语言模型,毕竟大语言模型的强弱一个看训练数据,一个看参数,还有就是模型架构以及后续的一系列模型微调与人类对齐等等步骤。

理论上讲,其实相互差距可能不是很大(类似于什么呢,比如一个湖泊是1000吨的容量一个是950吨的容量,虽然有区别,但是肉眼也就是日常使用中很难去区别)。因此我觉得最好的使用方法还是可以多个模型一起使用,然后从中选一个自己觉得最好的答案,在较为粗粒度的人机对话中基本都没啥差别。

大模型也有自己的评价指标,虽然前文说差距不大(建立在评价指标差距不大的基础上,如果评价指标差距很大,那就不用说更细粒度的模型好坏了),一般网上开源的大模型会比那些闭源的大模型差一些,毕竟肯定要保留一点,chatgpt4和3.5也没开源。

不过对开源大模型进行合适的微调与后期的人类对齐等等步骤,不一定达不到更好的效果

3.大语言模型构建流程简介

1.大规模预训练: 准备大规模的文本数据,并且进行严格的清洗,去除掉可能包含有毒有害的内容,最后将清洗后的数据进行词元化流,并且切分成批次(Batch),用于大语言模型的预训练

2.指令微调与人类对齐:
指令微调,基础的预训练模型一开始并不一定能像现在一样可以人机问答处理/任务求解非常流畅,需要使用任务输入与输出的等配对数据进行模型训练(需要指令微调),使得模型有着更好的通用任务解决能力,通过指令微调,可以让模型朝需要的方向去发展,并且指令微调所需要的算力相比于预训练低很多。
人类对齐,主要由于预训练模型对于一些暴力等不符合人类价值的负面信息,或者一些隐私信息是不敏感的(除非实现进行标注),比如之前比较出名的,可以通过绕口令的方式从chatgpt那套出不正规网站等等。这就需要人工或者机器进行人类对齐,使得大语言模型更合规的展现能力。

3.拓展系数

拓展发展(通过语言建模损失)主要是用来判断优先提升数据规模(预训练的数据集大小) 还是 模型规模(模型参数大小) ,这里只放了一个相关公式(Chinchilla 扩展法则还有KM扩展法则等等)如下:

模型规模(𝑁)、数据规模(𝐷)和计算算力(𝐶),当 𝑎 > 𝑏 时,应该用更多的算力去提高参数规模;当 𝑏 > 𝑎 时,应该用更多的算力去提高数据规模,不过不同的扩展法则有一些差异,KM 扩展
法则(𝑎 ≈ 0.73, 𝑏 ≈ 0.27)倾向于将更大的预算分配给模型规模的增加,而不是分配给数据规模的增加;而 Chinchilla 扩展法则主张两种规模参数应该以等比例关系增加(𝑎 ≈ 0.46, 𝑏 ≈ 0.54)。

在这里插入图片描述

虽然拓展发展如此,但也不一定按这个来,这个也只是提供一个参考,具体比例如何,没有一个具体值,因为随着训练数据集规模的不断变大,小模型使用超大规模的预训练数据量也可以得到很高的模型提升,目前为止,还没有实验能够有效验证特定参数规模语言模型的饱和数据规模(即随着数据规模的扩展,模型性能不再提升)(类似于数据集多多益善,不过一般认为:数据量的质量优先度大于数据集的数量)

涌现能力 很难统一界定大语言模型出现这些上述能力的临界规模(即具备某种能力的最小规模),因为能力涌现会受到多种因素或者任务设置的影响。最近的研究表明,经过了高质量的预训练与指令微调后,即使较小的语言模型(如LLaMA-2 (7B))也能够一定程度上展现出目前认为的的三种涌现能力(上下文学习(现学现用能力),指令遵循(不会答非所问的能力)),逐步推理(利用思维链来解决复杂问题能力))

4.发展路线

通过一些目前比较通用的图片来快速了解,有的是开源的有的是闭源的(如下图)。

在这里插入图片描述

下图按照transform的不同类型分成三个分支,最左边的是只基于编码器的transform架构构建的大语言模型,中间是基于编码器-解码器的transform架构构建的大语言模型,最右边为只基于解码器的transform架构构建的大语言模型。

可以看出,目前最广泛的是只基于解码器的架构(主要是由于chatgpt3的优异性能),只基于编码器的目前基本不怎么发展了,基于编码器-解码器的transform架构构建的大语言模型目前主要是清华的和谷歌的。

在这里插入图片描述

下图为chatgpt的发展路径,蓝色部分为每一阶段的步骤,一般可以认为 模型+指令微调+人类对齐+长文本+多模态(如和搜索引擎结合就是newbing,和图片生成软件结合就是文生图功能,也可以和一些其他工具结合,使得其具备视图功能(chatgpt4刚发布时拥有的能力))

下文只是一个参考发展流程不一定对,如InstructGPT与GPT3.5其实没有严格意义上的迭代,只不过面向的方向有一些不同。

GPT-1(基础预训练,单向transform,100M) →GPT-2(更深的 Transformer 架构,拓展模型参数与数据集,1.5B)→GPT-3(更大的参数与数据集规模,拓展与涌现能力,175B)→InstructGPT(指示和提示学习 + 人类对齐)→GPT3.5(思维链CoT等等)→GPT4(长文本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值