Transformer 大模型架构深度解析(5)GPT 与 LLM 大语言模型技术解析

目录

文章目录

  • 目录
  • [GPT 发展历程](#GPT 发展历程)
    • [2018 年:GPT-1 文字的学习者](#2018 年:GPT-1 文字的学习者)
    • [2019 年:GPT-2 多任务的学习者](#2019 年:GPT-2 多任务的学习者)
    • [2020 年:GPT-3 举一反三的学习者](#2020 年:GPT-3 举一反三的学习者)
    • [2022 年:ChartGPT 聊天机器人](#2022 年:ChartGPT 聊天机器人)
    • [2023 年:OpenAI GPT-4 多模态](#2023 年:OpenAI GPT-4 多模态)
    • [2024 年:GPT-4 Turbo、Sora、GPT-4o](#2024 年:GPT-4 Turbo、Sora、GPT-4o)
  • [LLM 大语言模型](#LLM 大语言模型)
  • [GPT-2 Decoder-Only 模型架构](#GPT-2 Decoder-Only 模型架构)

GPT 发展历程

2018 年:GPT-1 文字的学习者

自 2017 年 Transformer 架构面世之后,NLP 领域就进入了 PLM(Pretrain Language Model,预训练语言模型)时代,典型代表是 Decoder-Only 流派的 GPT-1/2 和 Encoder-Only 流派的 BERT。

2018 年 6 月,OpenAI 发表论文《Improving Language Understanding by Generative Pre-Training(通过生成式预训练模型,来提升对于语言本身的理解)》提出了第一代 GPT-1 模型,它的目标就是 "理解文字"

GPT-1 是最早提出 "预训练-微调" 思想的 NLP 模型,GPT 的全称就是 Generative Pre-Training(生成式预训练)。所谓 "预训练-微调",即:在海量的无监督文本上进行自监督预训练,然后使用少量的有监督文本在每个特定任务上进行微调,从而让这些任务实现了强大的自然语言理解能力。

在以往,学者们更喜欢用标注好的有监督数据集来进行 ML(机器学习),比如:我心情真棒(正面情绪),括号中的就是一个标注。然而 OpenAI 认为,这个世界上有如此丰富的语料,但大部分都是没有被标注的数据。虽然不好用,但我们可以通过对其学习,只要学的足够多,我们就可以培养模型对于语言表达的理解能力。

2019 年:GPT-2 多任务的学习者

当 GPT-1 已经能够理解文字了,那么这个模型可以用来做什么呢?

OpenAI 在大量试验后,他们发现以往 的 NLP 模型都是针对特定任务进行优化的,例如一个复杂任务可能需要拆分为包括分词、词性标注、分类等等多个子任务和多个模型来共同完成。

而 OpenAI 认为如果语言本身包含了这些信息,那么各类任务,都应该可以被统一学习。比如:传统思路中,人们认为翻译,你必须要有中英文对应,来进行学习。但是,既然 GPT 已经学习了这么多的语料库,那么翻译,应该是自然而然就能学会的,不需要单独进行。同理,归类、找相似性、情感分析等等任务,都应该可以被大模型统一的进行处理。

于是,2019 年 11 月 OpenAI 发布论文《Language Models are Unsupervised Multitask Learners(大语言模型,是无需监督的多任务学习者)》和第二代模型 GPT-2,它的目标就是 "探究预训练模型的多任务学习能力" 。GPT-2 被定义为一名多任务学习者,即:它可以自己学会做很多事情,并且这些学会的知识应该是具备普适性的,能够处理很多任务。

GPT-2 的模型结构和 GPT-1 大致相同,GPT-2 的核心改进是大幅增加了预训练数据集和模型体量。

另一个关键改变是 GPT-2 以 zero-shot(零样本学习)为主要目标,即:不对模型进行微调,直接要求模型解决任务。例如:在传统的 "预训练-微调" 范式中,要解决一个问题,就需要收集几百上千的训练样本,在这些训练样本上进行微调来实现该问题的解决。但 GPT-2 的参数量已经非常巨大了,每次针对性优化,显然不现实。

zero-shot 的愿景是不使用任何训练样本,直接通过向 GPT-2 描述问题就可以被解决。但实际上,在 GPT-2 的时代,模型能力还不足够支撑较好的 zero-shot 效果。

2020 年:GPT-3 举一反三的学习者

2020 年,OpenAI 发表了 2 篇跨时代的论文,开启了 LLM(Large Language Model,大语言模型)和 "算力竞赛" 的全新时代。

其一是论文《Scaling Laws for Neural Language Models(神经网络语言模型的规模法则)》证明了模型的性能(以交叉熵损失衡量)遵循一定的数学幂律关系(Power-law)。即:模型参数量(N)、训练数据量(D)、计算资源量(C)的规模越大,模型就越 "智能"。

从被 BERT 压制的 GPT-1,到没有引起足够关注的 GPT-2,但 OpenAI 团队依旧坚定地选择了不断扩大预训练数据量、增加模型参数,在 GPT 架构上做出一些小的优化和修正,来不断探索更强大的预训练模型。在 GPT-2 的基础上,GPT-3 进一步增大了模型体量和预训练数据量,整体参数量达 175B,是当之无愧的 "大型语言模型"。

其二是论文《Language Models are Few-Shot Learners(通过几个例子模型就能学会你要他做什么)》和第三代模型 GPT-3,目标是让 GPT 成为了一名能够 举一反三的学习者

GPT-2 提出的 zero-shot 虽然是比 "预训练-微调" 范式更进一步、更高效的新范式,但 OpenAI 实践证明即使是 175B 大小的 GPT-3,想要在 zero-shot 上取得较好的表现仍然是一件较为困难的事情。所以 OpenAI 想到:既然人类可以通过举例学习,那语言模型应该也可以,于是提出了 few-shot(少样本学习)的重要思想。

few-shot 是在 "预训练-微调" 范式和 zero-shot 范式之间的一个折中。旨在提供给模型少样的示例来教会它完成任务。few-shot 一般会在 prompt(也就是模型的输入)中增加 3~5个示例,来帮助模型理解。例如,对于情感分类任务:

bash 复制代码
zero-shot:请你判断 '这真是一个绝佳的机会' 的情感是正向还是负向,如果是正向,输出 1;否则输出 0

few-shot:请你判断 '这真是一个绝佳的机会' 的情感是正向还是负向,如果是正向,输出 1;否则输出 0。你可以参考以下示例来判断:'你的表现非常好' ------ 1;'太糟糕了' ------ 0;'真是一个好主意' ------ 1。

通过给模型提供少量示例,模型可以取得远好于 zero-shot 的良好表现。所以 few-shot 也被称为上下文学习(In-context Learning),即让模型从提供的上下文中的示例里学习问题的解决方法。

GPT-3 在 few-shot 上展现的强大能力,为 NLP 的突破带来了重要进展。如果对于绝大部分任务都可以通过人为构造 3~5个示例就能让模型解决,其效率将远高于传统的 "预训练-微调" 范式。

2022 年:ChartGPT 聊天机器人

GPT-3 基于 Scaling Low 拥有了 "智能" 的涌现能力,通过 few-shot 拥有了上下文学习能力,通过 SFT(指令微调)拥有了指令理解能力。而 2022 年 11 月 30 日发布的 ChartGPT 聊天机器人产品再让 GPT-3 拥有了基于 RLHF(人类反馈强化学习)的人类偏好对齐能力。

至此,LLM 的 "预训练-指令微调-人类反馈强化学习" 训练范式已经成型,让 LLM 能够直接、高效、准确地响应用户指令,从而真正向通用人工智能的目标逼近。如下图所示。

ChartGPT 它是一个聊天机器人产品,能够将 GPT 系列模型通过 ChatBot 的形态把 AI 智能以服务的方式向用户提供。

ChatGPT 能够基于在预训练阶段所见的模式和统计规律,来生成回答,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流。并且得益于 GPT-2 的多任务能力,GPT-3 的举一反三能力,使得 ChatGPT 不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

ChartGPT 是一个跨时代的产品,一经推出就迅速在社交媒体上走红,短短 5 天的注册用户数就超过 100 万。2023 年 1 月末,ChatGPT 的月活用户已突破 1 亿,成为史上增长最快的消费者应用。

2023 年:OpenAI GPT-4 多模态

2023 年 3 月 14 日,OpenAI 发布了第四代模型 GPT-4。

GPT-3 让 OpenAI 看见了 Scaling Low 的潜力,所以 GPT-4 的参数量来到了惊人的 1.76T 级别。使其成为了一个更通用的模型,适用于更广泛的应用,包括但不限于文本生成、翻译、摘要、问答、编程辅助等,还增加了对于长文本的处理能力和更好的泛化能力。

最重要的,GPT-4 还增加了一种新的交互方式,就是对于图片的理解。GPT-4 论文的标题《Large Multimodal Model(多模态大模型)》。GPT-4 能够处理图像和文本的混合输入,除本身带了对于图片 OCR 外,还有对位置和细节的理解能力。

2023 年 5 月,在和 OpenAI 达成合作后,微软宣布 GPT-4 全面接入 Office 系列产品。

2024 年:GPT-4 Turbo、Sora、GPT-4o

2024 年 4 月 9 日,OpenAI发布 GPT-4 Turbo。

2024 年 2 月 15 日,OpenAI 发布 Sora 文生视频模型 Demo。

2024 年 5 月 14 日,OpenAI 推出新的旗舰模型 GPT-4o,o 代表 omni,即 "全能" 之意。其最突出特点是在与人的交互方面更为自然。它可以在最快 232 毫秒的时间内响应音频输入,平均响应时间为 320 毫秒,几乎接近人类在交谈中的响应时间。

LLM 大语言模型

LLM(Large Language Model,大语言模型)是一种相较传统 PLM 语言模型参数量更多(十亿到万亿量级)、在更大规模语料(T token 量级)和算力上进行 "预训练-微调-强化学习" 的语言模型。语言模型,即通过预测下一个 token 任务来训练的 NLP 模型。

LLM 的能力

自 GPT-3(1750 亿参数)以来 LLM 接替 PLM 成为 NLP 的主流方向。一个 LLM 应该具有以下核心能力:

  1. 涌现能力(Emergent Abilities)
  2. 上下文学习能力(In-context Learning)
  3. 指令遵循能力(Instruction Following)
  4. 逐步推理能力(Step by Step Reasoning)

这些独特能力是 LLM 区别于传统 PLM 的重要优势,也让 LLM 在处理各种任务时表现出色,使它们成为了解决复杂问题和应用于多领域的强大工具。正是因为涌现能力、上下文学习能力、指令遵循能力与逐步推理能力的存在,NLP 研究人员相信 LLM 是迈向通用人工智能,帮助人类社会实现生产力质变的重要途径。

事实上,目前已有众多基于 LLM 的应用,旨在利用 LLM 的独特能力显著提高生产力。例如,微软基于 GPT-4 推出的 Copilot,就基于 LLM 强大的指令遵循能力与逐步推理能力,通过提供代码补全、代码提示、代码编写等多种功能,辅助程序员更高效、便捷、精准地编写程序,极大提高了程序员的生产效率。

涌现能力

涌现能力是指同样的模型架构与预训练任务下,某些能力在小型模型中不明显,但在大型模型中特别突出。可以类比到物理学中的相变现象,涌现能力的显现就像是模型性能随着规模增大而迅速提升,超过了随机水平,也就是我们常说的量变引起了质变。

具体来说,涌现能力可以定义为与某些复杂任务相关的能力。但一般而言,NLP 更关注的是它们具备的通用能力,也就是能够应用于解决各种 NLP 任务的能力。涌现能力是目前业界和学界对 LLM 保持较高的热情和关注的核心所在,即虽然 LLM 目前的能力、所能解决的任务与人类最终所期待的通用人工智能还存在不小的差距,但在涌现能力的作用下,我们相信随着研究的不断深入、高质量数据的不断涌现和更高效的模型架构及训练框架的出现,LLM 终能具备通用人工智能所需要具备的能力,从而给人类生活带来质变。

上下文学习能力

上下文学习能力是由 GPT-3 few-shot 首次引入的。具体而言,上下文学习是指允许语言模型在提供自然语言指令或多个任务示例的情况下,通过理解上下文并生成相应输出的方式来执行任务,而无需额外的训练或参数更新。

传统 PLM,在经过高成本的预训练之后,往往还需要对指定的下游任务进行有监督微调。虽然传统 PLM 体量较小,对算力要求较低,但例如 BERT 类模型(0.5B 参数),进行有监督微调一般还是需要 10G 以上显存,有一定的算力成本。而同时,有监督微调的训练数据的成本更高。针对下游任务难度的不同,需要的训练样本数往往在 1k~数十k 不等,均需要进行人工标注,数据获取上有不小的成本。而具备上下文学习能力的 LLM 往往无需进行高成本的额外训练或微调,而可以通过少数示例或是调整自然语言指令,来处理绝大部分任务,从而大大节省了算力和数据成本。

具备上下文学习能力的 LLM,通过 Prompt Engineering 就可以激发 LLM 的能力转变。例如,目前绝大部分 NLP 任务,通过调整 Prompt 或提供 1~5 个自然语言示例,就可以令 GPT-3 达到超过传统 PLM 微调的效果。

指令遵循能力

通过使用自然语言描述的多任务数据进行微调,也就是所谓的 指令微调 ,LLM 被证明在同样使用指令形式化描述的未见过的任务上表现良好。也就是说,经过指令微调的 LLM 能够理解并遵循未见过的指令,并根据任务指令执行任务,而无需事先见过具体示例,这展示了其强大的泛化能力。

指令遵循能力意味我们不再需要每一件事都先教模型,然后它才能去做。我们只需要在指令微调阶段混合多种指令来训练其泛化能力,LLM 就可以处理人类绝大部分指令,即可以灵活地解决用户遇到的问题。

这一点在 ChatGPT 上体现地尤为明显。ChatGPT 之所以能够具备极高的热度,其核心原因即在于其不再是仅能用于学界、业界研究的理论模型,而同样可以广泛地服务于各行各业用户。通过给 ChatGPT 输入指令,其可以写作文、编程序、批改试卷、阅读报纸等等。

指令遵循能力使 LLM 可以真正和多个行业结合起来,通过人工智能技术为人类生活的方方面面赋能,从而为人类带来质的改变。不管是目前大火的 Agent、WorkFlow,还是并不遥远的未来可能就会出现的全能助理、超级智能,其本质依赖的都是 LLM 的指令遵循能力。

逐步推理能力

逻辑推理,尤其是涉及多个推理步骤的复杂推理任务,一直是 NLP 的攻关难点,也是人工智能难以得到普遍认可的重要原因。毕竟,如果一个模型不能解答基础的 "鸡兔同笼" 问题,或者不能识别语言中的逻辑陷阱,你很难认为它是 "智能的" 而非 "智障的"。

但是,传统的 NLP 模型通常难以解决涉及多个推理步骤的复杂任务,例如数学问题。然而,LLM 通过采用思维链(Chain-of-Thought,CoT)推理策略,可以利用包含中间推理步骤的 Prompt 机制来解决这些任务,从而得出最终答案。据推测,这种能力可能是通过对代码的训练获得的。

逐步推理能力意味着 LLM 可以处理复杂逻辑任务,也就是说可以解决日常生活中需要逻辑判断的绝大部分问题,从而向 "可靠的" 智能助理迈出了坚实的一步。

LLM 的特点

长文本处理

由于能够处理多长的上下文文本,在一定程度上决定了模型的部分能力上限,LLM 往往比传统 PLM 更看重长文本处理能力。相对于以 512 token 为惯例的传统 PLM,LLM 在拓宽最大上下文长度方面可谓妙计频出。

由于在海量分布式训练集群上进行训练,LLM 往往在训练时就支持 4k、8k 甚至 32k 的上下文长度。同时,LLM 大部分采用了 RoPE(旋转位置编码)或者同样具有外推能力的 AliBi 作为位置编码,具有一定的长度外推能力,也就是在推理时能够处理显著长于训练长度的文本。例如,InternLM 在 32k 长度上下文上进行了预训练,但通过 RoPE 能够实现 200k 长度的上下文处理。

通过不断增强长文本处理能力,LLM 往往能够具备更强的信息阅读、信息总结能力,从而解决诸如要求 LLM 读完《红楼梦》并写一篇对应的高考作文的 "世纪难题"。

挥之不去的幻觉

幻觉,是指 LLM 根据 Prompt 杜撰生成虚假、错误信息的表现。例如,当我们要求 LLM 生成一篇学术论文及其参考文献列表时,其往往会捏造众多看似 "一本正经" 实则完全不存在的论文和研究。

幻觉问题是 LLM 的固有缺陷,也是目前 LLM 研究及应用的巨大挑战。尤其是在医学、金融学等非常强调精准、正确的领域,幻觉的存在可能造成非常严重的后果。

目前也有很多研究提供了削弱幻觉的一些方法,如 Prompt 里进行限制、通过 RAG(检索增强生成)来指导生成等,但都还只能一定程度减弱幻觉而无法彻底根除。

GPT-2 Decoder-Only 模型架构

如上图,GPT-2 的模型结构和 GPT-1 大致相同,主要是扩大了模型参数规模、同时将 Post-Norm 改为了 Pre-Norm,即:先进行 LayerNorm 计算,再进入注意力层计算。这些改动的核心原因是由于模型层数增加、体量增大,梯度消失和爆炸的风险也不断增加,为了使模型梯度更稳定对上述结构进行了优化。

模型的运行步骤如下:

  1. 对于一个自然语言文本的输入,先通过 tokenizer 进行分词并转化为对应词典序号的 input_ids。
  2. 输入的 input_ids 首先通过 Embedding 层,再经过 Positional Embedding 进行位置编码。沿用了 Transformer 的经典 Sinusoidal 位置编码,即通过三角函数进行绝对位置编码。
  3. 通过 Embedding 层和 Positional Embedding 层编码成 hidden_states 之后,就可以进入到 Decoder。
  4. 由于不再有 Encoder 的编码输入,Decoder 仅保留了一个 Masked MHA(Self-Attention),并且将 LayerNorm 放到了 MMHA 之前。所以 hidden_states 会先进行 LayerNorm,再进行掩码注意力计算,然后经过残差连接和再一次 LayerNorm 进入到 MLP。
  5. MLP 层没有选择线性矩阵来进行特征提取,而是选择了两个一维卷积核来提取,不过,从效果上说这两者是没有太大区别的。
  6. 通过 N 个 Decoder 层后的 hidden_states 最后经过线性矩阵映射到词表维度,就可以转化成自然语言的 token,从而生成我们的目标序列。
相关推荐
NAGNIP7 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab8 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab8 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP12 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年12 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼12 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS12 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区14 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈14 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang14 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx