第3章 读懂ChatGPT的核心技术
基于Transformer的预训练语言模型
原始 Transformer 模型以编码器 ( Encoder )-解码器( Decoder )架构
编码器 ( Encoder )和解码器( Decoder )
·编码器 ( Encoder )和解码器( Decoder ):自注意力层+前馈神经网络层组成。
o自注意力层:学习序列中不同位置之间的依赖关系,使得Transformer 模能够有效地处长距离依赖关系。
o前馈神经网络层:对特征进行非线性变化,提高整个网络的信息表达能力。
oSoftMax函数:将多酚类输出值转转换为[0,1]之间的概率分布,且概率和为1.
·编码器 ( Encoder ):一个多头自注意力层+一个前馈神经网络层+每层的输出都需要经过残差连接和归一化层进行数据处理
o残差连接:将输入矩阵 X 和经过多头自注意力层转化之后的新矩阵连接在-起,即 X+MultiHeadAttention(X)。残差连接是行业解决多层网络数据处理。爆炸或梯度消失等问题,让网络只关注残差部分的通用做法,使得网络能够学习更深层的特征表示。
o归一化的作用是让每一层神经元的输入分布都有相同的均值和方差,这有助于加快模型的收敛速度,从而提高建模效率。
o多头自注意力机制的计算逻辑十分简单,是将多个单层自注意力模型的输出矩阵按行拼接在一起,然后通过一个线性变层得到新矩阵。
o前馈神经网络层比较简单,一般由一个或多个线性变换函数或者非线性变换函数构成,主要作用是获得更丰富的特征。
第一层的线性变换使用ReLU激活函数,第二层的线性变换不使用激活函数,
解码器( Decoder ):整体结构十分相似,差别在于每一个解码器包含两个多头自注意力层和一个前馈神经网络层,这比编码器多了一个多头自注意力层。
(1)是否存在遮挡。
(2)是否包含编码器的输出作为输入
在原始 Transformer 模型的基础上,在自然语言处理领域中逐渐衍生出以下3 种方式来构建预训练语言模型。
(1)只包含编码器的预训练语言型,典型代表是 BERT。
(2)只包含解码器的预训练语言模型,比如 ChatGPT。
(3)编码器和解码器都包括预训练语言模型,比如 BART。
提示学习与指令微调
提示学习 (Prompt Learning)的方法是通过编辑下游任务的输入,使其在形式上与指令训练数据集一致,从而达到挖掘更多信息,提高学习效果的目标。
按照预训练格式编辑下游任务的输入,让下游任务的分布朝着预训练数据集分布靠近,这样能有效地提高模型的学习能力。
示例 A: 情感判断。
文本:最近总下雨,只能在家待着。
提示:最近天气很好,可以出去玩,让人十分开心,最近总下雨,只能在家待着,让人十分_______?
3种提示学习方法,分别是 Zero-shot、One-shot和Few-shot。
1)Zero-shot(零样本学习),不给模型任何提示,直接对下游任务进行推理预测。。
指令: 请提取下面这句话中的人物、时间、组织机构 3 类命名实体。
提示: 张三于 2020 年毕业于北京大学 =>
(2)One-shot(一个样本学习) :给定一个样例,让模型对下游任务进行推理预测。其示例如下。
指令:请提取下面这句话中的人物、时间、组织机构 3 类命名实体。
样例:彭帅 1993 年毕业于北京科技大学 =>人物: 彭帅,时间: 1993 年组织机构:北京科技大学
提示:张三 2020 年毕业于北京大学 =>
(3)Few-shot ( 少数样本学习 ):给定少量样例作为输入,让模型对下游任务进行推理预测。
指令:请提取下面这句话中的人物、时间、组织机构 3 类命名实体
样例 1: 彭帅 1993 年毕业于北京科技大学 -> 人物:彭帅,时间:1993年,组织机构:北京科技大学
样例 2:张馨月上个月刚从美团离职 -> 人物:张馨月,时间:上个月,组织机构:美团
样例 3:刘敏航明天入职百度 -> 人物:刘敏航,时间:明天,组织机构:百度
提示:张三 2020 年毕业于北京大学 =>
指令微调和提示学习的区别是指令微调不再局限于模仿预训练数据集,而是直接构建指令数据集并在此基础上进行微调,以达到更好的模型效果和泛化能力。
类型 |
输入 |
输出 |
文本翻译 |
翻译成英文:美国企业家比尔·盖茨 14 日上午抵达北京开启访华行程。 |
American entrepreneur Bill Gates arrived in Beijing on the morning of the 14th to begin his visit to China. |
实体识别 |
美国企业家比尔·盖茨 14 日上午抵达北京开启访华行程。实体识别: |
美国,比尔·盖茨,14 日上午,北京 |
阅读理解 |
阅读文章,回答问题:美国企业家比尔·盖茨 14日上午抵达北京开启访华行程。问题:比尔·盖茨何时抵达北京? |
14 日上午 |
文本分类 |
美国企业家比尔·盖茨14 日上午抵达北京开启访华行程。这篇文章属于以下哪个类别:军事、政 经济治、科技、教育、娱乐、经济? |
经济 |
文本生成 |
根据题目写文章:比尔·盖茨访华 |
6月14 日,微软创始人比尔·盖茨抵达北寻求加强在创新、全球减贫、公共卫药物研发、农村农业等领域和中国进一步合作。 |
由输入输出一起给算法让他学习。
构建指令数据集是重中之重的主要原因:
1)预训练语言模型往往蕴含着极其丰富的先验知识,而指令微调正是打开这个知识大门的钥匙,能够最大限度地帮助预训练语言模型回忆起先前学习过的知识,激活模型的能力。
2)指令数据集通过指令的形式指导模型的生成,能够提高预训练语言模型的泛化能力,使其在之前未做过的任务中能够表现出优秀的零样本推理能力。
3)指令数据集一般是人工构建和审核过的高质量数据集,其价值观与人类对齐,可以大幅度减少模型生成的内容出现种族歧视、色情暴力等与人类价值观冲突的情况。
名称 |
来源 |
简介 |
BELLE |
链家 |
由人工构建指令集,然后调用 OpenAI的API生成的内容构建的数据集。其数据丰富多样,包含 23 种数据类别,数据量达到 115万条 |
COIG |
智源研究院 |
包含了翻译数据(66 858条)、考试数据(63 532条、人类价值观对齐数据(34 471条 )、多轮对话数据( 13 6S3 条)、 LeetCode数据( 11 737条) |
Stanford Alpaca |
斯坦福大学 |
包含 52000条指令数据,基于 text-davinci-003 模型生成的内容构建的数据集,后续又增加了人工调整的中文版本 AIpaca Chinese |
Med-ChatGLM |
哈尔滨工业大学 |
哈尔工业大学健康能组团队通过 OpnAI 的 及医知图构建的中文医学领域指令数据集 |
基于人工反馈的强化学习
ChatGPT 的训练过程。
1.第一个阶段:SFT,即有监督微调
ChatGPT 使用 GPT-3.5-turbo 作为其有监督微调的底座模型。这批数据的总量不大,但是其种类丰富,包含了基于各个任务的多轮对话数据。
2.第二个阶段: 训练 RM
需要用户对 ChatGPT 针对同一个令输出的多个回复内容进行完整的排序,使得 ChatGPT 能够理解什么是真正用户满意的翔实、符合事实逻辑并且安全无害的回复内容。
3第三个阶段: 使用 PPO 算法更新 ChatGPT的参数
第三个阶段是一个强化学习过程,
ChatGPT 引入了基于人工反馈的强化学习,通过指令微调学习的方式,使得 ChatGPT 按照用户的指令行事,实现与用户的意图对齐。
思维链方法
思维链 (Chain of Thought, COT)被提出并被应在预训练+微调的方法提出后用到ChatGPT中,模型才开始具有比较强的推理能力。
思维链的工作原理是将复杂的逻辑推理问题,按照化繁为简思想化解为几个简单的问题,然后逐个解决,这样做的好处是使得生成过程有着更清晰的逻辑链路,并具备了一定的可解释性。
爸爸大明出差回来买了 30个苹果,两个孩子 (老大和老二已分配了 30个苹果,大明没有参与分配的过程,老大分得的苹果是老二的2倍。老二觉得不公平,于是向大明告状。大明觉得老大有些自私,不仅没爸爸和妈妈分配,还不照顾老二,给自己多分配了很多苹果。于是,大明决定老大一个小小的惩罚,并明确设置了分配规则,要求:给爸爸和妈妈一共分4个,然后在剩下的苹果中,老二分得的苹果要比老大多两个。请问在第分配的基础上,老大还需要给老二多少个苹果,才能达到大明的要求?
第一步:计算得到第一次分配后老大和老二各自有多少个苹果。这一步计算可以按以下思维逻辑继续分解:由于老大分得的苹果是老二的两倍,首把苹果分成三份,老大分得两份,老二分得一份。然后计算每一份的数量的总数为 30个,则一份为 30/3=10个。最后计算得到老大分得了两份20个,老二分得了一份,为 10个。
第二步:爸爸和妈妈需要分配4个,可以计算剩下的苹果数量为 30-4=26。
第三步:计算最终老大和老二的苹果数量。老二分得的苹果要比老大的两个,而剩下的总数为 26个。这句话可以按以下思维逻辑分解:如果去掉余的两个苹果,剩下的苹果应该等分为2份,那么老大最后的苹果数量(26-2)/2=12个,老二分得的苹果比老大的多两个,则老二的苹果数量12+2=14个。
第四步:最终计算得到老大应该给老二多少个苹果。在第一次分配之后老大的苹果数量为 20个,老二的苹果数量为 10个。在最终状态下,爸爸和妈分得的苹果数量为 4个,老大分得的苹果数量为 12个,老二分得的苹果数量为14个。那老大应该给老二 14-10=4个。
某个问题的解决方案可能不止一个,这就意味着思维链可能会有多条。
如果在学习中进一步增加多条思维链进行相互校验的逻辑,那么有助于提高模型的推理能力和精度。
若多条思维链计算的结果不一致,则有助于发现逻辑推理的问题,从而进行自学习,最终得到正确的答案。
思维链方法主要给 AI研究和应用带来以下 6 点启示
(1)化繁为简,逐步分解。
(2)引入多条思维链,既可以相互校验,又可以获得更多的信息,提高了模型的推理能力和精度。
(3)提供了一定的可解释性,更容易应用于对可信计算要求比较高的场景,比如金融场景、法律场景等。
(4)哲学思想包含了很多基础的方法论更多的哲学思想和 AI 结合,可能会带来AI新的突破。
(5)思维链推理简单且容易理解,与模型结合可以进一步拓展到其他复杂问题的场景。
(6)思维链思想可以结合其他理论,比如语义学习和语境学习等,从而进一步提高模型的逻辑推理能力。
集成学习
GPT-4采用了集成技术来提高建模效率和优化模型的效果
算法 |
优点 |
缺点 |
线性算法 |
简单、运行高效和可解释性强 |
无法有效地模拟复杂的非线性关系,在很多场景中性能一般 |
非线性算法 |
效果比较好,能被广泛地应用于复杂的业务场景中 |
复杂度高、计算量大、缺乏解释能 |
目前,常见的集成学习方法有以下4种”
(1)Bagging 方法。
(2)Boosting 方法。
(3)Stacking 方法。
(4)混合专家(Mixture of Experts,MOE) 方法。
第4章 看清 GPT 的进化史和创新点
版本 |
年 |
无标签数据数量 |
GPT-1 |
2018年6月 |
1.17亿个 |
GPT-2 |
2019年2月 |
15亿个 |
GPT-3 |
2020年6月 |
1750亿个 |
ChatGPT |
2022年12月 |
1750亿个 |
在 GPT-1 发布之前,传统自然语言处理领域的模型 (如LSTM 网络 )的训练方式一般是先随机初始化一组词向量参数,或者通过无监督的浅层神经网络(如 Word2vec )来训练一组词向量参数作为先验知识,然后搭建深层神经网络最后基于大批量高质量的有监督数据进行模型的训练。缺点:
(1)人力成本高。
(2)信息提取能力弱。
(3)并行计算能力差。
(4)领域迁移能力弱。
GPT-1 将模型的训练分为两个阶段:
第一个阶段通过大批量无标签文本数据构建一个初始的生成式语言模型。
第二个阶段基于各个有监督的自然语言处理任务,对第一个阶段构建好的语言模型进行微调。
GPT-1 采用了 Transformer 模型的解码器部分,包含了 12 层解码器
多头自注意力机制有两个方面的优势:
1.能够更好地利用 GPU 等设备资源进行并行计算,大幅度提高计算效率;
2.多头从不同的维度捕捉输入序列的特征,能够大幅度提高模型的信息表征能力及泛化能力。
无监督预训练的第一个阶段,GPT-1 采用了 BookCorpus 为预训练语料,BookCorpus共包含近20 万本图书,涉及文学、历史、政治等各种不同流派。
有监督微调的第二个阶段,可以将 GPT-1 迁移到各种不同的自然语言处理任务中进行微调。
1.Classification,即文本分类任务
代码语言:javascript
复制
起始符[Start]+输入序列[Text]+终止符[Extract]
2.Entailment,文本蕴含任务
代码语言:javascript
复制
起始符[Start]+前提条件[Premise]+分隔符[Delimiter]+假定结论[Hypothesis]+终止符[Extract]
3.Similarity,即相似度计算任务
判断一个自然语言文本[Text1]和另一个自然语言文本[Text2]是否相似。二分法:“相似”和“不相似”
代码语言:javascript
复制
特征向量1:起始符[Start]+文本 1[Text1]+分隔符[Delimiter]+文本 2[Text2]+终止符[Extract] 特征向量2:起始符[Start]+文本 2[Text2]+分隔符[Delimiter]+文本 1[Text1]+终止符[Extract]
4.Multiple Choice,即多项选择任务
代码语言:javascript
复制
上下文[Context] = 参考文本[Text]+问题[Question] 起始符[Start]+上下文[Context]+分隔符[Delimiter]+答案1[Answer1]+终止符[Extract] 起始符[Start]+上下文[Context]+分隔符[Delimiter]+答案2[Answer2]+终止符[Extract] … 起始符[Start]+上下文[Context]+分隔符[Delimiter]+答案n[Answern]+终止符[Extract]
GPT-1以巧妙的方式解决了传统模型(如LSTM 网络)存在的人力成本高信息提取能力弱、并行计算能力差、领域迁移能力弱等问题。
GPT-2
依旧采用 Transformer 模型的解码器部分,主要优化举措集中在训练数据量、网层数和下游任务等方面,
(1)数据集扩充。
·GPT-1预训练语料:BookCorpus及Common Crawl 作为,训练语料总量:5GB、 Token 总量约为 1.3 亿。
·GPT-2 预训练语料:WebText 、40GB、Token总量约为 15亿。
(2)词表扩充。与 GPT-I相比,GPT-2 采用了更多词表,其词表数量达到50257个。
(3)最大上下文窗口长度扩充。与 GPT-1 相比,GPT-2 的最大上下文窗口长度提高到了1024个 Token更高的上下文窗口长度上限意味着模型可以提高更长的上下文之间的理解能力。
(4)批处理大小 ( batch-size)扩充。GPT-1 的批处理大小设置为32个数据块;GPT-2的批处理大小设置为512个数据块。
(5) 网络层数扩充。
·GPT-1:12层 Transformer网络结构。
·GPT-2:48层 Transformer网络结构。
(6)去除有监督微调。
·GPT-1第二个选取了本分类、文本蕴含、相似度计算、多项选择任务进行有监督微调
·GPT-2 去除了有监督微调。
(7)增加层归一化。层归一化(Layer Normalization)方法是对一个输入序列的同一层的全部神经元进行归一化处理。
·解决梯度爆炸和梯度消失的问题。
·可以起到加速模型收敛的作用。
GPT-3
文本生成、多轮对话、机器翻译方面、智能问答具有优势。
5个不同来源的数据集,分别是
·Wikipedia:维基百科,300种语言的版本、总数量超过了 6100万条(2023年6月 20 日)。
·WebText2:WebText 的扩展版本、50GB 的部分进行预训练, Token 总量约为 190 亿个。
·Common Crawl:是对公开互联网数据进行爬取而形成的数据集, 570GB 的数据, Token4100亿个。
·Books1:21GB数据,Token 总量约为 120亿个。
·Books2:101GB,Token 总量约为 550 亿个。
750GB 的预训练数据,其 Token 总量约为5000亿个。
GPT-3 不需要对其参数进行微调或者更新,而是通过 Zero-shot、 One-shot、 Few-shot 三种形式进行推理预测。
GPT-3 采用了更大、更多样的预训练数据集和更多的网络层数,具有更强的并行计算能力。
GPT-3缺陷:
·无法保证生成的文章是否符合人类的价值观、是否有政治敏感和种族歧视的信息
·其长距离上下文理解能力不够强
·多轮对话能力有待提高。
GPT的创新点总结
GPT类预训练语言模型,包含 GPT-1、GPT-2、GPT-3、GPT-3.5、InstructGPT等
1、GPT 是第一个使用 Transformer 的大规模预训练语言模型。技术手段:
·双向多层的 Transformer
·大规模的无监督语料
·掩码语言建模进行预训练
·…
2、GPT 原创了 Zero-shot、 One-shot、 Few-shot 的推理方式。
3、GPT 原创性地使用了基于人工反馈的强化学习技术。
ChatGPT
·ChatGPT 补充了数十亿行的 GitHub 代码数据。我们知道,完整的工程代码的内部逻辑非常强,蕴含了一步一步解决问题的思路,这在很大程度上有助于 GPT 逻辑推理能力的形成。
·ChatGPT 在训练过程中使用了高质量的指令微调数据。 人类价值观对齐数据可以让 ChatGPT 拒绝回答与它不掌握的知识相关的内容,拒绝生成性别歧视、种族偏见、色情暴力等与人类价值观不符的内容。
·OpenAI 从始至终坚持“大力出奇迹”的理念。
总结
大模型被广泛应用有以下几个前提
·效果好
·效率高
·成本可控
目前,大模型在这几个方面还不够理想。