扫码阅读
手机扫码阅读

AIGC|万字长文!带你了解AI大模型技术演进

254 2024-03-14

本期摘要

AI大模型作为人工智能跨入通用智能的里程碑技术,在互联网时代留下了浓墨重彩的一笔。但是AI大模型技术并非突然出现的,而是经过了一段漫长的演进过程。只有了解了技术的演进历程,才能帮助我们更好的迈向基于大模型的AI时代。

基于此,在【云基地AI技术创新大赛】的AI系列通识课程培训中,云基地资深后端开发工程师郭胜为我们分享了《AI大模型技术演进》。

以下根据分享内容整理而成。

分享者

郭胜 | 资深后端开发工程师

01

AI的起源

在下面这张图中,我们可以看到两个人物:图中左边的人物是一位演员,他出演了一部名为《模仿游戏》的电影。而这部电影实际上讲述的是图中右边的人物,他就是是人工智能之父图灵(Alan Turing)。

图灵的一生较为短暂,但是所取得的成就却是非常伟大的。他生活在二战时期,电影《模仿游戏》讲述的是图灵的第一个重要成就,即他如何破译德军的密码,帮助他们在二战中取得胜利。

他的存在对于人工智能的持续演进和发展起到了重要作用。除了破解德军密码外,他还进行了其他一些重要的工作,例如创建了大型计算机和巨型计算机等等。

那么为什么我们要谈论图灵呢?因为他进行了一项非常著名的实验,即图灵试验。

//图灵试验

图灵实验是人工智能领域中的一个重要实验,旨在测试机器是否能够表现出与人类相似的智能。这项实验的基本过程是将被测试的人与一台机器分隔开来,被测试的人无法确定自己所提问的对象是人还是机器。他可能会提出一些问题,然后由这个人来决定回答是来自人类还是机器。通过这种方式,可以根据回答来判断是否存在将机器回答误判为人类回答的情况。

尽管图灵实验看似简单,但它对于人工智能领域的发展具有重要意义。通过这个实验,我们可以评估机器是否能够模拟人类的智能,并且在提升机器智能的过程中提供了一个标准。图灵实验的出现,不仅推动了人工智能的研究和发展,也引发了对于智能和意识本质的深入思考。

在图灵实验中,一个重要的指标是“70%”。这个指标表示如果机器的回答能让提问者有70%的概率认为回答来自人类而非机器,那么就可以说机器通过了图灵测试。当然,这个指标是在上世纪五十年代确立的,随着技术的进步,现在的机器要达到这个指标应该会更容易一些。

用一个简单的例子来说明。如果你问这个机器人:“你会下国际象棋吗?”它可能第一次回答:“是的,我会下。”如果你再问一次:“你会下国际象棋吗?”一个机器人可能还会回答:“是的”如果再次问,它仍然会回答:“是的。”

按道理来讲,它的回答是正确的。但是为什么我们觉得它是机器人而不是人工智能呢?

这是因为判断标准不仅仅是正确性,还有其他因素在起作用。

我们再来看另一个情况,假设这个回答者是一个人。你问他:“你会下国际象棋吗?”他第一次回答会说:“是的,没有问题。”但是如果你第二次问他的时候,他会说:“是的,我不是已经说过了吗?”如果你再反复问他,他就会说:“你烦不烦?你干嘛老是提同样的问题?”

大家有没有发现,他的第三个回答其实是错误的?但是我们仍然会知道,这是一个人类的回答。

这是因为人工智能是一个复杂的交叉学科,它涉及到计算机科学、数学、心理学、哲学、推理、生物学和社会学等多个领域。人工智能不仅仅是简单的对和错,它需要深入的科学知识和理解。

图灵实验是一个重要的标志性实验,用于测试机器是否能够表现出与人类相似的智能。然而,正确回答问题并不意味着机器具备人工智能,因为人工智能还涉及到推理、哲学等更高级的思维能力。

此外,人工智能也有其局限性。有些问题涉及到隐私或是个人选择,机器可能无法回答。举个例子,当问及婚姻状况时,如果一个人选择不回答,这并不能说明他是一个人工智能,而只能说这是他的个人选择。

02

什么是模型?

//模型概念

模型是指在参数和架构的基础上构建起来的一种结构。其中参数指的是可以调节的数值,每个参数控制一个节点的数值,这些节点可以控制各种开关。在下面图里,我们展示了三排的模型,但实际上模型中可能还有更多。我们经常听到模型参数的说法,例如6B或130B,其中的B表示十亿。例如,6B代表模型有约60亿个参数,每个参数控制一个节点的输入和输出。节点的输出由参数决定,因此参数越多,模型就越复杂。

此外,架构也是模型的重要组成部分。在这里,我们同样展示了三层架构,但实际上这些参数不会是简单地排成一行,而是有多个层次。一个复杂的模型可能会有上百层甚至更多。这些层次和参数最终形成了一个完整的模型。当我们训练好模型后,它就会固定下来。相同的输入数据可能会得到相同的输出,但也有可能不同。

用一个更简单的说法来解释,模型就像是一个基于概率的游戏。举个例子,假设今天我被朋友放鸽子了。那么根据我输入“我今天被我朋友xxxx”的这个信息,这个模型90%概率会输出"放鸽子"这个结果,而其他结果的概率则很低。

模型实际上就是一个基于概率的游戏,我告诉它我被朋友放鸽子了,它经过处理后输出的结果就是"放鸽子",而且这个结果的概率很高。这就是这个模型要完成的任务。

类似OpenAI就会作为一个机构,为我提供这个模型,填充相应的内容。具体来说,我们只能看到模型的输入和输出,不知道模型内部是如何工作的,即它是如何根据输入生成输出的。因为模型的架构和参数非常复杂,涉及很多节点和参数。但是通过大量的训练,模型可以学习到输入和输出之间的关系,从而能够对输入进行预测。

//模型训练

模型训练是一个循环迭代的过程。在训练过程中,我们首先给定一句话,让模型猜测下一句可能是什么。然后,检查模型的猜测答案是否正确。如果猜测错误,我们需要调整参数,使模型更接近正确答案。这个过程不断重复,可能进行多次迭代,直到模型的参数得到确定。最终,我们训练出一个能够进行推理和猜测的模型。

具体而言,我们将给定一句话作为输入,让模型预测下一句可能的内容。然后,我们会检查模型的预测答案是否与实际答案一致。如果不一致,我们会根据差异给出一个评分,例如9分或0分。接下来,我们会根据评分调整模型的参数,使其更接近正确答案。这个调节过程就像是调节一个旋钮,让模型更加靠近我们期望的答案。

这个循环迭代的过程会反复进行,不断调整模型的参数,直到我们得到满意的结果,这个过程可能会进行数百次甚至数百万次的迭代。在每一次迭代中,我们会给模型提供新的输入,评估模型的输出,并根据评估结果调整参数。这个过程会一直持续,直到模型的参数得到确定。

最终,经过反复迭代的训练过程,我们将得到一个训练有素的模型,这个模型能够根据给定的输入进行推理和猜测。

//AI大模型要点

1.模型具有大量的参数。这些参数可能是难以想象的数量,可能达到十亿,甚至百亿或千亿级别。OpenAI的模型可能是天文数字级别的。与我们平时编写的代码中可能只有几个参数相比,这个模型的参数数量是巨大的。

2.  模型的结构非常复杂。我们可以看到,它包含了不同的旋钮。模型的复杂程度与其大小成正比。一般模型可能只有几个GB的容量,而更复杂的模型可能达到几十GB甚至更多。

3.  预训练和微调。成熟的模型不是一开始就拥有的,而是通过反复的训练来获得的。这个过程可能需要进行多次迭代和微调,耗费的计算量是庞大的。

4.  模型具有多模态分类的能力。除了文本,该模型还能处理音频、图片等多种模态的数据。这种融合模态的能力使得模型不仅限于处理文本,还可以应用于其他领域。

5.  模型对计算资源的需求非常高。如大家所知,英伟达在计算资源方面表现出色。它与AI的发展相辅相成,为高速发展提供了助力。由于模型参数众多、结构复杂,并且需要进行多次迭代训练,对计算力的要求也非常高。普通的CPU可能无法支持这种并行计算,因此我们需要使用特殊的GPU来进行模型训练。

03

传统深度学习模型

深度学习是人工智能的一种方法,最初的目标是模拟人类的神经系统。神经元是神经系统的基本单位,它的结构被用来构建我们的模型,也就是人工智能的模型。然而,神经元实际上是生物学领域的概念,正如之前提到的,AI涉及多语言和多学科的交叉领域。

神经元具有许多突触,它可以接收各种信号,例如触觉、视觉、温度等等。这些信号经过细胞核和神经网络的传递之后,大脑会产生一个信号,告诉我们如何处理。例如,如果我碰到烫的东西,我会迅速将手拿开;如果我看到某样东西,我可能会产生相应的行为。这两个模型实际上是相同的,即神经网络用于处理不同的输入,并通过运算给出一个输出。因此,我们的人工智能神经元模型实际上与人体生物神经元模型非常相似。

或者我们将神经网络比喻成一种多层的三明治。三明治有很多层,可能有上百层甚至上千层。在神经网络中,各种层和节点之间的连接是杂乱无章的,我的输入可能传递给你,你的输入可能传递给我,最终形成一个统一的输入和输出,从而构建了一个人工网络模型,这个模型类似于三明治一样的多层结构。

//神经网络(Neural Network)

有时候我们会使用一些开源的神经网络包,其中会出现缩写NN,这个缩写其实是Neural Network的缩写,NN代表的是Neural Network的某个组件。

刚才也提到了,模型其实就是一个黑盒子,我们不知道它的具体构成,它非常复杂。当我们输入一串话之后,这个盒子会给出一个输出。

比如说,我们可以使用神经网络NN来识别一只猫,它告诉我这只猫的可能性是0.97%,狗的可能性是0.01%,其他的可能性是0.02%。通过这样的神经网络,我们的系统就可以确定这是一只猫,因为概率已经达到97%,可以认定是猫了。当然,识别错误的可能性是存在的,比如拍摄角度不好等原因,可能会导致错误的识别。

顺便提一下,这种错误性是普遍存在的。就像考试一样,如果给你一张图片,让你判断是猫还是狗,你能够100%正确吗?显然不行,就像你考试也只能得90分一样。为什么要要求AI给你100分呢?

这是我们后面要提到的,人工智能并不是绝对精确的,它可能是精确的,但不是准确的。

//深度神经网络(Deep Neural Network)

深度神经网络是一种多层无监督神经网络,并且将上一层的输出特征作为下一层的输入进行特征学习,通过逐层特征映射后,将现有空间样本的特征映射到另一个特征空间,以此来学习对现有输入具有更好的特征表达。深度神经网络具有多个非线性映射的特征变换,可以对高度复杂的函数进行拟合。

//循环神经网络(Recurrent Neural Network)

循环神经网络是一种具有循环连接的神经网络结构。在RNN中,信息可以在网络的不同层之间传递,这种传递是按照顺序进行的,即第一层到第二层,第二层到第三层,依此类推。然而,传统的顺序执行模型可能无法获得良好的结果。

为了解决这个问题,RNN引入了循环连接,使得每一层都可以与前一层进行循环连接。这样一来,输入和输出可以在网络中循环传递,使得网络更加复杂。因此,我们将这种具有循环连接的神经网络称为循环神经网络(RNN)。循环神经网络相较于没有循环连接的网络,可能具有更高的准确性。

//卷积神经网络(Convolutional Neural Network)

卷积神经网络是一种图像处理技术。在卷积神经网络中,图像被表示为一个静态的图形,而实际上它原本是可以动态变化的。卷积神经网络通过添加卷积层来处理图像的不同特征。这些特征主要用于图片识别等应用。卷积神经网络的核心思想是利用卷积来集成信息。

在卷积神经网络中,卷积操作类似于下面这个方块状的结构。它的作用是将输入与周围的元素相结合。这种结合不仅仅是与当前元素有关,还与周围的元素有关。卷积操作是一个重复的过程,它会根据输入的动态变化进行调整。

通过卷积神经网络,可以实现对图像中物体的识别。

例如,假设我们有一幅图像,其中可能包含一座宝塔。这座宝塔可能出现在图像的左侧、右侧、上方或下方,甚至可能发生旋转。利用卷积神经网络,我们可以识别出宝塔的形状、位置和旋转关系,而这些与周围图像的关系无关。

另外,卷积神经网络还可以用于图像轮廓的识别。通过设置适当的卷积核进行计算,我们可以快速识别出图像中物体的轮廓。即使图像不够清晰,也能够通过卷积神经网络识别出物体的轮廓。我们可以将轮廓显示在图像上,以便更清晰地观察。

04

Transformer大模型

近期出现了一个重要的模型,名为Transformer。大家可能已经听说过多次,不过这里的Transformer并不是指大家熟知的变形金刚,而是指一种转换器。

//注意力机制

在Transformer模型中,有一个非常重要的概念,即注意力机制。

举个例子,给大家10秒的时间来观察一下这幅图,大家注意到了什么?

很显然,大家肯定都注意到了这只蓝色的鸭子。

但是你们有没有注意到这只鸭子的朝向呢?有些是面朝前方的,有些是朝左,还有些是朝右的?

这一点可能大家没有留意到,那么我们可以这么说:这只蓝色的鸭子可能具有更高的重要性,而其他朝向的鸭子则权重较低,对我们的观察影响较小。所以,这里的注意力机制就是这样的一种情况。

再看一个例子,观察下面这幅图,大家能否读出其中的内容?

当你读完这句话后,才发现其中的字是乱序的。尽管如此,我们仍然能够轻松地读出来,这是为什么呢?这正是我们之前提到的注意力机制的作用。

从程序员的角度来说,注意力其实就是加权求和的过程。

以刚才的第一个图为例,蓝色的鸭子拥有很高的权重,一眼就能辨认出来;接着是第二个图,可能某些部分的权重较低,但这并不影响我们的阅读。

接下来我们可以从图中看出,我输入了一句话,然后将其分成了多个块,每个块都有一个相应的权重,例如第一块权重为1,第二块权重为2,以此类推。最后进行运算并进行归一化处理,得出最终的结果。或许在我的一句话中,有些部分的权重较高,而有些部分的权重则被忽略了,权重较高的部分将会对结果产生影响。

//Transformer模型架构

Transformer大模型是2017年 Google Brain 的论文《Attention Is All You Need》中提出来的,我们现在所熟知的OpenAI等等都是基于这个架构而来的。这篇文章原文比较理论化,大家感兴趣可以自己去搜索原文阅读。

这里给大家列出了Transformer这个大模型的一个架构图。这个架构图的含义其实并不需要大家去深入理解,可以简单地理解为加权求和的过程。这个input就是一个输入进来的数据。我们可能会对它进行一些Embedding的处理,Embedding就是将数据进行转换的过程。

在Transformer中,我们使用了很多Embedding的方法,将数据进行转换,然后进入到注意力机制中。我们会对这些加权求和的结果进行分析,哪些权重高、哪些权重低,然后进行求和。然后我们会进行反馈,再进行线性化和归一化等操作。

Transformer可以说是对传统神经网络进行了一些优化。比如,它让机器注意到整个输入中不同部分之间的相关性。整句话中的每个单元都可以捕捉到完整的句子,而不只是一部分句子。此外,Transformer还进行了并行运算的优化。与之前的循环神经网络不同,它的运算是并行的,这样可以提高效率。

这里看一个例子,我们输入“知识就是力量”

输入的句子会被拆分为不同的部分,然后通过系统内部识别不同部分的权重后将其转化为英语。我们只能看到它的一个转化过程,但实际上这个Transformer模型内部是经过了复杂的计算后才得出的结果。

//BERT和GPT

大家所熟知的典型的Transformer大模型就是OpenAI在2018年推出的ChatGPT,其实在此之前同样是2018年,Google也曾经推出了一个大模型叫做BERT,BERT是一个双向编码模型。

BERT的主要目标是识别语言模型,从识别的角度来理解句子的上下文等内容。而GPT则采用了一种不同的方法,它并不是去理解句子,而是通过深度生成的方式,根据给定的输入来生成接下来应该返回给用户的语言。BERT的目标是识别下一个可能的内容,而不是生成内容,这存在一些细微的差别。这两者都可以在相同的场景中使用,下面的图表对它们进行了比较。

下面这个图就是Transformer的家族树,它的颜色有4个,但其实最主要的部分只有3种。

第一种是粉红色,即大家熟知的BERT。BERT是一种仅进行加密的模型,这一点在旁边的小字里有所说明。BERT是其中最著名的模型。

第二种是绿色的树,这棵树既进行加密又进行解密,即encode和decode。在这个领域,大家可能听说过这个模型在清华大学的应用ChatGLM,这个模型就是一种既加密又解密的实现方式。

第三棵树是仅进行解密的模型。目前,这棵树是最大的。在这棵树中包括LLaMA,LLaMA是羊驼家族的一种,与LLaMA相关的派生模型有很多,比如Vicuna、Alpaca等。它们都是基于羊驼家族的基础上发展起来的。

以LLaMA为核心的模型以及以GPT为核心的模型都是仅进行解密的模型。实际上,这些模型都是基于Transformer模型的实现方式。尽管各个厂家可能在实现方式上有所差异,但这并不影响它们都是基于Google Brain的《Attention Is All You Need》的方式实现的。

//多模态模型

多模态的概念相信大家并不陌生。之前我们提到的文心一言就是一种多模态的应用,我们可以通过图像、文本、视频等多种方式来传递信息。这些不同的载体可以相互转化,实现非常灵活的交流。例如,文本可以生成图片,图片可以生成文本等等。这个原理其实非常简单,它基于一个Prompt (提示)和一个manager(管理者)的概念为基础,可以相互进行转化。

05

模型的微调与推理

模型的微调和推理过程是一个反复迭代的预训练过程,这个过程非常繁重和复杂。比如,像OpenAI这样的公司进行一次训练可能需要耗费大量资金和时间,以及使用大量的GPU进行计算。

一般的个人和公司无法承担这样的成本,只能在公网上购买GPU进行训练,一次训练可能只需花费几十到几百块钱,而生成一个文本可能就需要几百块钱。这对于一般的公司来说可能是承担不起的,只有一些大厂才能够承担这样的费用。目前能够进行这种训练的主要是像OpenAI和微软这样的公司,其他公司可能无法进行这样的工作。

模型是经过反复迭代后得到的结果,我们还有另外一种方式可以使用,对它进行微调。我们可以利用私有领域的数据来微调这些模型,使其适应我们真正使用的私有环境。

//LoRA 调优

左边这个是LoRA的官方架构图,左侧是输入,经过Embedding后进入模型,最终输出结果。例如,当我询问今天是星期几时,它会回答今天是星期三,这是一个输入和输出的示例。

左侧是预训练好的模型,右侧是对其进行调优。调优过程和预训练模型的输出结果并行进行,然后将调优方法和预训练模型的输出结果合并,并将结果提供给用户。

比如,当你问今天是星期几时,它可能会回答今天是星期四,并且提高了调优参数。调优过程是一个从降维到升维的过程。我可以调整参数的维度,使计算更简单,然后再升维,调整模型参数的维度。最后将结果合并,这就是LoRA调优的原理。

//Prompt Tuning 调优

右侧是Prompt Tuning的官方架构图,展示它的优化过程。这个过程是对输入进行调优,而不是对模型本身进行调优。通过调整输入的Prompt ,即提供给模型的初始信息,可以改变模型的输出结果。

举例来说,当我们询问今天是星期几时,原始的Prompt 经过Embedding后是ABC,通过调优后变成了CBA。然后将调优后的Prompt 输入到模型中,最终得到的输出结果会与之前不同,这个过程就被称为"Prompt Tuning"。在这个过程中,会对Prompt 进行调整,最终得到一个输出结果。

需要注意的是,这个调优过程可能是一个反复进行的过程,并非一次就能得到最终结果。整个过程可能比我们想象的更为复杂,但基本原理如上所述。

//推理

接下来说一说推理。实际上,推理也是通过训练这个模型来进行的。例如,我们给模型提供了一组真实数据,然后这些真实数据经过模型处理后给出了一个结果。这个过程就是推理。

对于这个模型来说,训练好之后,我需要进行测试和推理。推理过程就是将真实的数据作为输入提供给模型,然后模型给出一个结果。而刚才讲的训练过程实际上是一个循环的过程,但推理过程是一个直线的过程。

例如在推理过程中,我输入一张猫的图片,然后模型告诉我这张图片中有猫的可能性是91%。这个概率已经非常高了,基本可以确定它是一只猫。

//预测

推理和预测是两个相似的概念。在机器学习领域中,预测更多地是指对未知的事物进行猜测,我预测某个事物是什么。而推理更多地是基于已有的历史数据等信息,推断出事物的性质。

对于预测,我并不知道具体是什么,我只是猜测它可能是某种东西。而推理则更多地依赖于根据已有的信息,推断出事物的性质。预测更多地是解释即将发生的事情,而推理更多地是对已经发生的事情进行推理,作为验证。

但这两个概念的差别相对较小,不建议过于纠结于推理和预测的细微差异,因为它们在应用场景上都是相似的。例如,我预测下一个结果是什么,或者问今天星期几,我预测我会回答什么,推理出的答案可能是最大可能性,这实际上没有太大区别。

//Zero Shot、One Shot、Few Shot

我们可能会听到一些专有名词,如Zero shot、One shot和Few shot。这些技术的主要目标是克服传统方法在处理特殊情况时无法获得大量样本数据的困难,在仅有极少量或没有样本数据的情况下,实现了对新类别或新任务的快速适应。

Zero shot Learing指的是在零样本的情况下,模型能够正确识别物体的特征。也就是在完全没有见过新类别样本的情况下,通过模型的泛化能力来对新类别进行预测。举个例子,如果我告诉模型猫长什么样子、狮子长什么样子和马长什么样子,但没有告诉它老虎长什么样子,但我会描述老虎是长得像狮子、属于猫科动物,并且有斑点。这样告诉了模型后,它可能会自己学习到老虎的特征。

另外,如果我看到一张图,图上有一只动物,它不是狮子,但它看起来像狮子,又有点像猫,并且有条纹,那么我就知道它是只老虎了。这就是所谓的Zero shot,利用模型的泛化能力在训练阶段没有接触过的类别或任务上进行预测。

One shot Learing是指在只有一个样本的情况下,通过该样本进行学习和预测。具体来说,One Shot Learning要求在每个新类别中只有一个样本的情况下,进行学习并对该类别进行预测。举个例子,我给模型一张年轻时的爱因斯坦的照片,但是它也能识别出老年时期的爱因斯坦了。这就好比人脸识别技术,即使你只提供了一个正面照片,它也能识别出你的侧面或者你洗完脸之后的样子。

Few Shot Learing是指在只有少量样本的情况下,通过学习从这些有限样本中抽取的知识,来泛化到新任务或类别的能力。在Few shot学习中,我们给模型提供少量的样本,让它能够在见到新的类别时进行准确的预测。例如,如果我们给模型提供了几张猫和狗的样本,它可以学习到它们的特征和区别,并在见到新的猫或狗的图片时进行正确的分类。

在过去,我们可能更多地听说过Few Shot学习的技术。但是现在,在行业内,像Open AI和ChatGLM这样的模型实际上都采用了Zero Shot Learning的方式。我们之前的文章已经提到了这一点。举个例子,我们并没有告诉模型关于烧红的铁的信息,但它却能够识别出人触摸到铁会受伤。这就是Zero Shot Learning的作用,它能够在没有提供相关信息的情况下进行识别,这才是大模型真正的价值所在

06

说在最后

本次分享我们更多的是注重于AI大模型技术的基础概念解释,帮助大家更好的入门AI智能。

需要强调的是,很多人对于专业的AI技术可能感到困惑,这是正常的,不需要过于纠结。因为这些知识更多地是由研究人员、领域专家们进行研究的。作为行业从业者,我们需要学会的是如何使用AI,以及如何利用AI来实现不同的目标。通过理解和运用AI技术,可以更好地发挥其作用,为各行各业带来更多的便利和创新。

原文链接: http://mp.weixin.qq.com/s?__biz=Mzg5MzUyOTgwMQ==&mid=2247524347&idx=1&sn=8bfe68acb2b69b6d87ffb80115b14ffa&chksm=c02fa45df7582d4b0da241ca0aea06271dac792d8f3b5a021928dbe2ab8a60b76f64e4284dcd#rd