2022年11月30日,一家名不见经传的公司(OpenAI)悄悄上线了一个产品ChatGPT。彼时,谁也没有想到这款产品会在短短几个月内风靡全球;而2023年3月14日GPT-4的发布更是激起了一场属于生成式人工智能(artificialintelligencegeneratedcontent,AIGC)的科技革命。对于普通人来说,面对这个正在给生产和生活带来巨大改变的人工智能产品,不禁会产生无数的疑问:
●ChatGPT为什么引起如此大的重视
●它的原理是什么
●它真的具备人类的智慧吗
●它将给人类社会带来哪些变化
ChatGPT原理概览:文字接龙游戏
比如我们问ChatGPT:“苹果是一种水果吗”,ChatGPT会基于这句话进行文字接龙,大概流程如下:
(1)考虑下一个可能的词汇及其对应的概率,如右表(为了方便理解只写了3个可能的形式)所示。
(2)基于上述概率分布,ChatGPT会选择概率最大的答案,即“是的”(因为其概率0.8明显大于其他选项)。
(3)此时这句话的内容变成“苹果是一种水果么是的”,ChatGPT会看下一个可能的词和对应概率是什么。
不断重复这个步骤,直到得到一个完整的回答。
从上面例子可以看出:
(1)不同于传统问答基于数据库或搜索引擎,ChatGPT的答案是在用户输入问题以后,随着问题自动生成的。
(2)这种生成本质上是在做文字接龙,简单来说是不断在所有可能词汇中选择概率最大的词汇来生成。
有些聪明的读者会有一个疑问,ChatGPT是怎么知道该选择什么词汇,又是如何给出各个可能词汇的概率呢这正是机器学习技术的神奇之处。
机器学习的核心:模仿人类进行学习
ChatGPT是机器学习的一个非常典型的应用,那么什么是机器学习呢
机器学习和模型训练卡通示意图
神经网络与神经元:可扩展的数学表达能力
理解了机器学习是什么,另一个概念是机器学习模型的数学表达能力。机器学习模型本质上是想要尽可能接近真实世界对应的那个函数。然而正如我们不能指望仅仅通过几条直线就画出精美绝伦的美术作品,如果机器学习模型本身比较简单,比如高中学到的线性函数
Y=kx+b
那么它无论如何也不可能学习出一个复杂的函数。因此机器学习模型的一个重要考虑点就是模型的数学表达能力,当面对一个复杂问题的时候,我们希望模型数学表达能力尽可能强,这样模型才有可能学好。
过去几十年科学家发明了非常多不同的机器学习模型,而其中最具影响力的是一种叫作“神经网络”的模型。神经网络模型最初基于生物学的一个现象:人类神经元的基础架构非常简单,只能做一些基础的信号处理工作,但最终通过大脑能够完成复杂的思考。受此启发,科学家们开始思考是否可以构建一些简单的“神经元”,并通过神经元的连接形成网络,从而产生处理复杂信息的能力。
基于此,神经网络的基础单元是一个神经元的模型,其只能进行简单的计算。假设输入数据有2个维度(x1,x2),那么这个神经网络可以写成
y=σ(w1x1+w2x2+b)
从神经元到神经网络(a)神经元架构(生物);(b)基础神经元架构(人工智能);(c)简单多层感知机。
上述神经元的数学表达能力非常弱,只是一个简单的线性函数和一个激活函数的组合;但是我们可以很轻松地把模型变得强大起来,方案就是增加更多的“隐藏节点”。在这个时候虽然每个节点依然进行非常简单的计算,但组合起来其数学表达能力就会变得很强。感兴趣的读者可以尝试类比上述公式写出下图中简单多层感知机对应的公式,将会得到一个非常复杂的公式。这个模型也是日后深度学习的基础模型,即多层感知机[1]。
多层感知机的原理非常简单,但是透过它可以很好地了解神经网络的原理:虽然单个神经元非常简单,但是通过大量节点的组合就可以让模型具备非常强大的数学表达能力。而之后整个深度学习的技术路线,某种程度上就是沿着开发并训练更大更深的网络的路线前进的。
深度学习新范式:预训练+微调范式与ScalingLaw
深度学习领域从2012年开始蓬勃发展,更大更深且效果更好的模型不断出现。然而随着模型越来越复杂,从头训练模型的成本越来越高。于是有人提出,能否不从头训练,而是在别人训练好的模型基础上训练,从而用更低的成本达到更好的效果呢
例如,科学家对一个图像分类模型进行拆分,希望研究深度学习模型里的那么多层都学到了什么东西[2]。结果发现,越接近输入层,模型学到的是越基础的信息,比如边、角、纹理等;越接近输出层,模型学到的是越接近高级组合的信息,比如公鸡的形状、船的形状等。不仅仅在图像领域如此,在自然语言、语音等很多领域也存在这个特征。
深度神经网络中不同层的输出接近输入层(左侧)一般是基础信息,接近输出层(右侧)一般是某个具体的物体等信息[2]。
基础信息往往是领域通用的信息,比如图像领域的边、角、纹理等,在各类图像识别中都会用到;而高级组合信息往往是领域专用信息,比如猫的形状只有在动物识别任务中才有用,在人脸识别的任务就没用。因此一个自然而然的逻辑是,通过领域常见数据训练出一个通用的模型,主要是学好领域通用信息;在面对某个具体场景时,只需要使用该场景数据做个小规模训练(微调)就可以了。这就是著名的预训练+微调的范式。
预训练+微调这一范式的出现与普及对领域产生了两个重大影响。一方面,在已有模型基础上微调大大降低了成本;另一方面,一个好的预训练模型的重要性也更加凸显,因此各大公司、科研机构更加愿意花大量成本来训练更加昂贵的基础模型。那么大模型的效果到底与什么因素有关呢OpenAI在2020年提出了著名的ScalingLaw,即当模型规模变大以后,模型的效果主要受到模型参数规模、训练数据规模和使用算力规模影响[3]。
ScalingLaw积极的一面是为提升模型效果指明了方向,只要把模型和数据规模做得更大就可以,这也是为什么近年来大模型的规模在以指数级增长,以及基础算力资源图形处理器(graphicsprocessingunit,GPU)总是供不应求;但ScalingLaw也揭示了一个让很多科学家绝望的事实:即模型的每一步提升都需要人类用极为夸张的算力和数据成本来“交换”。大模型的成本门槛变得非常之高,从头训练大模型成了学界的奢望,以OpenAI、谷歌、Meta、百度、智谱AI等企业为代表的业界开始发挥引领作用。
GPT的野心:上下文学习与提示词工程
除了希望通过训练规模巨大的模型来提升效果以外,GPT模型在发展过程中还有一个非常雄大的野心:上下文学习(in-contextlearning)。
正如前文所述,在过去如果想要模型“学”到什么内容,需要用一大堆数据来训练我们的模型;哪怕是前文讲到的预训练+微调的范式,依然需要在已训练好的模型基础上,用一个小批量数据做训练(即微调)。因此在过去,“训练”一直是机器学习中最核心的概念。但OpenAI提出,训练本身既有成本又有门槛,希望模型面对新任务的时候不用额外训练,只需要在对话窗口里给模型一些例子,模型就自动学会了。这种模式就叫作上下文学习。
举一个中英文翻译的例子。过去做中英文翻译,需要使用海量的中英文数据集训练一个机器学习模型;而在上下文学习中,想要完成同样的任务,只需要给模型一些例子,比如告诉模型下面的话:
下面是一些中文翻译成英文的例子:
我爱中国→IloveChina
我喜欢写代码→Ilovecoding
人工智能很重要→AIisimportant
现在我有一句中文,请翻译成英文。这句话是:“我今天想吃苹果”。
这时候原本“傻傻的”模型就突然具备了翻译的能力,能够自动翻译了。
有过ChatGPT使用经历的读者会发现,这个输入就是提示词(prompt)。在ChatGPT使用已相当普及的今天,很多人意识不到这件事有多神奇。这就如同找一个没学过英语的孩子,给他看几个中英文翻译的句子,这个孩子就可以流畅地进行中英文翻译了。要知道这个模型可从来没有专门在中英文翻译的数据集上训练过,也就是说模型本身并没有中英文翻译的能力,但它竟然通过对话里的一些例子就突然脱胎换骨“顿悟”了中英文翻译,这真的非常神奇!
ChatGPT原理总结如下:
(1)ChatGPT本质是在做文字接龙的游戏,在游戏中它会根据候选词汇的概率来挑选下一个词。
(2)ChatGPT背后是一个非常庞大的神经网络,比如GPT-3有1700亿个参数(训练成本在100万美元以上)。
(3)基于庞大的神经网络,面对一句话时,模型可以准确给出候选词汇的概率,从而完成文字接龙的操作。
(4)这种有巨大规模进行语言处理的模型,也叫作大语言模型(largelanguagemodel)。
(5)以GPT为代表的大语言模型具备上下文学习的能力,因此一个好的提示词至关重要。
参考文献:
[1]RumelhartDE,HintonEG,WilliamsRJ.Learningrepresentationsbyback-propagatingerrors.Nature,1986,323(6088):533–536.
[3]KaplanJ,McCandlishS,HenighanT,etal.Scalinglawsforneurallanguagemodels.arXivpreprintarXiv:2001.08361,2020.
[4]ZhaoWX,ZhouK,LiJ,etal.Asurveyoflargelanguagemodels.arXivpreprintarXiv:2303.18223,2023.
[5]BoikoDA,MacKnightR,KlineB,etal.Autonomouschemicalresearchwithlargelanguagemodels.Nature,2023,624(7992):570-578.