书名:GPT图解大模型是怎样构建的
ISBN:978-7-115-62368-3
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 黄 佳
责任编辑 蒋 艳
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
人工智能(AI),尤其是生成式语言模型和生成式人工智能(AIGC)模型,正以惊人的速度改变着我们的世界。驾驭这股潮流的关键,莫过于探究自然语言处理(NLP)技术的深奥秘境。本书将带领读者踏上一段扣人心弦的探索之旅,让其亲身感受,并动手搭建语言模型。本书主要内容包括N-Gram,词袋模型(BoW),Word2Vec(W2V),神经概率语言模型(NPLM),循环神经网络(RNN),Seq2Seq(S2S),注意力机制,Transformer,从初代GPT到ChatGPT再到GPT-4等一系列突破性技术的诞生与演进。
本书将以生动活泼的笔触,将枯燥的技术细节化作轻松幽默的故事和缤纷多彩的图画,引领读者穿梭于不同技术的时空,见证自然语言处理技术的传承、演进与蜕变。在这场不断攀登技术新峰的奇妙之旅中,读者不仅能深入理解自然语言处理技术的核心原理,还能自己动手,从零开始搭建起一个又一个语言模型。
无论你是在校学生还是人工智能从业者,这本书都将成为一盏明灯,照亮你探索人工智能无限奥秘的道路。
写作时,时间流淌得很快。不知不觉,月已上中天,窗外灯火阑珊。
仰望苍穹,月色如水,宇宙浩瀚。每每想起人类已在月球上留下脚印,而今再度出发,就不由在心中感慨——如此有幸,能生活在这个时代。
其实,从来没有任何一种技术的突破,未经历过一次次失败,就能直接“降临”到人类的眼前。
人工智能(Artificial Intelligence,AI)技术,从诞生至今,其发展并不是一帆风顺的:盛夏与寒冬交错,期望和失望交融。
自然语言处理(Natural Language Processing,NLP)技术是如此。
ChatGPT和GPT-4亦是如此。
从N-Gram和Bag-of-Words开始,自然语言处理技术和模型在不断发展和演进,逐渐引入了更强大的神经网络模型(如 RNN、Seq2Seq、Transformer 等)。现代预训练语言模型(如 BERT和GPT[1])则进一步提高了 NLP 任务的处理性能,成为目前自然语言处理领域的主流方法。
[1] RADFORD A, NARASIMHAN K, SALIMANS T, et al. Improving language understanding by generative pre-training [EB/OL]. [2023-04-15]. https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf.
这一本小书,希望从纯技术的角度,为你梳理生成式语言模型的发展脉络,对从N-Gram、词袋模型(Bag-of-Words,BoW)、Word2Vec(Word to Vector,W2V)、神经概率语言模型(Neural Probabilistic Language Model,NPLM)、循环神经网络(Recurrent Neural Network,RNN)、Seq2Seq(Sequence-to-Sequence,S2S)、注意力机制(Attention Mechanism)、Transformer、BERT到GPT的技术一一进行解码,厘清它们的传承关系。
这些具体技术的传承关系如下。
■ N-Gram和Bag-of-Words:都是早期用于处理文本的方法,关注词频和局部词序列。
■ Word2Vec:实现了词嵌入方法的突破,能从词频和局部词序列中捕捉词汇的语义信息。
■ NPLM:基于神经网络的语言模型,从此人类开始利用神经网络处理词序列。
■ RNN:具有更强大的长距离依赖关系捕捉能力的神经网络模型。
■ Seq2Seq:基于 RNN 的编码器-解码器架构,将输入序列映射到输出序列,是Transformer架构的基础。
■ Attention Mechanism:使Seq2Seq模型在生成输出时更关注输入序列的特定部分。
■ Transformer:摒弃了RNN,提出全面基于自注意力的架构,实现高效并行计算。
■ BERT:基于Transformer 的双向预训练语言模型,具有强大的迁移学习能力。
■ 初代GPT:基于 Transformer 的单向预训练语言模型,采用生成式方法进行预训练。
■ ChatGPT:从GPT-3开始,通过任务设计和微调策略的优化,尤其是基于人类反馈的强化学习,实现强大的文本生成和对话能力。
■ GPT-4:仍基于Transformer架构,使用前所未有的大规模计算参数和数据进行训练,展现出比以前的AI模型更普遍的智能,不仅精通语言处理,还可以解决涉及数学、编码、视觉、医学、法律、心理学等各领域的难题,被誉为“通用人工智能的星星之火”(Sparks of Artificial General Intelligence)。
今天,在我们为ChatGPT、GPT-4等大模型的神奇能力而惊叹的同时,让我们对它们的底层逻辑与技术做一次严肃而快乐的探索。对我来说,这也是一次朝圣之旅,一次重温人工智能和自然语言处理技术70年间艰辛发展的旅程。
因此,我为一个轻松的序章取了一个略微沉重的标题:看似寻常最奇崛,成如容易却艰辛[2]。
[2] 出自宋代王安石的《题张司业诗》,意思是看似寻常的作品其实最不同凡俗,好像很容易做成,实则需要艰辛付出。
格物致知,叩问苍穹,直面失败,勇猛前行。
向伟大的、不断探索未知领域的科学家们致敬!
黄佳
2023年春末夏初月夜
本书由异步社区出品,社区(https://www.epubit.com)为您提供相关资源和后续服务。
本书提供如下资源:
■ 实例配套资源代码;
■ 实例数据集。
要获得以上配套资源,请在异步社区本书页面中点击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区(https://www.epubit.com),按书名搜索,进入本书页面,点击“发表勘误”,输入勘误信息,点击“提交勘误”按钮即可(见下图)。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
扫描下方二维码,您将会在异步社区微信服务号中看到本书信息及相关的服务提示。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。
如果您所在的学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”(www.epubit.com)是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作者与读者在线交流互动,以及传统出版与数字出版的融合发展。
“异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域40余年的发展与积淀。异步图书面向IT行业以及各行业使用IT技术的用户。
2月初的一天,乍暖还寒,天色已晚,咖哥正坐在桌前,喝着咖啡。
楼梯上传来踢踢踏踏的脚步声,来人是跑着上楼的。
小冰[1]推门而入:咖哥,我就知道你还在公司!这几天都炸锅了。老板给我们下了死命令:“第一,两个月内,‘雕龙一拍’必须上线,与ChatGPT展开竞争,我们要成为全球首个推出ChatGPT竞品的大厂。第二,厂内全部员工,无论之前技术背景如何,职务如何,必须在3周之内掌握NLP和Transformer的全部架构细节,为‘雕龙一拍’的训练……和……维护做出……应有的贡献!如果无法进入核心……算法设计团队,那么……每天至少要抽出4个工时做人工标注。”怎么办,我好歹是个……研究生,怎么也不想去……标注数据啊。那么,我又要……开始……突击学习了吗?你有没有……什么……好办法?
[1] 小冰和咖哥之前的故事详见《零基础机器学习》和《数据分析咖哥十话 从思维到实践促进运营增长》。
小冰呼哧带喘,说到最后已经是上气不接下气了。
咖哥:小冰,你来得正好。你看!我正要给你这样积极投身ChatGPT热潮的同学量身制作出一套入门……
小冰一看咖哥的电脑屏幕:嘿!咖哥正在和ChatGPT聊天呢(见下图)。
咖哥正在和ChatGPT聊天
而ChatGPT也真的给了咖哥他想要的内容,如下图所示。
ChatGPT为咖哥的新课程创作了一段开场白
于是,小冰和咖哥的新故事就这样开始了。
咖哥:小冰,在启程之前,我们先弄清楚前进的方向吧。你有没有思考过,你即将深入学习的ChatGPT和GPT-4的底层原理到底是什么?它们从何而来,又向着何方而去?
小冰:呦,咖哥。我还真的就只知道ChatGPT是OpenAI开发的一个非常强大的聊天机器人。除了聊天之外,还能辅助写代码,做科研,甚至画简单的示意图,如下图所示。GPT-4是它的升级版本,在功能上它们应该也差不多吧。
ChatGPT具有简单的绘图功能
咖哥:GPT-4可不是这么简单,小冰。以GPT-4为代表的大规模语言模型(Large-scale Language Model,LLM,也称大模型) 是使用前所未有的计算参数和海量数据进行训练得到的。
它们在各种领域和任务中表现出非凡的能力,挑战了我们对学习和认知的理解。GPT-4的强大,甚至让图灵奖获得者约书亚·本希奥(Yoshua Bengio)和特斯拉CEO埃隆·马斯克(Elon Musk)等人都感到恐惧。他们在千人公开信上联合署名,呼吁所有AI实验室停止研发比GPT-4更强大的模型。就连OpenAI的CEO萨姆·阿尔特曼(Sam Altman)自己也依旧不能完全解读GPT-4,只能通过不断问它问题,依据它的回答来判断它的“思路”。
微软研究院对GPT-4的早期版本进行了测评,认为它比之前的AI 模型(包括已经令我们惊艳的ChatGPT)通用性更强。在论文《通用人工智能的星星之火:GPT-4的早期实验》[2]中,学者们讨论了这些模型不断提升的能力及其影响力。论文中指出, GPT-4能够跨越任务和领域的限制,解决数学、编码、视觉、医学、法律、心理学等领域中新颖或困难的任务。此外,GPT-4通过将各种类型的任务统一到对话形式的人机交互接口,极大地提高了使用的便利性。这样,无论是谁,都能够通过简单的对话轻松地操作它(如下页图所示)。这种普适性和易用性,正是通用人工智能 (Artificial General Intelligence ,AGI)的显著特征。
[2] 这篇文章的英文题目为《Sparks of Artificial General Intelligence: Early experiments with GPT-4》。其中文译名很多,包括《通用人工智能的星星之火:GPT-4的早期实验》《点燃通用人工智能的火花: GPT-4的早期实验》等多个版本。
要知道,AGI一直是几代人工智能科学家追逐的最终梦想,也一度被认为是可望而不可即的“珠穆朗玛峰”。在GPT-4之前,没有任何一个AI模型被冠以AGI,也就是通用人工智能的标签。而现在,ChatGPT的初试啼声即得到了全人类的疯狂关注,GPT-4更以其严密的逻辑思辨能力和广泛适用性被认为是通用人工智能的早期版本。ChatGPT、GPT-4等大规模语言模型已经从方方面面开始重塑我们的学习、工作和生活。一个新的人类纪元已经开启, ChatGPT和GPT-4,毫无疑问将点亮未来更强大的通用人工智能的火花。
GPT可以用“写诗”的方式解题,也可以通过代码绘图
咖哥接着说:当然,在为人工智能走向通用化而心潮澎湃之际,让我们一起回顾一下它的来时路。看看这短短不到百年的时间,人工智能是如何一步步走到今天的。
人工智能这一概念可追溯到20世纪40年代和50年代,但它是在1956年的达特茅斯会议上成为一个独立的学科领域的。在这次会议上,许多计算机科学家、数学家和其他领域的研究者聚集在一起,共同探讨智能机器的发展前景。他们的目标是在计算机上实现人类智能的各个方面的应用,从而开创了现代人工智能研究的道路。从那时起,人工智能领域不断发展,涌现出众多理论、技术和应用。
不过,人工智能的发展并非一帆风顺,其核心技术——深度学习(Deep Learning),以及深度学习的基础——神经网络(Neural Network),曾经历过两次被称为“AI寒冬”的低谷期。下页图就是对以神经网络为主线的AI技术发展史做的一个梳理。
AI技术发展里程碑
小冰:是的,咖哥,这些内容你曾在《零基础学机器学习》中给我介绍过,这些AI技术发展里程碑,我都记忆犹新。
■ 阈值逻辑单元(Threshold Logic Unit): 最早可以追溯到1943年,由美国神经生理学家沃伦·麦克卡洛克(Warren McCulloch)和数学家沃尔特·皮茨(Walter Pitts)共同提出。阈值逻辑单元是一种简单的逻辑门,通过设置阈值来确定输出。它被认为是神经网络和人工智能领域的基石。
■ 感知器(Perceptron): 1952年的霍奇金-赫胥黎模型(Hodgkin-Huxley model)展示了大脑如何利用神经元形成神经网络。该模型通过研究电压和电流如何在神经元中传递,为神经元的动作电位提供了详细的生物物理学描述。基于这个模型带来的启发,弗兰克·罗森布拉特(Frank Rosenblatt)在1957年推出了感知器。它是第一个具有自我学习能力的模型,根据输入与目标值的误差调整权重,而且能进行简单的二分类任务。虽然感知器只是一种线性分类器,但是它具有重要的历史地位,是现代神经网络的雏形和起点。
■ 自适应线性神经元(Adaline): 自适应线性神经元是伯纳德·维德罗(Bernard Widrow)和特德·霍夫(Ted Hoff)在1960年发明的。它的学习规则基于最小均方误差,与感知器相似,但有更好的收敛性能。
■ 第一次AI寒冬——XOR问题(XOR Problem):1969年,马尔温·明斯基(Marvin Minsky)和西摩·佩珀特(Seymour Papert)在《感知器》(Perceptrons)一书中提出,单层感知器具有局限性,无法解决非线性问题(书中的XOR问题,异或问题就是一种非线性问题)。这一发现导致人们对感知器技术失望,相关的资金投入逐渐减少,第一次AI寒冬开始。
■ 多层反向传播算法(Multilayer Backpropagation):多层反向传播算法是一种训练多层神经网络的方法,由保罗·韦尔博斯(Paul Werbos)在1974年提出。这种方法允许梯度通过多层网络反向传播,使得训练深度网络成为可能。 大卫·鲁梅尔哈特(David Rumelhart)、杰弗里·辛顿(Geoffrey Hinton)和罗纳德·威廉姆斯(Ronald Williams)在1986年合作发表了一篇具有里程碑意义的论文,题目为《通过反向传播误差进行表示学习》(Learning Representations By Back-propagating Errors)。这篇论文详细介绍了反向传播算法如何用于训练多层神经网络。
■ 卷积神经网络(Convolutional Neural Network,CNN):卷积神经网络是一种特殊的深度学习模型,由杨立昆(Yann LeCun)在1989年提出。它使用卷积层来学习局部特征,被广泛应用于图像识别和计算机视觉领域。
■ 长短期记忆网络(Long Short-Term Memory,LSTM):长短期记忆网络是由谢普·霍赫赖特(Sepp Hochreiter)和于尔根·施米德胡贝(Jürgen Schmidhuber)在1997年提出的一种循环神经网络(Recurrent Neural Network,RNN)结构。LSTM通过引入门控机制缓解了RNN中的梯度消失和梯度爆炸问题,使得模型能够更好地捕捉长距离依赖关系,被广泛应用于自然语言处理和时间序列预测等任务。卷积神经网络和以LSTM为代表的循环神经网络的出现,代表着神经网络重回学术界视野。
■ 第二次AI寒冬——支持向量机(Support Vector Machines,SVM):支持向量机是由弗拉基米尔·瓦普尼克(Vladimir Vapnik)和科琳娜·科尔特斯(Corinna Cortes)于1995年提出的一种有效的分类方法。它通过最大化类别间的间隔来进行分类。SVM只是多种机器学习算法中的一种,然而,它的特殊历史意义在于——SVM在很多任务中表现出的优越性能,以及良好的可解释性,让人们再度开始怀疑神经网络的潜力,导致神经网络再度被打入“冷宫”,从此沉寂多年。
不过好在在这之后,我们进入了深度学习时代。深度学习是一种具有多个隐藏层的神经网络,可以学习复杂的特征表示。随着互联网和计算能力的发展,深度学习使得在更大的数据集和更复杂的模型上进行训练成为可能。而图形处理器(Graphics Processing Unit,GPU)的并行计算能力使得深度学习研究和应用的发展加速。基于深度学习的神经网络在21世纪初开始取得显著的成果。
咖哥:对的,小冰。你刚才总结得非常清晰,在深度学习时代,现象级的理论和技术突破层出不穷。
■ AlexNet:由亚历克斯·克里泽夫斯基(Alex Krizhevsky)、伊利亚·苏茨克维(Ilya Sutskever)和杰弗里·辛顿在2012年提出的深度卷积神经网络。它在ImageNet大规模视觉识别挑战赛中取得了突破性成果,标志着深度学习时代的开始。
■ Transformer:是由阿希什·瓦斯瓦尼(Ashish Vaswani)等人在2017年的论文《你只需要注意力》(Attention Is All You Need)中提出的一种神经网络结构。Transformer 引入了自注意力(Self-Attention)机制,摒弃了传统的循环神经网络和卷积神经网络结构,从而大幅提高了训练速度和处理长序列的能力,成为后续很多先进模型的基础架构。
■ ChatGPT和GPT系列预训练模型: ChatGPT 是基于 GPT(Generative Pre-trained Transformer)架构的一种大规模语言模型,由 OpenAI 开发,其首席科学家正是曾经参与开发AlexNet 的伊利亚·苏茨克维。ChatGPT和GPT-4分别于2022年底和2023年初问世之后,迅速在全球范围刮起了一阵AI风暴,其具有的强大的文本生成能力和理解能力,令世人震惊。不过,与过往的技术突破不同,ChatGPT和GPT系列预训练模型的成功应该归功于OpenAI团队及之前AI技术的积累,而不是某一个(或几个)科学家。
从AlexNet开始,到Transformer,再到今天的ChatGPT,人类一次一次被AI的能力所震撼。
AI技术有两大核心应用:计算机视觉(Computer Vision,CV)和自然语言处理(NLP)。小冰,你有没有注意到,在AI技术发展里程碑中,前期的突破多与CV相关,如CNN和AlexNet;而后期的突破则多与NLP相关,如Transformer和ChatGPT。
下面我们再对自然语言处理技术的发展进行一下类似的梳理。你会发现,自然语言处理技术演进过程包含一些独属于它的微妙细节。而对这个过程的体会,能够让你对自然语言处理技术有更深的领悟。
咖哥:自然语言处理是人工智能的一个子领域,关注计算机如何理解、解释和生成人类语言。那么,我们就要好好说一说“语言”(如下图)是怎么一回事。你有没有想过,为什么我说话,你能听懂?
小冰:你普通话讲得好呗。
“语言”是怎么一回事
咖哥哈哈一笑:你说得还真对。最早的语言啊,是以声音为媒介,通过话语进行传送的,使用同一种语言,就显得很重要。我国幅员辽阔,各地方言多如牛毛,所谓“十里不同音,百里不同俗”。为了方便交流,消除方言隔阂,国家推广使用普通话。不过其实啊,早在两千多年前,古人就研究过这个问题。古代版的普通话叫“雅言”。春秋时期,孔子的三千弟子来自五湖四海,这就必然需要孔子用一种被大家共同认可的语言来讲学。孔子会用什么语言讲学呢?《论语·述而第七》中记载:“子所雅言,《诗》、《书》、执礼,皆雅言也。”
当然,口头传播信息有明显的缺点,信息非常不易积累,也很难传播,所以原始人类开始使用结绳、刻契、图画的方法辅助记事,后来又用图形符号来简化、取代图画。当图形符号简化到一定程度,并形成与语言的特定对应时,早期的文字就形成了(见下页图)。无论是最古老的象形文字、楔形文字,还是甲骨文,以及现代文字,它们的作用都是承载信息。
早期的文字
没有口头话语,没有书面文字,我们就无法沟通。所以,语言是信息的载体。口头话语和书面文字都是语言的重要组成元素。
有了语言,就有了信息沟通的基础。不过,除了语言这个信息载体之外,我们还需要在信息的通道中为语言编码和解码。一个只说英语的人,面对一个听不懂英语的中国人,他们虽然都使用语言,但是不能相互解码,所以无法沟通。同理,计算机也不能直接理解人类的自然语言。因为缺少编码和解码的过程。因此,要让计算机理解我们人类的语言,就要对语言进行编码,将其转换成计算机能够读懂的形式。
而这个编码和解码的任务,可以简化成如下图所示的简化的通信模型。
简化的通信模型
上图中,信息的发送人把想要发送的信息通过一种编码方式(绘画、文字、声音等)进行编码,然后通过信道把被编码后的信息传给接收人,接收人对其进行解码,从而获取信息的内容。
小冰:上面这张图,要说讲的是从英文到中文的翻译过程,我能理解;要说是将电话、电报等电信号转换成声音和文字的过程,我也能懂;但我不明白的是,ChatGPT怎么就能理解人类的语言了呢?
咖哥: 对了,NLP的核心任务,就是为人类的语言编码并解码,只有让计算机能够理解人类的语言,它才有可能完成原本只有人类才能够完成的任务(见下图)。
NLP是人类和计算机沟通的桥梁
因此我们可以说:NLP就是人类和计算机之间沟通的桥梁!
咖哥:NLP技术的演进过程可以粗略地分为4个阶段,如下图所示。本节对应地使用了4个词语来概括它们,分别是起源、基于规则、基于统计、深度学习和大数据驱动。
NLP技术演进史
■ 起源:NLP的起源可以追溯到阿兰·图灵在20世纪50年代提出的图灵测试。图灵测试的基本思想是,如果一个计算机程序能在自然语言对话中表现得像一个人,那么我们可以说它具有智能。从这里我们可以看出,AI最早的愿景与自然语言处理息息相关。NLP问题是AI从诞生之日起就亟须解决的主要问题。
■ 基于规则:在随后的数十年中,人们尝试通过基于语法和语义规则的方法来解决NLP问题。然而,由于规则很多且十分复杂,这种方法无法涵盖所有的语言现象。基于规则的语言模型的简单示例如下图所示。
基于规则的语言模型
■ 基于统计: 1970年以后,以弗雷德里克·贾里尼克(Frederick Jelinek)为首的IBM科学家们采用了基于统计的方法来解决语音识别的问题,终于把一个基于规则的问题转换成了一个数学问题,最终使NLP任务的准确率有了质的提升。至此,人们才纷纷意识到原来的方法可能是行不通的,采用统计的方法才是一条正确的道路。因此,人们基于统计定义了语言模型(Language Model,LM):语言模型是一种用于捕捉自然语言中词汇、短语和句子的概率分布的统计模型。简单来说,语言模型旨在估计给定文本序列出现的概率,以帮助理解语言的结构和生成新的文本。
■ 深度学习和大数据驱动: 在确定了以统计学方法作为解决NLP问题的主要武器之后,随着计算能力的提升和深度学习技术的发展,大数据驱动的NLP技术已经成为主流。这种技术使用深度神经网络(Deep Neural Network,也就是深层神经网络)等技术来处理海量的自然语言数据,从而学习到语言的复杂结构和语义。目前的大型预训练语言模型,在很多NLP任务上的表现甚至已经超过人类,不仅可以应用于语音识别、文本分类等任务,还可以生成自然语言文本,如对话系统、机器翻译等。
不难发现,基于规则和基于统计的语言模型,是NLP技术发展的关键节点,而大规模语言模型的诞生,又进一步拓展了NLP技术的应用范围。
小冰问道:经常听到语言模型这个词。到底什么是语言模型?
咖哥:刚才说了嘛,语言模型是一种用于计算和预测自然语言序列概率分布的模型,它通过分析大量的语言数据,基于自然语言上下文相关的特性建立数学模型,来推断和预测语言现象。简单地说,它可以根据给定的上下文,预测接下来出现的单词。语言模型被广泛应用于机器翻译、语音识别、文本生成、对话系统等多个NLP领域。常见的语言模型有N-Gram模型、循环神经网络(RNN)模型、长短期记忆网络(LSTM)模型,以及现在非常流行的基于Transformer架构的预训练语言模型(Pre-trained Language Model,PLM),如BERT、GPT系列等,还有你正在学习的ChatGPT。
小冰:你这么说我还是不懂,能举个例子吗?
咖哥:你看,我这里有一堆词。
咖哥 一本书 学 零基础 机器学习 写了
那么,假设现在给我们一个自然语言处理任务,就是看看这些词的各种组合中,哪一个组合能够形成一个可以被理解和接受的句子。当然可能有很多组合,下面我们列出其中的两个组合。
句子1:咖哥零基础学一本书写了机器学习
句子2:咖哥写了一本书零基础学机器学习
哪个更像一个完整的句子?相信你能够给出答案。
但是,AI怎么做判断呢?这就需要基于统计的语言模型的帮助了。根据贾里尼克的假设:一个句子是否合理,取决于其出现在自然语言中的可能性的大小。
也就是说,假设我的语料库足够大,而句子2曾经在这个语料库中出现过,那么AI当然会说:OK,句子2更好,因为它在自然语言中存在的可能性大,概率高,如下图所示。我经常看到别人这样说,所以这样说应该正确(当然,概率高的事情可不一定百分之百正确,这是强大的大规模语言模型偶尔也会出错的主要原因,这是它的死穴)。这就是基于统计的语言模型的核心思路。这里画重点,你应该看得出来基于统计的语言模型是由数据驱动的,这就是它相对于基于语法和语义规则的NLP技术的优越性。
句子2正确的概率比较高
小冰:嗯,这样解释,我就有点明白了。
咖哥:别着急,我还没说完。
假设S表示一个有意义的句子,由一连串按特定顺序排列的词W1, W2,..., Wn组成。目标是求S在文本中出现的可能性,也就是P(S)。如果你统计了人类有史以来所有的句子,就可以得到P(S)[3]。
[3] 当然,这只是一种理想情况,实际上我们只能够统计可以搜集到的语料库(Corpus)中的句子。
我们可以利用模型来估算P(S):
P(S) = P(W1, W2, …, Wn)
利用条件概率公式计算P(W1, W2, …, Wn):
P(W1, W2, …, Wn)=P(W1)·P(W2|W1)·P(W3|W1, W2)…P(Wn|W1, W2, …, Wn-1)
根据马尔可夫假设(任意一个词出现的概率只同它前面的那一个词有关),就有:
P(W1, W2,…, Wn)≈P(W1)・P(W2|W1)·P(W3|W2)…P(Wn|Wn-1)
那么,通过条件概率公式和马尔可夫假设,你就可以得到一个句子是不是人类语言的概率!
基于统计的语言模型具有以下优点。
(1)可扩展性:可以处理大规模的数据集,从而可以扩展到更广泛的语言任务和环境中。
(2)自适应性:可以从实际的语言数据中自适应地学习语言规律和模式,并进行实时更新和调整。
(3)对错误容忍度高:可以处理错误或缺失的数据,并从中提取有用的信息。
(4)易于实现和使用:基于统计,并使用简单的数学和统计方法来搭建语言模型。
基于统计的语言模型(统计语言模型)其实出现得很早,但是它的发展历程和AI技术很类似,虽然有了理论,但是由于网络结构和数据量的局限,早期的统计语言模型并没有实现突破性的应用。这些语言模型存在不少缺点,例如过拟合、无法处理文本间长距离依赖性、无法捕捉微妙的语义信息等。
好在经过几十年的探索和积累,NLP领域也开始出现更高级的思路和算法。能够解决上述这些问题的技术和语言模型在深度学习时代开始逐渐涌现。
统计语言模型发展的里程碑如下图所示。
统计语言模型发展的里程碑
图中上半部分是语言模型技术的进展;下半部分则是词向量(词的表示学习)技术的进展。其中,词向量表示的学习为语言模型提供了更高质量的输入信息(词的向量表示)。图中涉及的技术具体介绍如下。
■ 1948年,著名的N-Gram模型诞生,思路是基于前N-1个项目来预测序列中的第N个项目,所谓的“项目”,就是词或者短语。
■ 1954年的Bag-of-Words模型是一种简单且常用的文本表示方法,它将文本表示为一个单词的集合,而不考虑单词在文本中的顺序。在这种表示方法中,每个单词都可以表示为一个单词频率向量,对应一个特定的维度,向量的值表示该单词在文本中出现的次数。
■ 1986年出现的分布式表示(Distributed Representation)是一种将词或短语表示为数值向量的方法。在这种表示法中,单词的语义信息被分散到向量的各个维度上,因此可以捕捉到单词之间的相似性和关联性。分布式表示主要基于单词在文本中的上下文来构建,因此具有较多的语义和句法信息。这种表示方法有助于解决传统Bag-of-Words模型和独热编码(One-Hot Encoding)中的词汇鸿沟问题(词汇歧义、同义词等)。
■ 2003年的神经概率语言模型则提出使用神经网络来学习单词之间的复杂关系,它是后续的神经网络语言模型,比如CNN、RNN、LSTM的思想起点。
■ 2013年出现的另外一个重要的里程碑,即Word2Vec(W2V),是一种通过训练神经网络模型来学习词汇的分布式表示,简单而又高效。Word2Vec有两种主要的架构:连续词袋(Continuous Bag of Words,CBOW)模型和Skip-Gram模型。CBOW模型通过预测单词上下文(周围词)的目标单词来学习词向量,而Skip-Gram模型则通过预测目标单词周围的单词来学习词向量。Word2Vec生成的词向量可以捕捉到单词之间的相似性、语义关联及词汇的句法信息。其思想和训练结果被广泛用于许多NLP模型中。
■ 2018年之后,基于Transformer的预训练语言模型一统江湖,在自然语言处理领域的许多任务中成为主导方法。它通过更大的语料库和更加复杂的神经网络体系结构来进行语法语义信息的学习,这就是语言模型的预训练过程。这些模型在具体NLP任务(如机器翻译、问答系统、文本分类、情感分析、文本生成等任务)上进行微调后,都表现出色,并且不断刷新各种基准测试的最高分数。如今,许多研究者和工程师都在使用这些预训练语言模型作为他们自然语言处理项目的基础。
因此,14页图中的每一个节点,都为后续技术的诞生打下了基础,因此也成为本书的讲解脉络。语言模型的进化,驱动了NLP技术的发展,而其中的关键点是从基于规则的模型到基于统计的模型的跃迁,以及海量语料库训练出来的大模型的使用。
以BERT(Bidirectional Encoder Representations from Transformers)为代表的基于Transformer架构的预训练语言模型一登场就引起了大量的关注。有了预训练模型,很多一度不能解决的问题都得到了解决。
小冰:我们厂里的人和你都一直在说的这个Transformer究竟是什么?预训练又指什么?
咖哥:Transformer是几乎所有预训练模型的核心底层架构,也是本课程的核心内容,现在暂不讲述它的技术细节。自然语言处理中的预训练,则通常指在大量无标注文本数据上训练语言模型。预训练所得的大规模语言模型也被叫作“基础模型”(Foundation Model 或Base Model)。在预训练过程中,模型学习了词汇、语法、句子结构及上下文信息等丰富的语言知识。这种在大量数据中学到的知识为后续的下游任务(如情感分析、文本分类、命名实体识别、问答系统等)提供了一个通用的、丰富的语言表示基础,为解决许多复杂的NLP问题提供了可能。
在预训练模型发展过程的早期,BERT毫无疑问是最具代表性,也是影响力最大的预训练语言模型。BERT通过同时学习文本的上下文信息,实现对句子结构的深入理解。BERT之后,各种大型预训练模型如雨后春笋般地涌现(见下图),自然语言处理领域进入了一个新的时代。这些模型推动了NLP技术的快速发展,为解决许多以前难以应对的问题提供了强大的工具。
各种预训练语言模型
对图中各种预训练语言模型的简单解释如表0.1所示(按照模型出现的先后顺序排列)。
表0.1 各种预训练语言模型的说明
编号 |
模型名称 |
发布年份 |
描述 |
特性 |
---|---|---|---|---|
1 |
ELMo |
2018 |
基于双向长短期记忆网络(BiLSTM)的词嵌入方法 |
学习文本中的上下文信息,生成动态的词向量表示(非Transformer架构) |
2 |
GPT |
2018 |
OpenAI开发的生成式预训练模型 |
单向Transformer架构,关注预测下一个词的任务 |
3 |
BERT |
2018 |
基于Transformer的预训练模型 |
同时学习文本的上下文信息,深入理解句子结构 |
4 |
GPT-2 |
2019 |
GPT的改进版本 |
使用更大的模型和更多的数据进行预训练 |
5 |
RoBERTa |
2019 |
在BERT基础上进行优化的预训练模型 |
调整训练策略、数据处理和模型架构,提高训练速度和性能 |
6 |
ALBERT |
2019 |
轻量级 BERT |
减少参数数量和计算成本,保持高性能 |
7 |
T5 |
2019 |
文本到文本迁移Transformer |
将所有 NLP 任务视为文本到文本的问题,进行端到端的训练和微调 |
8 |
Grover |
2019 |
生成式预训练模型 |
目标是检测和生成新闻文章中的虚假信息,学习了大量新闻的编写方式和结构 |
9 |
ELECTRA |
2020 |
高效学习精确分类代币替换的编码器 |
使用生成-判别框架进行预训练,提高训练效率 |
10 |
GPT-3 |
2020 |
第三代生成式预训练 |
更大的模型和更多的数据,具有强大的生成能力和零样本学习能力 |
11 |
BART |
2020 |
双向自回归 Transformer |
结合了编码器-解码器结构和自回归预训练,适用于生成任务和其他 NLP 任务 |
12 |
MedBERT/SciBERT |
2020 |
针对医学和科学领域的 BERT 变体 |
使用领域专业语料库进行预训练,以提高完成特定领域任务的性能 |
13 |
DeBERTa |
2021 |
带有解耦注意力的解码增强 BERT |
凭借解耦注意力和相对位置编码提高性能 |
14 |
ChatGPT |
2022 |
基于GPT-3的聊天机器人 |
在GPT-3的基础上进行了额外的微调,以便更好地处理聊天场景 |
15 |
GPT-4 |
2023 |
是GPT系列的最新一代模型 |
具有更大的模型容量和更多的数据,以及更强的生成和推理能力 |
当然,现今预训练模型的发展趋势是参数越来越多,模型也越来越大(见下页图),训练一次的费用可达几百万美元。巨大的资金和资源投入,只有世界顶级“大厂”才负担得起,普通的学术组织和高等院校很难在这个领域继续引领科技突破,这种现象开始被普通研究人员所诟病。
参数越来越多,模型越来越大
不过,话虽如此,大型预训练模型的确是应用人员的好消息。因为,经过预训练的大模型所习得的语义信息和所蕴含的语言知识,很容易向下游任务迁移。NLP应用人员可以根据自己的需要,对模型的头部或者部分参数进行适应性的调整,这通常涉及在相对较小的有标注数据集上进行有监督学习,让模型适应特定任务的需求。这就是对预训练模型的微调(Fine-tuning,有时也译为精调)。微调过程相对于从头训练一个模型要快得多,且需要的数据量也要少得多,这使得NLP应用人员能够更高效地开发和部署各种NLP解决方案(如下图所示)。
“预训练+微调大模型”的模式
这种“预训练+微调大模型”的模式优势明显。首先,预训练模型能够将大量的通用语言知识迁移到各种下游任务上,作为应用人员,我们不需要自己寻找语料库,从头开始训练大模型,这减少了训练时间和数据需求。其次,微调过程可以快速地根据特定任务进行优化,降低了模型部署的难度。最后,“预训练+微调大模型”的模式具有很强的可扩展性,应用于各种NLP任务都很方便,大大提高了NLP技术在实际应用中的可用性和普及程度,确实给NLP应用人员带来了巨大的便利。
咖哥:不过,小冰,有一点你必须知道,近年来,随着GPT这种生成式大型预训练模型的突飞猛进,“预训练+微调大模型”的使用模式有被一种称为“提示”(Prompt)或者说“指令”(Instruct)的使用模式所取代的趋势。
Prompt模式和Instruct模式都基于这样一种思想:在训练阶段,这些模型通过学习大量的文本数据,掌握了语言的结构、语法和一定程度的语义知识。那么,在应用阶段,通过在输入中提供恰当的信息和指导,可以引导大型预训练模型(如GPT-3)生成相关性更强且更有用的输出。这种方法可以看作与模型进行一种“对话”,用户提供输入(Prompt或Instruct),然后模型根据输入生成相应的输出。
下面这张图来自卡内基-梅隆大学某研究团队发表的一篇有关Prompt模型的综述文章[4],它形象地描述了在几个预训练模型上使用Prompt模式的方法:通过提供合适的输入,用户可以引导模型生成符合特定目标的输出。
[4] LIU P, YUAN W, JIANG Z, et al. Pre-train, prompt, and predict: A systematic survey of prompting methods in natural language processing [J]. ACM Computing Surveys, 2022: 55(9), Article No. 195, 1-35.
Prompt:想让模型做什么?有话直说[5]
[5] 图中的BERT、BART和ERNIE都是预训练语言模型,同时也都是卡通人物的名字。其中BART由Facebook AI Research于2019年推出,ERNIE是百度研究院于2019年推出的。
用我自己的话来说就是,大模型本身就是知识库,里面蕴含了你所需要的信息,不一定非得微调才能解决问题,但是你得知道怎么才能把它里面的知识“调”出来。
咖哥发言
提示工程(Prompt Engineering)已经不再是一个新鲜名词了,它能“有效地与人工智能沟通以获得你想要的东西”。大多数人都不擅长提示工程,然而,它正在成为一项越来越重要的技能……
不好的输入很大程度上意味着不好的输出。因此,提示工程师这个职业应运而生。他们主要负责设计和优化模型的输入(即提示或指令),以引导模型生成满足特定目标的输出。当然,提示工程师需要深入理解特定任务的需求和目标,对任务背景和领域知识具有一定程度的了解,以确保输入符合任务的实际需求,设计出有效的提示或指令。而且,一个提示工程师还需要具有良好的沟通和协作能力。
小冰:那么咖哥,Prompt和Instruct这两种模式应该也有一些不同之处吧。
咖哥:是的。Prompt和Instruct这两种模式在输入的类型和任务的性质上有区别(如下图所示)。
Prompt和Instruct模式
■ Prompt模式:输入通常是一个词或短语,模型需要根据这个提示生成自然且连贯的文本。这种方式适用于生成式任务,如文本生成、文章摘要等。例如,当输入“从前”这个提示时,语言模型返回“有个山,山里有个庙……”
■ Instruct模式:输入是一条明确的指令,要求模型完成特定任务。这种方式适用于那些需要明确指示的任务,如回答问题、解释概念等。例如:当输入“请给我讲个故事”时,语言模型返回“从前有个山,山里有个庙,庙里有个咖哥给小冰、小雪上课……”
小冰:那么你能否总结一下Prompt/Instruct模型和“预训练+微调大模型”模型的异同?
咖哥:先说两者的相似之处。首先,两种模型都依赖于大型预训练模型(如GPT、BERT等),这些模型在大规模无标注文本数据上进行训练,以学习丰富的语言知识和通用表示。其次,两种模型都利用了预训练模型的迁移学习能力,在具体的下游任务上使用预训练好的模型,从而减少了训练时间和数据需求。
不同之处咱们列表看看(见表0.2)。
表0.2 “预训练+微调大模型”模式与Prompt/Instruct模式的不同之处
特点 |
“预训练+微调大模型”模式 |
Prompt/Instruct模式 |
---|---|---|
微调过程 |
在下游任务上进行微调以适应需求 |
不经过微调,设计合适的提示或指令生成输出 |
学习方式 |
在有标注数据集上进行有监督学习 |
通常不需要有标注数据 |
任务适应性 |
通过微调实现较高的任务适应性 |
依赖提示,任务适应性可能较低 |
灵活性 |
需要针对每个任务进行微调 |
灵活性更高,不需要微调,可能需要尝试和纠错 |
总的来说,这两种模型都利用了预训练模型的强大能力,但它们在实现具体任务时采用了不同的策略。“预训练+微调大模型”模式通过在特定任务上对模型进行微调,使模型更加精确地适应任务需求;而Prompt/Instruct模式则直接利用预训练模型的生成能力,通过设计合适的提示来解决问题。选择哪种模型取决于具体的任务需求、可用数据,以及具体的任务对精确性和灵活性的需求。
小冰:咖哥,谢谢你把预训练模型的诞生、发展和使用方式细细捋了一遍,这样我就对大模型有了宏观的认识。下面,你能不能把GPT的发展脉络梳理出来呢?
咖哥:当然可以。
刚才我们说了,初代的GPT和BERT几乎是同时出现的,GPT比BERT出现得稍早一些。GPT的全称是Generative Pre-Training, 和之后的BERT模型一样,它的基本结构也是Transformer。GPT的核心思想是利用Transformer模型对大量文本进行无监督学习,其目标就是最大化语句序列出现的概率。
小冰:咖哥,BERT和GPT这两个模型都是“预训练”模型,它们到底怎么训练出来的,有什么不同呢?
咖哥:嗯,知道它们之间的不同点,对你理解语言模型的本质很有好处。鉴于你是初学者,我将用你能够理解的方式来讲解二者的异同,你看看下面这张图。
BERT和GPT的预训练过程比较
BERT的预训练过程就像是做填空题。在这个过程中,模型通过大量的文本数据来学习,随机地遮住一些单词(或者说“挖空”),然后尝试根据上下文来预测被遮住的单词是什么(这是双向的学习)。这样,模型学会了理解句子结构、语法及词汇之间的联系。
GPT的预训练过程则类似于做文字接龙游戏。在这个过程中,模型同样通过大量的文本数据来学习,但是它需要预测给定上文的下一个单词(这是单向的学习)。这就像是在一个接龙游戏中,你需要根据前面的单词来接龙后面的单词。通过这种方式,GPT学会了生成连贯的文本,并能理解句子结构、语法及词汇之间的关系。
上面两个预训练模型实现细节上的区别,我们留待后续实战部分中详述。不过,我要强调一点,就是二者相比较,GPT更接近语言模型的本质,因为它的预训练过程紧凑且有效地再现了自然语言生成的过程。
所以,虽然BERT模型比较“讨巧”,通过双向的上下文学习增强了语言模型的理解能力,但是语言模型的核心任务是为给定的上下文生成合理的概率分布。在实际应用中,我们通常需要模型根据给定的上下文生成接下来的文本,而不是填充已有文本中的空白部分。
而GPT正是通过从左到右逐个预测单词,使得模型在生成过程中能够学习到自然语言中的连贯表达、句法和语义信息。在大规模预训练模型发展的初期,它没有BERT那么耀眼,不过,它后来居上,为ChatGPT的横空出世打下了强大的基础。
咖哥:简单讲解了ChatGPT的原始模型GPT的天然优势之后,我们再来谈它背后的公司——OpenAI的起步和发展。OpenAI是个非常年轻的公司,比你小冰还要小得多。
OpenAI成立于2015年,由众多知名创业者和科技领域的引领者共同发起,包括埃隆·马斯克、PayPal联合创始人彼得·蒂尔(Peter Thiel)和美国科技孵化器Y Combinator总裁萨姆·阿尔特曼等。OpenAI的宗旨是通过与其他研究机构和研究人员的开放合作,将其专利和研究成果公之于众,从而推动人工智能技术的发展和进步。
不过,今天的OpenAI已经不再是一个纯粹提供开源模型的公司。ChatGPT、GPT-4训练成本高昂,OpenAI已经逐渐走向盈利模式,使用这些模型的人需要为此支付一定的费用。
下图所示是OpenAI成立以来的大事记。
OpenAI成立以来的大事记
■ 2015年,埃隆·马斯克、彼得·蒂尔、萨姆·阿尔特曼等人联合创立OpenAI。
■ 2018年,OpenAI研发出了名为Five的人工智能选手,成功在Dota 2游戏中战胜了人类选手。同年,自然语言处理模型初代GPT发布。
■ 2019年,微软向OpenAI投资了10亿美元,并获得了OpenAI技术的商业化授权。
■ 2020年,发布OpenAI API,通过向外界提供AI能力,开始实施商业化运营。
■ 2022年11月30日,OpenAI发布了ChatGPT,一鸣惊人。
■ 2023年1月中旬,微软再次向OpenAI投资100亿美元。紧随其后的2月8日,微软发布了集成了ChatGPT的新一代搜索引擎Bing。
■ 2023年4月,GPT-4问世,把大型预训练模型的能力推到新高度,我们直奔AGI而去……
未完,待续……
ChatGPT是从初代GPT逐渐演变而来的。在进化的过程中,GPT系列模型的参数数量呈指数级增长,从初代GPT的1.17亿个参数,到GPT-2的15亿个参数,再到GPT-3的1750亿个参数。模型越来越大,训练语料库越来越多,模型的能力也越来越强。GPT的发展过程如下图所示。
GPT的进化史
最早发布的ChatGPT是在GPT-3.5的基础上训练出来的。在从GPT-3迈向ChatGPT的过程中,技术进展主要集中在基于聊天场景的微调、提示工程、控制性能(Controllability,控制生成文本的长度、风格、内容等),以及安全性和道德责任等方面。这些进步使得ChatGPT在聊天场景中表现得更加出色,能够为用户提供更好的交互体验。
在大型预训练模型的发展过程中,研究人员发现随着模型参数数量的增加和训练语料库的扩充,大模型逐渐展现出一系列新的能力。这些能力并非通过显式编程引入的,而是在训练过程中自然地呈现出来的。研究人员将这种大模型逐步展示出新能力的现象称为“涌现能力”(Emergent Capabilities)。
发展到GPT-4这个版本后,大模型的能力更是一发不可收拾,它能够理解图像,能够接受图像和文本输入,也就是多模态输入,输出正确的文本回复;它具有超长文本的处理分析能力,甚至能够理解2.5万字的长文本;它能够进行艺术创作,包括编歌曲、写故事,甚至学习特定用户的创作风格;GPT-4在多项考试中也展现出了强大的实力,其在模拟律师资格考试中的成绩位于前10%,这比起GPT-3.5的成绩(后10%)有了大幅度的提高。
好了小冰,说到这里,你已经从宏观上对NLP的发展、大型预训练模型的发展,甚至从ChatGPT到GPT-4的发展有了一定的理解,而我们这个课程的框架也呼之欲出了。在后面的课程中,我要循着自然语言处理技术的演进过程,给你讲透它的技术重点,并和你一起实际操练一番,一步一步带你学透GPT。
那么,精彩即将开始……