【AI大模型应用开发】【基础】3.ChatGPT模型原理介绍
ChatGPT模型原理介绍
1. 什么是ChatGPT
ChatGPT 是由OpenAI 在2022年11月30日发布的全新聊天机器人模型, 它能够通过学习和理解人类的语言来进行对话, 真正像人类一样来交流, 甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务
在挖掘ChatGPT模型原理之前, 需要回顾下ChatGPT的成长史, 即需要对GPT-1、GPT-2、GPT-3等一系列模型 进行了解和学习, 以便更好的理解ChatGPT
2. GPT-1介绍
2.1 GPT-1简介
- 2018年6月, OpenAI公司发表了论文“Improving Language Understanding by Generative Pre- training ”《用生成式预训练提高模型的语言理解力》, 推出了具有1.17亿个参数的GPT-1 (Generative Pre-training , 生成式预训练)模型
- GPT-1采用了传统的语言模型方法进行预训练, 即使用单词的上文来预测单词, 使得GPT更擅长处理自然语言生成任务(NLG), 而BERT更擅长处理自然语言理解任务(NLU)
2.2 GPT-1模型架构
看三个语言模型的对比架构图, 中间的就是GPT-1

从上图可以很清楚的看到GPT采用的是单向Transformer模型, 例如给定一个句子[u1, u2, ..., un], GPT-1在预测 单词ui的时候只会利用[u1, u2, ..., u(i-1)]的信息, 而BERT会同时利用上下文的信息[u1, u2, ..., u(i-1), u(i+1), ..., un]

2.3 GPT-1训练过程
GPT-1的训练包括两阶段过程:
- 1.无监督的预训练语言模型
- 2.有监督的下游任务fine-tunning(微调)
无监督的预训练语言模型
- 给定句子U = [u1, u2, ..., un], GPT训练语言模型时的目标是最大化下面的似然函数
- 上述公式具体来说是要预测每个词ui的概率,这个概率是基于它前面 ui-k 到 ui- 1 个词, 以及模型 Θ 。这里的 k 表 示上文的窗口大小,理论上来讲 k 取的越大,模型所能获取的上文信息越充足,模型的能力越强
- GPT-1是一个单向语言模型,模型对输入U 进行特征嵌入得到 transformer 第一层的输h0,再经过多层transformer 特征编码,使用最后一层的输出即可得到当前预测的概率分布,计算过程如下: ho=UW+W
- Wp代表单词的位置编码, 形状是[max_seq_len, embedding_dim], We的形状是[vocab_size, embedding_dim]
- 得到输入张量h0后, 要将h0传入GPT的Decoder Block中, 依次得到ht
- 最后通过得到的ht来预测下一个单词
有监督的下游任务fine-tunning
- GPT预训练后, 会针对具体的下游任务对模型进行微调. 微调采用的是有监督学习, 训练样本包括单词序列 [x1, x2, ..., xn]和label y. GPT微调的目标任务是根据单词序列[x1, x2, ..., xn]预测标签y
其中Wy表示预测输出的矩阵参数, 微调任务的目标是最大化下面的函数 :
综合两个阶段的目标任务函数, 可知GPT的最终优化函数为 :
2.4 GPT-1训练过程
整体训练过程架构图
根据下游任务适配的过程分两步 :
- 1、根据任务定义不同输入
- 2、对不同任务增加不同的分类层. 具体定义可以参见下图 :

2.5 GPT-1数据集
GPT-1使用了BooksCorpus数据集, 文本大小约 5 GB,包含 7400w+ 的句子,这个数据集由 7000 本独立的、不同风格类型的书籍组成, 选择该部分数据集的原因 :
- 1. 书籍文本包含大量高质量 长句,保证模型学习长距 离信息依赖
- 2 . 书籍未开源公布, 所以很 难在下游数据集上见到, 更能验证模型的泛化能力
2.6 GPT-1模型的特点
模型的一些关键参数为:

总结:
- 1. GPT-1模型架构?
- 答案:Transformer的Decoder模块(去除中间第二个子层)
- 2. GPT-1预训练任务?
- 答案:1、无监督预训练;2有监督任务微调.
- 3. GPT-1模型基本参数?
- 答案:12层、12个head、768维、参数量1.17亿
3. GPT-2介绍
3.1 GPT-2简介
2019年2月, OpenAI推出了GPT-2, 同时, 他们发表了介绍这个模型的论文“Language Models are Unsupervised Multitask Learners ” (语言模型是无监督的多任务学习者)
相比于GPT-1, GPT-2突出的核心思想为多任务学习, 其目标旨在仅采用无监督预训练得到一个泛化能力更强的语 言模型, 直接应用到下游任务中. GPT-2并没有对GPT-1的网络结构进行过多的创新与设计, 而是使用了更多的网 络参数与更大的数据集 : 最大模型共计48层, 参数量达15亿
3.2 GPT-2模型架构
在模型方面相 对于 GPT-1 来 说GPT-2做了微小的改动
- LN层被放置在Self-Attention层和Feed Forward层前, 而不是像原来那样后置( 目的:随着模型层数不断增加,梯度消失和梯度爆炸的风险越来越大,这些调整能够减少预 训练过程中各层之间的方差变化,使梯度更加稳定)
- 在最后一层Tansfomer Block后增加了LN层
- 输入序列的最大长度从 512 扩充到 1024

3.3 GPT-2训练核心思想
- GPT-2模型的目标 : 使用无监督的预训练模型做有监督的任务
- GPT-2模型目的:模型从大规模数据中学到的能力能够直接在多个任务之间进行迁移,而不需要额外提供特定任务的数据进行Fine-Tuing.
- 因此 GPT-2 提出了新的观点:zero-shot(零样本学习). 通过 zero-shot, 在迁移到其他任务上的时候不需要额外的标注数据, 也不需要额外的模型训练
- GPT-2的训练只包括无监督的预训练过程, 和GPT-1第一阶段训练一样, 也属于一个单向语言模型
- 语言模型其实也是在给序列的条件概率建模, 即p (sn|s1,s2,...,sn−1)
- 在 zero-shot 的设定下,不同任务的输入序列应该与训练时见到的文本长得一样,也就是以自然语言的形式去作 为输入,例如下面两个任务的输入序列是这样改造的:
- 机器翻译任务:translate to french, { english text }, { french text }
- 阅读理解任务:answer the question, { document }, { question }, { answer } •
- 为什么上述输入序列的改造是有效的?或者说为什么 zero-shot 是有效的?这里引用原文的一句话:
- Our approach motivates building as large and diverse a dataset as possible in order to collect natural language demonstrations of tasks in as varied of domains and contexts as possible.
- 大概意思是,从一个尽可能大且多样化的数据集中一定能收集到不同领域不同任务相关的自然语言描述示例
3.4 GPT-2的数据集
- 为了保证 zero-shot 的效果,必须要足够大且覆盖面广
- 数据集共有约800万篇文章, 累计体积约40G
- 所以 GPT-2 专门爬取了大量的网络文本数据,GPT-2 的文章取自于Reddit上高赞的文章, 命名为WebText
- 为了避免和测试集的冲突, WebText移除了涉及Wikipedia的文章
3.5 GPT-2模型的特点
与GPT-1的区别:
- 主推 zero-shot,而 GPT-1 为 pre-train + fine-tuning(预测 + 微调)
- 训练数据规模更大,GPT-2 为800w文档40G,GPT-1为5GB
- 模型大小,GPT-2 最大15亿参数,GPT-1为1亿参数
- 模型结构调整,层归一化
- 训练参数,batch_size 从64增加到 512,上文窗口大小从512增加到1024
- 优点:
- 文本生成效果好, 仅通过zero- shot学习,就有7个任务超过之前 sota(最优)的方法
- 海量数据和大量参数训练出来的词向量模型有迁移到其它类别任务中而不需要额外的训练
- 缺点:
- 无监督学习能力有待提升
- 有些任务上的表现不如随机
3.6 GPT-2模型总结
- GPT-2验证了通过海量数据和大量参数训练出来的词向量模型可以直接迁移到其它类别任务中而不需要额外的训练
- 但是很多实验也表明, GPT-2的无监督学习的能力还有很大的提升空间, 甚至在有些任务上的表现不比随机的好
- 尽管在有些zero-shot的任务上的表现不错, 但是仍不清楚GPT-2的这种策略究竟能做成什么样子
GPT-2表明随着模型容量和数据量的增大, 其潜能还有进一步开发的空间, 基于这个思想, 诞生了下面要介绍的GPT-3
总结:
- 1. GPT-2模型架构?
- 答案:相较GPT-1做了微小的改动:
- 1.Pre_LayerNorm
- 2.最后 一层后加入LN层
- 3.序列长度扩大到1024
- 2. GPT-2预训练任务?
- 答案:无监督预训练
- 3. GPT-2提出的新思想?
- 答案:zero-shot:零样本学习,达到开箱即用的效果
4. GPT-3介绍
4.1 GPT-3简介
2020年5月, OpenAI发布了GPT-3, 同时发表了论文“Language Models are Few-Shot Learner ”《小样本学习者的语言模型》
GPT-3提出核心观点:Few-Shot思想, 相比GPT-2 的 Zero-Shot,需要使用少量样本在下游任务上去做微调, 从而让模型给出更准确的答案.
4.2 GPT-3模型架构
- 实际上GPT-3 不是一个单一的模型, 而是一个模型系列. 系列中的每个模型都有不同数量的可训练参数. 下表显示了每个模型、体系结构及其对应的参数 :

- 在模型结构上,GPT-3 延续使用 GPT 模型结构,但是引入了 Sparse Transformer 中的 sparse attention 模 块(稀疏注意力)
- sparse attention 与传统 self-attention(称为 dense attention 稠密注意力)的区别在于:
- dense attention:每个 token 之间两两计算 attention,复杂度 O(n²)
- sparse attention:每个 token 只与其他 token 的一个子集计算 attention,复杂度O(n*logn)
- 具体来说,sparse attention 除了相对距离不超过 k 以及相对距离为 k,2k,3k,... 的 token,其他所 有 token 的注意力都设为 0,如下图所示:

- 使用 sparse attention 的好处主要有以下两点:
- 减少注意力层的计算复杂度,节约显存和耗时,从而能够处理更长的输入序列
- 具有“局部紧密相关和远程稀疏相关 ”的特性,对于距离较近的上下文关注更多,对于距离较远的上下文关注较少
- 最大版本 GPT-3 175B 或“GPT-3 ”模型具有175个B参数、96层的多头Transformer、Head size为96、词向量维度为 12288、文本长度大小为2048.
4.3 GPT-3训练核心思想
- GPT-3模型训练的思想与GPT-2的方法相似, 去除了fine-tune过程, 只包括预训练过程, 不同只在于采用了参数更多的模型、更丰富的数据集和更长的训练的过程.
- 但是GPT-3 模型在进行下游任务评估和预测时采用了三种方法, 他们分别是 : Few-shot、One-shot、Zero-shot
- 其中 Few-shot、One-shot也被称之为情境学习(in-context learning,也可称之为提示学习). 情境学习理解 : 在被给定的几个任务示例或一个任务说明的情况下, 模型应该能通过简单预测以补全任务中其他的实例. 即情境学习要求预训练模型要对任务本身进行理解
- In-context learnin核心思想在于通过少量的数据寻找一个合适的初始化范围,使得模型能够在有限的数据集上快速拟合,并获得不错的效果
下面以从“英语到法语的翻译任务 ”为例, 对比传统的微调策略和GPT-3三种情景学习方式


in-context learning 虽然它与 fine-tuning 一样都需要一些有监督标注数据,但是两者的区别是:
- fine-tuning 基于标注数据对模型参数进行更新,而 in-context learning 使用标注数据时不做任何的梯度回传,模型参数不更新
- in-context learning 依赖的数据量(10~100)远远小于 fine-tuning 一般的数据量
GPT-3通过通过大量下游任务实验验证 : few-shot 效果最佳,one-shot 效果次之,zero-shot 效果最差
4.4 GPT-3数据集
一般来说, 模型的参数越多, 训练模型所需的数据就越多. GPT-3共训练了5个不同的语料大约 45 TB 的文本数据

不同数据的介绍:
- Common Crawl语料库来自网络爬行中数据, 如网页数据等
- WebText2是来自具有 3+ upvotes 的帖子的所有出站 Reddit 链接的网页文本
- Books1和Books2是两个基于互联网的图书语料库
- 英文维基百科页面 也是训练语料库的一部分
4.4 GPT-3模型的特点
与GPT-2的区别:
- 效果上,超出 GPT-2 非常多,能生成人类难以区分的新闻文章
- 主推 few-shot,相比于 GPT-2 的 zero-shot,具有很强的创新性
- 模型结构略微变化,采用 sparse attention 模块(稀疏注意力机制)
- 海量训练语料,45TB(清洗后 570GB),相比于 GPT-2 的 40GB
- 海量模型参数,最大模型为 1750 亿,GPT-2 最大为 15 亿参数
优缺点:
- 优点
- 整体上, GPT-3在zero-shot或 one-shot设置下能取得尚可的成绩, 在few-shot设置下有可能超越基于fine-tune的SOTA模型
- 去除了fune-tuning任务
- 缺点
- 由于40TB海量数据的存在, 很难保证 GPT-3生成的文章不包含一些非常敏感的内容
- 对于部分任务比如: “填空类型 ”等, 效果具有局限性
- 当生成文本长度较长时,GPT-3可能 重复生成一段话,前后矛盾,逻辑衔 接不好等等
- 成本太大
4..5 GPT-3模型总结
- GPT系列从1到3, 通通采用的是transformer架构, 可以说模型结构并没有创新性的设计
- GPT-3的本质还是通过海量的参数学习海量的数据, 然后依赖transformer强大的拟合能力使得模型能够收敛
- 得益于庞大的数据集, GPT-3可以完成一些令人感到惊喜的任务
但是GPT-3也不是万能的, 对于一些明显不在这个分布或者和这个分布有冲突的任务来说, GPT-3还是无能为力的.
总结:
- 1. GPT-3模型架构?
- 答案:和GPT-2基本一致,提出sparse attention(稀疏注意力)
- 2. GPT-3预训练任务?
- 答案:无监督预训练
- 3. GPT-3提出的新思想?
- 答案:ICL(情景学习):Few-Shot、One-Shot、Zero-Shot
5. ChatGPT介绍
5.1 ChatGPT简介
- ChatGPT是一种基于GPT-3的聊天机器人模型. 它旨在使用 GPT-3 的语言生成能力来与用户进行自然语言对话. 例如, 用户可以向 ChatGPT 发送消息, 然后 ChatGPT 会根据消息生成一条回复
- GPT-3 是一个更大的自然语言处理模型, 而 ChatGPT 则是使用 GPT-3 来构建的聊天机器人. 它们之间的关系是ChatGPT 依赖于 GPT-3 的语言生成能力来进行对话
5.2 ChatGPT原理
思考:模型越大、参数越多, 模型效果越好吗?
回答: 过拟合、出现模型能力 不一致问题
- 原始的 GPT-3 就是能力非一致模型, 类似GPT-3 的大型语言模型都是基于来自互联网的大量文本数据进行训练, 能够生成类似人类的文本, 但它们可能并不总是产生符合人类期望的输出
- ChatGPT 为了解决模型的不一致问题, 使用了人类反馈来指导学习过程,对其进行了进一步训练. 所使用的具体技术就是强化学习(RLHF)
5.3 什么是强化学习
强化学习(Reinforcement Learning, RL), 又称增强学习, 是机器学习方法的一种, 用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题.
强化学习的关键信息:
- 一种机器学习方法
- 关注智能体与环境之间的交互
- 目标是追求最大回报


5.4 ChatGPT强化学习步骤
ChatGPT强化学习步骤:
从人类反馈中进行强化学习, 该方法总体上包括三个步骤 :
- 监督学习微调(SFT 模型) : 通过在有标注数据上进行有监督训练,从而使模型适应特定任务和场景
- 训练奖励模型(reward) : 刻画SFT模型的输出是否在人类看来表现 02 不错。即,输入 [提示(prompt),模型生成的文本] ,输出一个刻画 文本质量的标量数字(奖励值)
- 强化学习(PPO算法) : 利用PPO强化学习算法,基于reward模型将 奖励最大化,从而进一步调优SFT模型
5.4.1 监督学习

5.4.2 训练奖励模型
奖励模型的目的是为 SFT 模型输出进行打分, 代表这些输出对于人类来说可取程度有多大. 即模仿人类偏好的系统

5.4.3 强化学习
强化学习被应用于通过优化RM模型来调优SFT 模型,所使用的特定算法称为近端策略优化(PPO)

5.5 ChatGPT特点
优缺点:
- 优点
- 回答理性又全面, ChatGPT更能做到多角度全方位回答
- 降低学习成本, 可以快速获取问题答案
- 缺点
- 由于ChatGPT服务不稳定
- 对于部分任务比如:“查询某语言系统关键字 ”等, 会给出没有意义的答案
总结:
- 1. ChatGPT模型原理?
- 答案:有监督的微调+奖励模型+强化学习
- 2. 强化学习的关键信息?
- 答案:1.一种机器学习方法;2.关注智能体和环境的交互
- 3. 目标追求最大回报
【上一篇】【AI大模型应用开发】【基础】2.大模型(LLM)基础知识&LLM主要类别架构介绍
【下一篇】
更多推荐








所有评论(0)