尽管 ChatGPT 像是一颗核弹,突然在全世界媒体上引爆了。但是,ChatGPT 并不是 OpenAI 天降神力直接横空出世的,而是 OpenAI 历经多年,不断迭代、不断优化模型的结果。 GPT 是 OpenAI 发布的一系列模型的总称。主要经历了 GPT 初代、GPT2.0、GPT3.0、GPT3.5、ChatGPT,目前已经有了 GPT4,未来还会有 GPT-n 等等,模型之间有很强的关联。这几个模型的关系如下图所示: 2-1.png ChatGPT 中的很多技术点,都是由前几代模型设计并运用的,学习 ChatGPT 技术原理,势必要学习了解早期 GPT 模型的发展脉络。若把 ChatGPT 比作一个健康聪明的青年人,那么早期的模型就是他的婴儿时期、青少年时期,GPT 的发展历程像是朝着模拟人类发展。 GPT 初代 早在 2018 年,OpenAI 制作了一个名为 GPT 的模型,也就是 ChatGPT 的婴儿阶段。这个 GPT 初代模型,在很多 NLP 的具体任务中取得了前所未有的优质效果。 它与谷歌发布的 Bert 模型(比 GPT 初代更加流行,效果更好),还有 ELMO 模型,一起将 NLP 带进了大规模神经网络语言模型(Large Language Model, LLM)时代。它们正式标志着 NLP 领域开始全面拥抱预训练的方式。 GPT 的语言建模 这个 GPT 初代模型具体做了什么,可以用下面的例子来说明: 请各位做一个句子补全:中国互联网 BAT 三巨头主要包括阿里、腾讯、________ 请问上述空格应该补写什么?有的人回答“百度”,有的人可能觉得“字节”也没错。但总不再可能是别的字了,不论填什么,这里都表明,空格处填什么字,是受上下文决定和影响的。 GPT 初代所做的事就类似上文的例子,从大规模的文本语料中,将每一条文本随机地分成两部分,只保留上半部分,让模型学习下半部分学习到底该填写什么,这种学习方法让模型具备了在当时看来非常强的智能。所谓语言模型(Language Model,LM),就是从大量的数据中学习复杂的上下文联系(语言模型的详解将在第 3 节中展开)。 语言模型的编解码 上述语言建模包含一条输入和一条输出。接下来,我们仔细想一个问题: 人的大脑是由上百亿个神经元有机构成的,当人看到一段文字之后,是如何转化相应的信息,存储在大脑中的呢?当人们脑海中形成一个想法或观点后,是如何转换相应的信息,通过语言文字表达出来的呢? 语言是一个显式存在的东西,但大脑是如何将语言进行理解、转化和存储的,则是一个目前仍未探明的东西。这个问题实际上表达了一个人脑运用语言的特点:人脑并不直接存储文字,而是将文字编码成某种神经元信号,再经过解码,形成想要表达的文字,表述出来。 编解码的概念广泛应用于各个领域,在 NLP 领域,模型操控语言一般包括三个步骤: 接受听到或读到的语言 -> 人的大脑理解 -> 输出要说的语言。 大脑理解语言这个过程,就是大脑将语言编码成一种可理解、可存储形式的过程,这个过程就叫做语言的编码( E ncoder) 。相应地,把大脑中想要表达的内容,使用语言表达出来,就叫做语言的解码( D ecoder) 。 GPT 系列模型都采用了类似的结构工作,如下图所示。 2-2.png 编解码具体结构介绍将在第 7 节展开。 自从 GPT 初代 和 Bert 模型开启大语言模型预训练大门之后,跟风效仿的改进模型也越来越多,比如 albert、ERNIE、BART、XLNET、T5 等等五花八门。最初的时候,GPT 的学习方式仅仅是根据上文补全下文,就可以让模型有较强的智能。那么,给 LLM 模型出其它的语言题型,应该也会对模型训练有极大的帮助。