社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  chatgpt

ChatGPT的生成原理

人工智能学家 • 6 月前 • 148 次点击  

1


本文从基本概念出发,介绍和解释ChatGPT用到的一系列关键技术,如机器学习、神经网络、大模型、预训练+微调范式、Scaling Law……并对ChatGPT未来可能应用领域的多模态智能体(agent)进行展望。希望帮助读者更为深入地了解和使用以ChatGPT为代表的相关工具,助力读者成为人工智能时代的弄潮儿。




2022年11月30日,一家名不见经传的公司(OpenAI)悄悄上线了一个产品ChatGPT。彼时,谁也没有想到这款产品会在短短几个月内风靡全球;而2023年3月14日GPT-4的发布更是激起了一场属于生成式人工智能(artificial intelligence generated content, AIGC)的科技革命。对于普通人来说,面对这个正在给生产和生活带来巨大改变的人工智能产品,不禁会产生无数的疑问:

●ChatGPT为什么引起如此大的重视?

●它的原理是什么?

●它真的具备人类的智慧吗?

●它将给人类社会带来哪些变化?

……


ChatGPT原理概览:
文字接龙游戏


ChatGPT最令人印象深刻的能力是它能够通过对话的方式回答用户的问题,那么ChatGPT回答问题的原理是什么呢?传统的问答系统本质上是基于数据库和搜索引擎,即通过搜索引擎在网络与数据库中搜索相关信息,然后把结果直接返回给用户。比如我们使用百度搜索“机器学习的原理是什么”,百度会跳转出各式各样的网站。这些网站是由各个企业早就开发好的,百度仅仅是根据相关度做了一个排序。

不同于传统问答系统中答案来源于现成的网络或者数据库,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]

多层感知机的原理非常简单,但是透过它可以很好地了解神经网络的原理:虽然单个神经元非常简单,但是通过大量节点的组合就可以让模型具备非常强大的数学表达能力。而之后整个深度学习的技术路线,某种程度上就是沿着开发并训练更大更深的网络的路线前进的。


深度学习新范式:
预训练+微调范式与Scaling Law


深度学习领域从2012年开始蓬勃发展,更大更深且效果更好的模型不断出现。然而随着模型越来越复杂,从头训练模型的成本越来越高。于是有人提出,能否不从头训练,而是在别人训练好的模型基础上训练,从而用更低的成本达到更好的效果呢?

例如,科学家对一个图像分类模型进行拆分,希望研究深度学习模型里的那么多层都学到了什么东西[2]。结果发现,越接近输入层,模型学到的是越基础的信息,比如边、角、纹理等;越接近输出层,模型学到的是越接近高级组合的信息,比如公鸡的形状、船的形状等。不仅仅在图像领域如此,在自然语言、语音等很多领域也存在这个特征。


深度神经网络中不同层的输出  接近输入层(左侧)一般是基础信息,接近输出层(右侧)一般是某个具体的物体等信息[2]


基础信息往往是领域通用的信息,比如图像领域的边、角、纹理等,在各类图像识别中都会用到;而高级组合信息往往是领域专用信息,比如猫的形状只有在动物识别任务中才有用,在人脸识别的任务就没用。因此一个自然而然的逻辑是,通过领域常见数据训练出一个通用的模型,主要是学好领域通用信息;在面对某个具体场景时,只需要使用该场景数据做个小规模训练(微调)就可以了。这就是著名的预训练+微调的范式。

预训练+微调这一范式的出现与普及对领域产生了两个重大影响。一方面,在已有模型基础上微调大大降低了成本;另一方面,一个好的预训练模型的重要性也更加凸显,因此各大公司、科研机构更加愿意花大量成本来训练更加昂贵的基础模型。那么大模型的效果到底与什么因素有关呢?OpenAI在2020年提出了著名的Scaling Law,即当模型规模变大以后,模型的效果主要受到模型参数规模、训练数据规模和使用算力规模影响[3]

Scaling Law积极的一面是为提升模型效果指明了方向,只要把模型和数据规模做得更大就可以,这也是为什么近年来大模型的规模在以指数级增长,以及基础算力资源图形处理器(graphics processing unit,  GPU)总是供不应求;但Scaling Law也揭示了一个让很多科学家绝望的事实:即模型的每一步提升都需要人类用极为夸张的算力和数据成本来“交换”。大模型的成本门槛变得非常之高,从头训练大模型成了学界的奢望,以OpenAI、谷歌、Meta、百度、智谱AI等企业为代表的业界开始发挥引领作用。





GPT的野心:
上下文学习与提示词工程


除了希望通过训练规模巨大的模型来提升效果以外,GPT模型在发展过程中还有一个非常雄大的野心:上下文学习(in-context learning)。

正如前文所述,在过去如果想要模型“学”到什么内容,需要用一大堆数据来训练我们的模型;哪怕是前文讲到的预训练+微调的范式,依然需要在已训练好的模型基础上,用一个小批量数据做训练(即微调)。因此在过去,“训练”一直是机器学习中最核心的概念。但OpenAI提出,训练本身既有成本又有门槛,希望模型面对新任务的时候不用额外训练,只需要在对话窗口里给模型一些例子,模型就自动学会了。这种模式就叫作上下文学习。

举一个中英文翻译的例子。过去做中英文翻译,需要使用海量的中英文数据集训练一个机器学习模型;而在上下文学习中,想要完成同样的任务,只需要给模型一些例子,比如告诉模型下面的话:

下面是一些中文翻译成英文的例子:

我爱中国 → I love China

我喜欢写代码 → I love coding

人工智能很重要 → AI is important

现在我有一句中文,请翻译成英文。这句话是:“我今天想吃苹果”。

这时候原本“傻傻的”模型就突然具备了翻译的能力,能够自动翻译了。

有过ChatGPT使用经历的读者会发现,这个输入就是提示词(prompt)。在ChatGPT使用已相当普及的今天,很多人意识不到这件事有多神奇。这就如同找一个没学过英语的孩子,给他看几个中英文翻译的句子,这个孩子就可以流畅地进行中英文翻译了。要知道这个模型可从来没有专门在中英文翻译的数据集上训练过,也就是说模型本身并没有中英文翻译的能力,但它竟然通过对话里的一些例子就突然脱胎换骨“顿悟”了中英文翻译,这真的非常神奇!

上下文学习的相关机制到今天依然是学界讨论的热点,而恰恰因为GPT模型具有上下文学习的能力,一个好的提示词非常重要。提示词工程逐步成为一个热门的领域,甚至出现了一种新的职业叫作“提示词工程师”(prompt engineer),就是通过写出更好的提示词让ChatGPT发挥更大的作用。

ChatGPT原理总结如下:

(1) ChatGPT本质是在做文字接龙的游戏,在游戏中它会根据候选词汇的概率来挑选下一个词。

(2) ChatGPT背后是一个非常庞大的神经网络,比如GPT-3有1700亿个参数(训练成本在100万美元以上)。

(3)基于庞大的神经网络,面对一句话时,模型可以准确给出候选词汇的概率,从而完成文字接龙的操作。

(4)这种有巨大规模进行语言处理的模型,也叫作大语言模型(large language model)。

(5)以GPT为代表的大语言模型具备上下文学习的能力,因此一个好的提示词至关重要。

理解了ChatGPT的原理,相信有读者会进一步提问:ChatGPT虽然很神奇但终归是一个语言模型,为什么大家对它抱有如此高的期望呢?


ChatGPT的未来:
多模态的AI智能体


为了解ChatGPT为什么引起如此高的关注,我们可以回顾人类文明发展历史上公认的3次工业革命。

(1)第一次工业革命以瓦特蒸汽机为代表,其本质是发明并使用一些简单机器来解放人类的体力劳动。

(2)第二次工业革命以内燃机和电力的使用为代表,其本质是能够使用各种能源来解决机器的动力问题。

(3)第三次工业革命以电子和信息技术为代表,其本质是通过电子信息的方式加快信息收集、传输、处理的效率,并进一步优化了对机器的控制。

工业革命的本质在于用机器替代人类劳动从而解放生产力。前3次分别从机器、动力(能源)和控制(电子和信息)的角度解放了人类劳动,人类已经能够通过简单的方式来指挥机器生产。此时的生产逻辑是人类的大脑对外部信息做判断,机器根据人类大脑的判断来具体执行动作。这之后人类文明面对的最直接的问题就是如何将大脑也解放出来。这个问题成为人工智能研究中最核心的问题,即面对一个复杂的问题,能够同领域专家一样快速正确地做出回应——这恰好就是ChatGPT的能力所在。

表面上看以ChatGPT为代表的大语言模型的能力是正确回答问题,实际上它可以像人类大脑一样对复杂问题进行准确的决策,这就打通了人类技术的所有环节。比如在自动化实验领域,过去我们花了很多时间研究可编程机器人和机器人的精确控制,希望能够用机器人取代人类做一些科学实验,但是最后发现终归还是要由科学家来确定具体合成实验的操作,并给机器人详细编码(硬件或者软件方式)。有了ChatGPT,科学家只需要说出自己的需求,ChatGPT会自动在文献库里搜索相关材料配方,然后编写相关机器人指令,并指挥机器人自动合成相关材料,从而实现真正意义上的自动化实验[5]。这种能够自动感知环境、做出决策并采取行动的AI机器人,被称为AI智能体(agent)。

既然我们希望AI智能体能够处理现实生活中的复杂情况,那么传统大语言模型只能通过语言进行对话的能力就不够了。AI智能体要求模型能够读取各式各样的输入,比如图像信息、声音信息、不同传感器的信息、互联网的信息等,并能够根据智能体做出的决策再反过来进行合适的动作,比如输出一张图像或一段声音、写一段代码、操作机器人完成某项动作等。这种能够使用多种不同类型的输入或输出模式来处理信息和任务的能力,叫作多模态;而具备这种能力的智能体,被称为多模态AI智能体。以ChatGPT为代表的大语言模型的完善实际上为多模态AI智能体提供了强大的“大脑”,人类过去相关科学技术将会以前所未有的速度串联起来,相信《钢铁侠》(Iron Man)里的人工智能助理贾维斯(J.A.R.V.I.S.)会在不远的将来成为现实。


再看ChatGPT:
大语言模型真的具有智慧吗


对ChatGPT的介绍已经接近尾声,然而随着ChatGPT出现,另一个问题引起了广泛争议,那就是以ChatGPT为代表的大语言模型真的具有智慧甚至自我意识吗?这个问题实际上见仁见智,比如一部分学者认为ChatGPT本质上就是文字接龙的概率游戏,根本没有什么智慧可言,更不用说是自我意识;而另一部分学者则认为大语言模型庞大的参数里可能蕴含着一些对人类知识的理解,虽然不一定到“意识”的程度,但可以认为已经具备了一些智慧。

这些争论的本质实际上是因为在深度学习领域,实践应用已经远远领先于模型理论的研究。展望未来,一方面希望看到更多更先进的人工智能算法与应用的落地,从而更好地方便我们的生活;另一方面也希望人类能够更加了解我们创造出来的人工智能模型,从而打造出更加安全可靠的模型,让人工智能真正助力人类社会的进步。


作者简介

王一博:深势科技教学总监,北京科学智能研究院开源社区负责人,北京100080。wangyb@dp.tech

Wang Yibo: DPTechnology’s Director of the Teaching Division, Head of the open source community of AISI (AI for Science Institute, Beijing), Beijing 100080.


[1] Rumelhart D E, Hinton E G, Williams R J. Learning representations by back-propagating errors. Nature, 1986, 323(6088): 533–536.

[2] Wei D L, Zhou B L, Torralba A,et al. mNeuron: A matlab plugin to visualize neurons from deep models. (2015)[2024-07-05]. https://donglaiw.github.io/proj/mneuron/index.html.

[3] Kaplan J, McCandlish S, Henighan T, et al. Scaling laws for neural language models. arXiv preprint arXiv: 2001.08361, 2020.

[4] Zhao W X, Zhou K, Li J, et al. A survey of large language models. arXiv preprint arXiv: 2303.18223, 2023.

[5] Boiko D A, MacKnight R, Kline B, et al. Autonomous chemical research with large language models. Nature, 2023, 624(7992): 570-578.

关键词:ChatGPT   机器学习   神经网络   大模型   多模态智能体



  本文刊载于2024年第76卷第5期《科学》杂志(P45-P49)

《科学》杂志被评定为

2022年度

中国人文社会科学期刊AMI综合评价(A刊)扩展期刊


本刊已被中国知网、万方数字化期刊库、维普网、超星、龙源期刊网等多家数据库收录,并在今日头条上也有不定期转载,《科学》的今日头条账号昵称也是“科学杂志1915”。实体纸刊在中国邮政报刊订阅商城官网、杂志铺官网有售。



《科学》杂志于1915年1月在上海问世,
 早年由任鸿隽,杨杏佛,胡明复,赵元任等学者编辑写作,
是我国历史最长的综合性科学刊物。
杂志定位为高级科普期刊,致力于科学知识、理念和科学精神的传播,科学与人文互动,历史和前沿并举,为提升我国全民科学素质和建设创新型国家服务。杂志现任主编为中国科学院院士白春礼先生,主办单位为上海科学技术出版社有限公司

购买《科学》杂志
请拨打上海科学技术出版社邮购部电话:

021-53203260
联系人:王先生
工作时间:周一到周五,8:30-16:00


长按识别二维码
订阅《科学》



投稿邮箱:kexuemag@sstp.cn

《科学》编辑部收件地址:

上海市闵行区号景路159弄世纪出版园A座1006室

邮编:201101

编辑部电话:021-53203068

◎本文由《科学》杂志原创,转载请注明详情
 此色块为转载声明链接,转载请先阅读  
《科学》2024年第76卷第5期已出版发行




别忘了点赞 / 加关注哦!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/176269
 
148 次点击