为什么最近到处都是 AI 和大模型
ChatGPT 为什么突然“火”出圈?

为什么各家公司都在疯狂投入 AI?

大模型(LLM)为什么成了技术热点?
AI、机器学习、深度学习、大模型是什么关系
什么是 AI(Artificial Intelligence)
-
感知:识别图像、语音、文本等信息
-
理解:理解语言、语义和上下文
-
学习:通过数据不断优化自身模型
-
决策与推理:根据已有知识做出判断或预测
简单来说:AI 的目标是让机器能够像人一样“思考”和“解决问题”。常见应包括:语音助手(Siri、Alexa)、自动驾驶、推荐系统(抖音、淘宝、Netflix)、医疗影像识别、智能客服等。
AI 是让机器具备智能能力的总体概念;机器学习是实现 AI 的核心方法,而深度学习是机器学习的重要分支。随着大规模神经网络的发展,生成式 AI 和大模型成为当前 AI 技术的主要方向,并推动了 AIGC 等新型应用的快速发展。
在AI技术不断演进的过程中,出现了很多名词,包括机器学习、监督学习、深度学习、生成式AI、无监督学习、强化学习、大语言模型等等,本节来捋一捋它们的关系

机器学习


监督学习


无监督学习

强化学习(Reinforcement Learning)

强化学习是一个非常吸引人的人工智能领域,2016年 Alpha Go在围棋领域挑战李世石,以几乎碾压的结果夺冠,引起了人们对于人工智能的广泛讨论。2019年Alpha Star横空出世,在复杂的星际争霸2游戏中达到能和人类顶级玩家PK的水平,登上Nature。这两次与人类顶级玩家的抗衡之战,背后的技术都是强化学习。强化学习是机器学习领域的一个分支,强调基于环境而行动,以取得最大化的长期利益。与监督学习、非监督学习不同,监督学习解决如分类、回归等感知和认知类的任务,而强化学习处理决策问题,着重于环境的交互、序列决策、和长期收益。强化学习与环境的交互模式可以抽象为:智能体Agent在环境Environment中学习,根绝环境的状态State,执行动作Action,并根据环境反馈的奖励Reward来指导输出更好的动作。

强化学习能做什么?
类似心理学中的巴普洛夫强化效应,强化学习采用一种更接近人类和动物习得技能的方式,在探索与利用中学到更优的策略规划与控制,能够最大化序列决策任务中的长期收益。强化学习在复杂环境中可以探索更多的状态空间和同时处理更多样化的动作组合,达到甚至超越人类能探索到的决策能力。因此强化学习的应用非常广泛,可应用于游戏、机器人控制、推荐、交通、能源、金融等等。

深度学习(Deep Learning)
深度学习也是机器学习的子集,但不属于监督学习、无监督学习和强化学习的任何一类。深度学习是机器学习的一个方法,核心在于使用人工神经网络模仿人脑处理信息的方式,通过层次化的方法提取和表示数据的特征。神经网络是由许多基本的计算和储存单元组成,这些单元被称为神经元,这些神经元通过层层连接来处理数据,并且深度学习模型通常有很多层,因此称为深度。
比如要让计算机识别小猫的照片,在深度学习中,数据首先被传递到一个输入层,就像人类的眼睛看到图片一样;然后数据通过多个隐藏层,每一层都会对数据进行一些复杂的数学运算,来帮助计算机理解图片中的特征,例如小猫的耳朵、眼睛等等;最后计算机会输出一个答案,表明这是否是一张小猫的图片。
神经网络可以用于监督学习、无监督学习、强化学习,所以深度学习不属于它们的子集。

大模型到底是什么
大语言模型也叫LLM(Large Language Model),也是深度学习的一种应用,专门用于进行自然语言处理任务。大语言模型里面的大字说明模型的参数量非常大,可能有数十亿甚至到万亿个,而且训练过程中也需要海量文本数据集,所以能更好的理解自然语言以及生成高质量的文本。
大语言模型的例子有非常多,比如国外的GPT、LLaMA,国内的ERNIE、ChatGLM等,可以进行文本的理解和生成。以GPT3这个模型为例子,它会根据输入提示以及前面生成过的词,通过概率计算,逐步生成下一个词或token来输出文本序列。
但不是所有的生成式AI都是大语言模型,而所有的大语言模型是否都是生成式AI这也存在些许争议。前半句很好理解,生成图像的扩散模型就不是大语言模型,它并不输出文本。
同时有些人认为不是所有大语言模型都是生成式AI。这是因为有些大语言模型由于其架构特点不适合进行文本生成,比如,谷歌的BERT模型。BERT模型的参数量和训练数据很大,属于大语言模型。在应用方面,BERT理解上下文的能力很强,因此被谷歌用在搜索上,用来提高搜索排名和信息摘要的准确性;它也被用于情感分析、文本分类等任务;但同时BERT不擅长文本生成,特别是连贯的长文本生成,所以有些人认为此类模型不属于生成式AI的范畴。
大语言模型大在哪里?
训练数据量大
大语言模型是通过大规模的文本数据进行训练的,这些数据包含了丰富的语言信息。大量的训练数据有助于模型学习更准确的语言表示,从而提高其泛化能力和在各种任务中的表现。
参数数量大
大语言模型通常具有庞大的参数数量,这些参数决定了模型的的复杂度和表示能力。更多的参数意味着模型可以捕捉更复杂的模式和关系,从而提高其语言理解和生成能力。
计算资源需求大
训练和运行大语言模型需要大量的计算资源,包括高性能的GPU或TPU以及大规模的分布式计算环境。这是因为大语言模型在推理时需要处理大量的参数和复杂的计算。
大语言模型特点
大语言模型首先需要通过大量文本进行无监督学习,借助海量文本数据,模型能更多了解单词与上下文之间的关系,从而更好地理解文本的含义,并生成更准确的预测。
大语言模型的“大”,不止是指训练数据量的巨大,也是指参数(模型内部变量,可以理解为是模型在训练过程中学到的知识,参数决定了模型如何对输入数据做出反应,从而决定模型的行为)的巨大。在过去的语言模型研究中发现,用更多的数据和算力来训练具有更多参数的模型,很多时候能带来更好的模型表现,特别是当参数大于一定的规模后,模型就能举一反三,具备很多预料之外的能力。以OpenAI的大模型GPT1为例,它有1.17亿个参数;到了GPT2参数有15亿个,而GPT3的参数又增长到了1750亿个。这让大模型不像小模型那样局限于单项或某几项任务,而是具有更加广泛的能力,比如在这之前我们可能要训练单独的模型,分别去做总结、分类、提取等等任务,但现在一个大模型就可以搞定这一切,像ChatGPT、文心一言、通义千问等AI聊天助手,都是基于大语言模型的应用。
如果说2022年年底,ChatGPT的惊艳亮相是大语言模型公众认知被显著提升的里程碑,那它技术发展的里程碑其实要回溯到2017年。2017年6月,谷歌团队发表论文《Attention is all you need》,提出了Transformer架构,自此自然语言处理的发展方向被改变了,随后出现了一系列基于Transformer架构的模型。所以大语言模型的发展早就如火如荼了,并不是像很多人以为的到了2022年才有所突破。但因为ChatGPT直接向公众开放,而且能让用户在网页上用对话的方式进行交互,体验很流畅丝滑,大众的目光才被吸引过去。
大语言模型发展历史

基础模型(2018年至2021年)
能力探索(2019年至2022年)
由于大规模语言模型很难针对特定任务进行微调,研究人员们开始探索在不针对单一任务进行微调的情况下如何能够发挥大规模语言模型的能力。2019年Radford等人就使用GPT-2模型研究了大规模语言模型在零样本情况下的任务处理能力。
在此基础上,Brown等人在GPT-3模型上研究了通过语境学习(In-ContextLearning)进行少样本学习的方法。将不同任务的少量有标注的实例别拼接到待分析的样本之前输入语言模型,使用语言模型根据实例理解任务并给出正确结果。上述方法不需要修改语言模型的参数,模型在处理不同任务时时无需花费的大量计算资源进行模型微调。但是仅依赖基于语言模型本身,其性能在很多任务上仍然很难达到有监督学习效果,因此研究人员们提出了指令微调(InstructionTuning)方案,将大量各类型任务,统一为生成式自然语言理解框架,并构造训练语料进行微调。大规模语言模型一次性学习数千种任务,并在未知任务上展现出了很好的泛化能力。
2022年Ouyang等人提出了使用有监督微调再结合强化学习方法,使用少量数据有监督就可以使得大规模语言模型服从人类指令的InstructGPT算法。NNakano等人则探索了结合搜索引擎的问题回答算法WebGPT。这些方法从直接利用大规模语言模型进行零样本和少样本学习的基础上,逐渐扩展到利用生成式框架针对大量任务进行有监督微调的方法,有效提升了模型的性能。
突破发展阶段(2022年-)
Transformer
ChatGPT背后的模型GPT,首字母分别表示Generative Pre-trained Transformer,即生成式预训练Transformer,也表明Transformer是其中的关键。
在Transformer架构被提出之前,语言模型的主流架构主要是循环神经网络,简称RNN,Recurrent Neural Network。RNN有两个较大的弊端:
(1)无法并行计算,训练效率低:RNN按顺序逐字处理,每一步的输出取决于先前的隐藏状态和当前的输入,要等上一个步骤完成后才能进行当前的计算;

(2)RNN不擅长处理长序列,也就是长文本:由于RNN的架构特点,词之间距离越远,前面对后面的影响越弱,所以它难以有效捕获到长距离的语义关系,但在人类自然语言中,依赖信息之间的距离较远是很常见的情况。

为了捕获长距离依赖性,后来也出现了RNN的改良版本——LSTM长短期记忆网络。但是这也并没有解决传统RNN的无法并行算的问题,而且在处理非常长的序列时也依然受到限制。

后来,Transformer踏着七彩祥云出现了,它有能力学习输入序列里所有词的相关性和上下文,不会受到短时记忆的影响。能做到这一点的关键在于Transformer的自注意力机制。
(1)主要技术一:自注意力机制
简单来说,Transformer在处理每个词的时候,不仅会注意这个词本身以及它附近的词,还会去注意输入序列里所有其他的词,然后其余每个词不一样的注意力权重。权重是模型在训练过程中通过大量文本逐渐习得的,因此Transformer有能力知道当前这个词和其他词之间的相关性有多强,然后去专注于文本里真正重要的部分。即使两个词的位置隔得很远,Transformer依然可以捕获到他们之间的依赖关系。比如这个例子,单从语法上来讲,it可以指的是离得更近的street,也可以是离得更远的animal。这里,自注意力机制捕获到了it和animal之间更强的关系,因此更集中在animal上。

(2)主要技术二:位置编码
除了自注意力机制,Transform的另一项关键创新是位置编码。在语言里,顺序很重要,即使句子里包含的字都是一样的,顺序不一样也能导致意思大相径庭,这是为什么自然语言处理领域会用序列这个词,因为它表示一系列按照特定顺序排序的元素。前面提到RNN和人类阅读文本一样,对输入序列同样是按顺序依次处理,这就造成了训练速度的瓶颈,因为只能串行,没办法并行,也就是没法同时去学习所有信息。
Transforming再把词输入给神经网络前,除了会先对词进行嵌入转换成向量,也就是把词各用一串数字表示,还会把每个词在句子中的位置也各用一串数字表示,添加到输入序列的表示中,然后把这个结果给神经网络大模型,既可以理解每个词的意义,又能够捕获词在句子中的位置,从而理解不同词之间的顺序关系。借助位置编码,词可以不按顺序输入给Transformer,模型可以同时处理输入序列里的所有位置,而不需要像RNN那样依次处理。那么在计算时,每个输出都可以独立的计算,不需要等待其他位置的计算结果,这大大提高了训练速度,训练速度一快,训练出巨大的模型也不是那么难了。

自《Attention is All You Need》发表之后,Transformer以及它的变体已经被普遍运用在大型数据集上来训练大语言模型。所以Transformer架构对我们当下能拥有那么多牛叉的大语言模型功不可没。
基本原理
在《Attention is All You Need》的论文里,Transformer可以被看作由两个核心部分组成,编码器encoder以及解码器decoder。

假如我们要这个Transformer做英语翻译法语的任务,给编码器输入一句英语,解码器返回对应的法语。这个过程中发生了什么呢?
(1)编码器部分
① token化
我们先看编码器部分,输入的文本首先会被token化,也就是先把输入拆分成各个token。Token可以被理解为是文本的一个基本单位,短单词可能每个词是一个token,长单词可能被拆成多个token,取决于不同的token化方法。每个token会被用一个整数数字表示,这个数字被叫做token ID,这样做是因为计算机内部是无法储存文字的,任何字符最终都得用数字来表示。

② 向量嵌入
有了数字表示的输入文本后,再把它传入嵌入层。嵌入层的作用是让每个token都用向量表示,向量可以被简单的看为一串数字。为了方便示意,这里把向量长度简化为三,但实际中向量长度可以非常长。

问题来了,之前明明已经有单个整数表示各个token了,怎么现在又要用一串数字表示各个token?其中一个原因是,一串数字能表达的含义是大于一个数字的,能包含更多语法、语义、信息等等。这就好比男人和女人这两个词,他们都在描述人类,但性别又是完全相反的。如果只用一个数字表示,这两个数字大小之间应该距离很大,还是应该距离很小的;但如果有多个数字,我们就可以进行更多维度的表示,就比如说第一个数字可以表示性别,第二个表示年龄大的程度,第三个表示社会阶层高的程度。所以,嵌入层的向量不是随便搞出来的,里面包含了词汇之间,语法语义等关系。相似的词所对应的嵌入向量,在向量空间里距离也更近,而一些没啥关系的词之间的距离就更远。这有助于模型通过计算向量空间里的距离,去捕捉不同词在语义和语法等方面的相似性。而且,男人与国王的差异,和女人与女王的差异可以被看作是相似的,这也可以在多维向量空间里展现。因此词向量不仅可以帮模型理解词的语义,也可以捕捉词与词之间的复杂关系。我们这里为了直观是用三维向量空间表示的,把向量长度相应简化成了3,而提出Transformer的论文里向量长度是512,GPT3是12288,所以可以想象能包含多少信息。

通过编码器的嵌入层得到此向量后,下一步是对向量进行位置编码。位置编码就是把表示各个词在文本里顺序的向量和上一步得到的词向量相加,然后把得到的结果传给编码器。这样做的意义是模型既可以理解每个词的意义,又能够捕捉词在句子中的位置,从而理解不同词之间的顺序关系。
③ 位置编码

④ 编码器
接下来就到了编码器这个核心部分,它的主要任务是把输入转换成一种更抽象的表示形式,这个表示形式也是向量,即一串数字,里面既保留了输入文本的词汇信息和顺序关系,也捕捉了语法语义上的关键特征。

捕捉关键特征的核心是编码器的自注意力机制。模型在处理每个词的时候,不仅会关注这个词本身和它附近的词,还会关注输入序列中所有其他词。自注意力机制通过计算每对词之间的相关性来决定注意力权重。如果两个词之间的相关性更强,他们之间的注意力权重就会更高。比如这个例子,单从语法上来讲,it可以指animal,也可以指street,而自注意力机制发现it与animal更强的关联,所以给animal的权重会更大一些。

由于自注意力机制对上下文的全面关注,在输出的表示结果里不仅包含这个词本身的信息,还融合了上下文中的相关信息,上下文在语言里很重要,也能揭露相同词的不同含义。所以在解码器输出的结果里,表示各个词的向量会根据上下文信息进行调整,同一个词根据上下文有不同的抽象表示。

自注意力机制涉及到很多计算步骤,这里主要是做个简单的科普,更多细节可以在论文原文里了解。而且Transformer实际上使用了多头自注意力,也就是编码器不只有一个自注意力模块,而是有多个,每个头都有它自己的注意力权重,用来关注文本里不同特征或方面,比如有的关注动词,有的关注修饰词,有的关注情感,有的关注命名实体等等。而且他们之间可以做并行运算,也就是计算进展上互不影响。每个字注意力头的权重都是模型在之前的训练过程中,从大量文本里逐渐学习和调整的。在多头自注意力后面还有一个前馈神经网络,它会对自注意力模块的输出进行进一步的处理,增强模型的表达能力。

编码器在Transform里不止有一个,实际上是有多个堆叠到一起,每个编码器内部结构一样,但不共享权重。这样模型能更深入的理解数据处理更复杂的文本语言内容。

(2)解码器部分
解码器是大语言模型生成一个个词的关键。通过前面的编码器,我们有了输入序列里各个token的抽象表示,可以把它传给解码器。解码器还会先接收一个特殊值,这个值表示输出序列的开头。这样做的原因是解码器不仅会把来自编码器的输入序列的抽象表示作为输入,还会把之前已经生成的文本也作为输入,来保持输出的连贯性和上下文相关性。刚开始的这轮还没有任何已生成的文本,所以把表示开头的特殊值先作为输入。

具体的生成过程仍然是要经过多个步骤。
① 带掩码的多头自注意力
首先,和编码器一样,文本要经过我们已经了解过的嵌入层和位置编码,然后被输入进多头自注意力层。但它和编码器里的自注意力层有点不一样。当编码器在处理各个词的时候,它会关注输入序列里所有其他词,但解码器中自注意力只会关注这个词和它前面的其他词,后面的词要被遮住不去关注。这样做是为了确保解码器生成文本时遵循正确的时间顺序,不能给他偷看到后面。在预测下一个词时,只使用前面的词作为上下文,这种类型的多头自注意力被叫做带掩码的多头自注意力。

② 另一个多头自注意力层
带掩码的多头自注意力是针对已生成的输出序列的,解码器还有个多头自注意力层,这里就是前面编码器所输出的输入序列的抽象表示所派上用场的地方。注意力会捕捉编码器的输出和解码器即将生成的输出之间的对应关系,从而将原始输入序列的信息融合到输出序列的生成过程中。

③ 前馈神经网络、线性层和Softmax层
解码器里的前馈神经网络(Feed Forward)作用和编码器里的类似,也是通过额外的计算来增强模型的表达能力。而且和编码器一样,解码器同样是多个堆叠到一起的这可以增加模型的性能,有助于处理复杂的输入输出关系。
解码器的最后阶段包含一个线性层和一个Softmax层,他们俩加一块儿的作用是把解码器的输出表示转换为词汇表的概率分布。

词汇表的概率分布代表下一个被生成token概率,那么有些token的概率就会比其他的高。在大多数情况下,模型会选择概率最高的token作为下一个输出。那现在我们知道了解码器本质上是在猜下一个最可能的输出,至于输出是否符合客观事实,模型无从得知。所以我们能经常看到模型一本正经的胡说八道,这种现象也被叫做幻觉。

解码器的一整个流程会重复多次,新的token会持续生成,直到生成的是一个用来表示输出序列结束的特殊token,那现在我们就拥有了来自解码器的完整输出序列。
(3)各类Transformer架构
以上描述的是《Attention is all you need》里的原始Transformer,编码器用来理解和表示输入序列,解码器用来生成输出序列。实际上在原始架构的基础上,后续出现了一些变种,主要有三个类别:仅编码器、仅解码器以及编码器解码器。

① 仅编码器模型
仅编码器模型也叫自编码器模型,只保留了原始架构里的编码器,BERT就是这种模型的一个例子。此类模型适用于理解语言的任务,比如掩码语言建模,也就是让模型猜文本里被遮住的词是什么。情感分析,让模型判断文本情感是积极还是消极等等。
② 仅解码器模型
仅解码器模型也叫自回归模型,只保留了原始架构里的解码器,GPT系列都是这种模型的例子。这类模型非常擅长通过预测下一个词来实现文本生成。我们已经在ChatGPT身上见识过了。
(3)编码器解码器模型
编码器解码器模型也叫序列到序列模型,同时保留了原始架构里的编码器和解码器,T5、BART都是这种模型的例子。此类模型适用于把一个序列转换成另一个序列的任务,比如翻译总结等等。
大模型是如何训练出来的

要得到一个ChatGPT拢共分几步,需要四步。
(1)第一步:通过大量的文本进行无监督学习预训练,得到一个能进行文本生成的基座模型。
(2)第二步:通过一些人类撰写的高质量对话数据对基座模型进行监督微调,得到一个微调后的模型,此时的模型除了续写文本之外,也会具备更好的对话能力。
(3)第三步:用问题和多个对应回答的数据,让人类标注员对回答进行质量排序,然后基于这些数据训练出一个能对回答进行评分预测的奖励模型。
(4)第四步:接下来让第二步得到的模型对问题生成回答,用奖励模型给回答进行评分,利用评分作为反馈进行强化学习训练。
无监督学习预训练
在第一步的预训练中,首先需要海量文本作为原料,让模型从中学习。比如GPT3这个基座模型的训练数据有多个互联网文本语料库,覆盖书籍、新闻文章、科学论文、维基百科、社交媒体、帖子等等,训练数据的整体规模是3000亿的token。其中,短的英文单词可能一个词是一个token,而长的词可能被分为多个token。而中文的话所占的token数量会相对更多,有些字要用一个甚至更多token表示。

有了大量可用于训练的文本后,要采用无监督学习的方式训练模型。和无监督学习相对的是,监督学习模型会接受有标签的训练数据,标签就是期望的输出值,所以每个训练数据点都既包括输入特征,也包括期望输出值。而无监督学习则是让模型在没有标签的数据上进行训练,所以模型要自己找出数据中的结构和模式。以GPT3为例,训练过程中它会利用海量文本自行学习人类语言的语法语义,了解表达结构和模式。具体来说,模型会先看到一部分文本,基于上下文尝试预测下一个token,然后通过比较正确答案和它的预测,模型会更新权重,从而逐渐能根据上文来生成合理的下文。并且随着见过的文本越来越多,它生成的能力也会越来越好。但预训练并不是一个容易的过程,也是这四个步骤里最耗时费力烧钱的。以GPT3为例,虽然官方还没有公布准确数据,但大体估计他经过了数月的训练,用了成千上百个V100 GPU烧了几百万美元。
监督微调
预训练的结果是得到一个基座模型,基座模型并不等同于ChatGPT背后的对话模型。因为此时模型有预测下一个偷看的能力,会根据上文补充文本,但并不擅长对话。比如,你给它一个问题,它可能模仿上文帮你继续生成更多的问题,但不回答你的问题。为了解决这点,我们需要进行第二步,对基座模型进行微调。
微调就是在已有模型上做进一步的训练,会改变模型的内部参数,让模型更加适应特定任务。换句话说,为了训练出一个擅长对话的AI助手,需要给基座模型看更多的对话数据,但微调的成本相比预训练低很多,因为需要的训练数据规模更小,训练时长更短。

在监督微调过程中,模型不需要从海量文本学习了,而是从一些人类写的专业且高质量的对话里学习。这相当于既给了模型问题,也给了模型我们人类中意的回答,属于监督学习,所以这一过程被叫做监督微调,Supervised Fine-Tuning,简称SFT,完成后会得到一个SFT模型,它与步骤一里的基座模型相比,更加擅长对问题做出回答。
强化学习
为了让模型的实力继续被提升,还可以进行第三步和第四步,让SFT模型进行强化学习。强化学习是让模型在环境里采取行动,获得结果反馈,从反馈里学习,从而能在给定情况下采取最佳行动来最大化奖励或最小化损失。

强化学习的过程跟训小狗类似,随着和训犬师的互动,小狗会发现某些动作能获得零食,某些动作没有零食,某些动作甚至会遭受惩罚,通过观察动作和奖惩之间的联系,小狗的行为会逐渐接近训练时的期望,要让ChatGPT的模型乖乖当一个乐于助人的AI助手也是一样的道理。我们可以让ChatGPT对问题做出回答,然后让人类评估员去给回答打分,打分主要是基于3H原则(Helpful有用性、Honest真实性、Harmless无害性)。如果打分高的话,模型能学习到要再接再厉;如果打分低的话,模型就学习到要予以改正。
但是靠人类给回答一个个打分,成本极高效率极低,所以在强化学习前需要训练一个奖励模型,它是从回答以及回答对应的评分里学习得到的,得到评分数据的方式是让微调后的GPT模型,也就是第二步里得到的SFT模型,对每个问题生成多个回答,然后让人类标注员对回答质量进行排序。虽然还是免不了要借助标注员的劳动,但一旦有了足够的排序数据,就可以把数据用在训练奖励模型上,让奖励模型学习预测回答的评分。

强化学习里,ChatGPT模型的最初参数来自之前得到的SFT模型,但会随着训练被更新;奖励模型的参数则不再会被更新,它的任务就是对模型生成的内容打分。在经过一轮又一轮迭代后,模型会不断优化策略,回答的质量会进一步提升,强大的ChatGPT就在不断学习中炼成了。
如何让大模型更“聪明”?
大模型幻觉
提示词
超大规模的预训练语言模型(大语言模型)只是一个基座模型(Base Model),需要使用微调技术对模型进行优化。然而优化后的大模型仅是一个通用大模型,在使用过程中还会遇到诸如胡言乱语的问题(幻觉)、不专业的问题、不与时俱进的问题,还需要使用其他技术如提示工程(Prompt Engineering)、检索增强生成(RAG)等进行强化。
大模型本质上是一个提词器,仅仅是具有“把话说的漂亮(顺畅)”的能力,它并不具有意识,本质上没有创造力,它输出的一切知识都基于大模型本身已有的知识和输入的知识。
大模型获取知识有三种途径:大模型训练知识(蓝图)、用户输入的文本(绿图)、引入的外部知识库(红图)。

仅用大模型训练知识(蓝图)和用户输入(绿图):就是我们常用的底模,如果用户输入太简单,这通常会导致胡乱回答。对应的优化方法就是【1】提示工程(Prompt Engineering)。
仅用户输入(绿图)和外部数据库(红图):就是平时使用的搜索【2】,它没有自然语言输入、对话管理、大模型以及推理能力。
仅用大模型训练知识(蓝图)和外部数据库(红图):如果没有外部专家数据库的强化训练,就不能很好地遵循人类指令,甚至会输出无用的、有害的信息,难以有效对齐人类的偏好。对应的优化方法就是【3】微调(Fine-Tuning)。
把用户输入(绿图)、外部数据库(红图)和大模型训练知识(蓝图)结合:如果没有准确的上下文输入,专家数据库的参考,就回答的不与时俱进、专有的或某个特定领域的信息,对应的优化方法就是【4】检索增强生成(RAG,Retrieval-AugumentedGeneration)。
什么是提示工程
提示工程(Prompt Engineering),就是研究如何提高和AI的沟通质量及效率的,核心关注提示的开发和优化。提示(Prompt)就是我们给AI聊天助手输入的问题或指令,Al会根据提示内容给予回应。

Prompt工程,把大模型当成一种编程语言来看待。人们通过描述角色技能、任务关键词、任务目标及任务背景,告知大模型需要输出的格式,并调用大模型进行输出。这种方法就是经典的把大模型当做工具来调用,可以称为工具模式。
通常情况下,每条信息都会有一个角色(role)和内容(content):
-
系统角色(system)用来向语言模型传达开发者定义好的核心指令。
-
用户角色(user)则代表着用户自己输入或者产生出来的信息。
-
助手角色(assistant)则是由语言模型自动生成并回复出来。
提示词万能公式:角色+角色技能+任务核心关键词+任务目标+任务背景+任务范围+任务解决与否判定+任务限制条件+输出格式+输出量
System message系统指令

用户提示词(user prompt)
指令是最常用的提示组件,主要功能是向模型说明要执行的操作。虽然概念简单,但是实践中仍然比较复杂,下面是简单和详细的一些指令例子,详细、明确的指导比模糊不清的提示能够产生更好的效果:

提示工程方法
零样本提示(Zero-shot Prompting)和少样本提示(Few-shot Prompting)。这两种技术利用 LLM 的强大预训练知识,通过最小化的示例输入,实现对复杂任务的快速适应和高效处理。以下这张图简要的概括了一些提示技术以及每种技术所适用的场景。

思维链(CoT)
思维链(Chain of Thought,CoT)是一种改进的Prompt技术,目的在于提升大模型LLMS在复杂推理任务上的表现,如算术推理(arithmetic reasoning)、常识推理(commonsensense)reasoning)、符号推理(symbolic reasoning)。COT通过要求模型在输出最终答案之前,显式输出中间逐步的推理步骤这一方法来增强大模型的算数、常常识和推理能力。简单,但有效。

思维链的主要思想是通过向大语言模型展示一些少量的样例,在样例中解释推理过程,大语言模型在回答提示时也会显示推理过程。这种推理的解释往往会引导出更准确的结果。
思维链的本质是什么
通过在少样本学习中提供一系列中间推理步骤作为“思路链”,可以明显改善语言模型在算术、常识和符号推理任务上的表现,尤其是在一些标准提示效果不佳的难题上。这种“思路链提示”方法模拟了人类逐步推理的过程,让语言模型也能够逐步组织语言进行多步推理。
这种通过简单提示就能激发语言模型强大推理能力的发现极具启发意义。它展示了模型规模增长带来的惊人结果,以及探索语言内在的逻辑结构的巨大潜力。当然,语言模型生成的思路链不一定准确合理,还需要进一步提高其事实性。
思维链提示适用场景
算术推理:在数学文本问题解答等任务上,思路链提示可以大幅提高模型的算术推理能力,例如在 GSM8K 数据集上准确率提高了两倍。
常识推理:在需要常识推理的 CSQA、StrategyQA 等数据集上,思路链提示也显示出明显提升,证明其适用范围广。
符号推理:在符号操作任务上,思路链提示可以帮助模型推广到更长的未见过的序列,实现长度泛化。
总体来说,实验结果显示,相比标准提示学习,思路链提示可以显著提升大规模语言模型在需要复杂推理的任务上的表现,特别是在标准提示效果不佳的情况下,效果更加明显。这证明了思路链提示可以有效增强语言模型的复杂推理能力,为语言模型注入人类式的逻辑思维模式,是一种有效的训练范式。
分步骤思考(Zero-shot-CoT)
分步骤思考,学名叫Zero Shot Chain of Thought (Zero-shot-CoT)。它的意思是即使不用小样本提示,只是在问题后面加一句“let’s think step by step”(让我们来分步骤思考)也能提升大模型得到正确答案的概率。这是一种成本非常低的方法,用思维链还需要我们设计样本示范,而这种方法只需要加上简单一句话,大模型就会自行生成中间步骤进行推理。
添加之前:

添加“Let’s think step by step.”之后:

Zero-shot-CoT在提高算术、常识和符号推理任务的成绩方面很有效。
RAG
AI大语言模型所有用的知识受到训练数据的影响,如果训练数据里对某个领域的文本覆盖不多,AI学习到的不多,就没法很好地帮我们回答相关的问题。因此,在小众细分领域上,Al的表现有可能不尽人意。而且,像公司内部数据、个人私密文件等,也都不可能作为公开大语言的训练数据,我们没法指望ChatGPT能帮我们回答相关问题。一个应对方法就是,我们可以提供外部文档,让模型访问外部知识库,获得实时且正确的数据,生成更可靠和准确的回答,这种架构叫做检索增强生成。RAG (Retrieval-Augmented Generation)是一种用于自然语言处理的模型架构,它结合了检索(Retrieval)和生成(Generation)两种技术。RAG使用来自私有或专有数据源的信息来辅助文本生成的技术。它将检索模型(设计用于搜索大型数据集或知识库)和生成模型(例如大型语言模型(LLM),此类模型会使用检索到的信息生成可供阅读的文本回复)结合在一起。通过从更多数据源添加背景信息,以及通过训练来补充LLM的原始知识库,检索索增强生成能够提高搜索体验的相关性。这能够改善大型语言模型的输出,但又无需重新训练模型。
索引增强生成(RAG)
AI大语言模型所拥有的知识受到训练数据的影响,如果训练数据里对某个领域的文本覆盖不多,AI学到的也不多,就没法很好的帮我们回答相关问题,因此在小众细分领域上,AI的表现有可能不尽人意。而且像公司内部数据,个人私密文件等,也都不可能作为公开大语言模型的训练数据,我们没法指望ChatGPT能帮我们回答相关问题。一个应对方法就是我们可以提供外部文档,让模型访问外部知识库,获得实时且正确的数据,生成更可靠和准确的回答。这种架构叫做检索增强生成Retrieval Augmented Generation(RAG)。
具体来说,外部知识文档要先被切分成一个个段落,因为大语言模型一次性能接收的文本长度有限,然后每个段落会被转换成一系列向量。向量可以被看作是一串固定长度的数字,然后储存进向量数据库里。当我们提出问题的时候,输入的提示也会被转换为向量,然后查找向量数据库里和用户的查询向量最为接近的段落向量。找到以后,段落信息会和原本的用户查询问题组合到一起,一块传给AI,这样AI就能把外部文档的段落作为上下文,其余里面的信息给出更严谨的回答。因此你可以对外部文档里任何内容进行疑问,即使AI模型从来没有受到过那些内容的训练。


RAG有利于搭建企业知识库或个人知识库,ChatGPT的一些插件就是基于RAG架构的,官方也推出了上传PDF后,对PDF提问的功能,如果你会使用GPT的API,还可以用代码实现自己的增强索引生成。
程序辅助语言模型
大语言模型还有一个问题是我们没法把它用作计算器。当我们问他一个数学计算后,他没有真正帮忙做计算,只是在猜下一个最可能出现的token来生成回答。如果我们想让AI充当网店客服,他虽能巧舌如簧的介绍产品,却也会告诉客户错误的订单总额,这很危险。但是如果我们不要他做计算,而是把计算后的结果告诉他?
Program-Aided Language Models(程序辅助语言模型),简称PAL,可以帮助我们应对此类问题,它最早在2022年1篇论文里被提出。PAL的核心在于我们不让AI直接生成计算结果,而是借助其他善于做计算的工具,比如Python,我们给AI的要求变成了在设计计算步骤时生成得到计算结果所需的代码。

具体来说,首先为了让AI遵循我们的要求,可以借助思维链。首先在提示里通过小样本提示给模型示范如何分步骤思考,写出解决问题所需的变量赋值、数学运算等等代码,让模型照猫画虎。

在用户提问后,把用户的问题和我们已有的提示模板进行拼接,一并给到AI,让AI生成代码。接下来把AI返回的回答给到Python解释器,让Python解释器执行,并返回计算的结果。这个结果可以再给回到AI,让AI带着计算答案对用户的问题进行妥善回复。那相当于我们借用了大语言模型接受问题的耳朵、思考的脑子、说话的嘴,以及代码解释器做运算的手。

ChatGPT的Advanced Data Analysis功能可以被看成PAL的一个示例。借助内置的python解释器,ChatGPT能用编程逻辑和代码执行更准确的解答问题。如果会写代码的话,结合GPT的API自行实现程序辅助也是比较容易的。

推理行动结合
AI大语言模型还有一个局限性,那就是它所了解的知识天然受到训练数据日期的影响,比如说模型是去年训练完成的,训练数据里必然不包含今年的新闻,但模型也无从得知训练完成后发生的事情,这被称为知识截断。当我们问模型最近发生的事实时,模型要么会回复已经过时的信息,要么会胡编乱造一通,但重新训练模型的成本又是相当高的,也无法彻底解决数据过时的问题。
如果AI能对不了解的知识上网搜索,把找到的答案告诉我们就好了。但它怎么知道要去浏览什么网站,浏览时应该关注什么关键词,去找相关信息呢?2022年,一篇标题为《ReAct:在语言模型中协同推理与行动》的论文提出了ReAct框架,它不是热门前端框架那个react,而是Reason和Action,推理与行动结合的意思。React的核心在于让模型进行动态推理,并采取行动与外界环境互动,它同样可以和思维链结合。
我们会用小样本提示展示给模型一个推理与行动结合的框架,也就是针对问题把步骤进行拆分,每个步骤要经过推理、行动观察。推理是针对问题或上一步观察的思考,行动是基于推理与外界环境的一些交互,比如用搜索引擎对关键字进行搜索,观察是对行动得到的结果进行查看。
举个例子,如果问一个知识阶段在2022年1月的AI大约模型,2022年欧冠的冠军是哪个球队?他是无法回答上来的,但如果把搜索引擎作为AI可交互的工具,结合ReAct框架,他得到答案的过程可能会是这样:
(1)首先针对问题他会思考,要回答这个问题需要去查找赛果信息。这个AI能借助Bing,所以他的后续行动是搜索。
(2)接下来他开始观察行动带来的结果,也就是得到了一系列包含欧冠信息的网页。针对上一步行动的结果,他开始了新一轮推理,某个新闻网站的链接标题提到了决赛,所以可能包含需要的信息,因此对应这一步的行动就是点进那个链接。
(3)进入网页后,他观察到有一段话提到了夺冠球队,并且有决赛对手和比分信息。于是针对这些信息,他继续思考下一步应该进行引用,给用户提供答案。因此最后一步行动就是把查到的信息进行总结,告知用户最终答案。

通过ReAct可以看到模型一步步接近答案的任务解决轨迹与人类很相似了。通过分布推理的思维链,模型不仅可以获得更准确的答案,而且我们也可以通过这些轨迹进行验证。观察和行动步骤增加了与外界环境的交互,能够帮助模型突破一些固有限制,比如在搜索引擎输入关键字,查看网页上的信息等等,可以减少知识阶段带来的影响。将ChatGPT的Web Browsing功能,就是增加了与Bing搜索进行交互的能力,从而能够回答实时信息。这有利于用户对信息来源的可靠性和真实性进行验证。
而且ReAct框架的action行动不专指搜索和浏览网页,而是AI大语言模型所支持的任何行动。比如如果模型可以和代码解释器交互,那运行代码可以被作为行动选项;如果模型可以访问外部文档,那从文档里查找关键字可以被作为行动选项;如果模型可以调用某个应用的API,那和那个应用交互也可以被作为行动选项。要把不同外部数据和工具为模型所用,用代码实现的话,可以借助langchain等框架,帮助简化构建大语言模型应用程序的流程。
未来的发展方向
站在当下回望,AI 早已从 “能用” 走向 “好用”;而望向未来,它还将朝着更智能、更普惠、更贴近真实世界的方向持续进化。未来的核心趋势,主要集中在这几个方向:
AI Agent 智能体
不再是被动问答,而是能自主理解目标、规划步骤、自动执行任务的 “AI 助手”,真正帮人代劳复杂工作。
更强的多模态能力
文字、图像、音频、视频、3D 乃至实时交互全面融合,AI 会像人一样看懂、听懂、感知整个世界。
更小、更高效的轻量化模型
大模型不再只存在于云端,而是能跑在手机、边缘设备上,更快、更省资源、更隐私安全。
从工具到伙伴,从云端到身边,AI 的下一步,是真正融入各行各业、走进每个人的生活,成为推动效率与创新的底层力量。
订阅智宅客
AI / 技术 / 数字生活方式,新文章第一时间送到邮箱。








