生成式人工智能(Generative AI)
人工智能是目标,生成式人工智能就是我们的目标之一。
基本概念
什么是生成式人工智能?
生成式人工智能就是让机器产生复杂的、有结构的物件,如:文本、语音、图像等。而这些物件的在计算机中的表现就是数字,如文本就是一堆文字,文字编码成数字;语音就是一堆采样点;图像就是一堆像素点,这些都是数字。
那什么是复杂、有结构呢,要复杂到什么程度呢?
复杂到没有办法穷举。举个例子,让机器写一篇题目为《缝隙的联想》的100字的作文,这是今年的高考题目,假设中文常用字是1000(其实远不止),那么用中文组成这个100字的文章有多少种可能?就是1000^100=10 ^30,你想想有这么多种可能性,而宇宙种的原子总数才10 ^80,所以相当于机器要在近乎无穷种可能中找到最适当的那个组合。
那什么问题不是生成式人工智能问题呢?
如分类问题。这是机器学习中最常见的任务,比如垃圾邮件分类,猫狗分类等等。分类任务是从有限的选项中做选择,而生成任务就是机器创造出新的内容。
在生成式人工智能,我们常常会听到机器学习的概念。
那么什么是机器学习?
机器学习(Machine Learning)就是自动从资料里面找一个方程函数式(函式)。
举个例子,一次函式:y=f(x)=ax+b,对吧,这个是初中就学过的,已知两个点(x,y),就可以计算出这个函式的参数a,b。
之前我们是人力算出函式里面的参数,而机器学习就是用一系列的方法自动找出参数。那机器是怎么计算出参数的呢?
假设做一个猫狗分类任务,函式表示为:猫 or 狗 = f(输入的图片)
这个函数f(x)可不是只有a,b两个参数这么简单,而是有上万个参数组成,我们把这个上万个参数组成的函式就叫作模型Model。
我们收集一堆输入、输出的数据,喂给机器,机器学习就可以把这上万个参数个找出来,这个找参数的过程就是机器的学习过程,这个过程也可以叫做训练过程,即learning,traning。找参数时候喂给的数据,就叫做训练资料,找到这些参数以后,我们想测测机器到底学好了没有,这时候输入一张图片,看他输出什么,这些数据就叫作测试资料,这个过程就叫作测试testing,或推理inference。
有上万个参数的函式长什么样呢?我们很难想象。那今天在
机器学习的领域,是怎么表示这个有上万个参数的函式呢?
表示成一个类神经网络(Neural Network)。有人说类神经网络就是模仿人类大脑的学习,这个说法并不正确,其实一个类神经网络就是一个有大量参数的函式。当你把这个大量参数的函数表示成一个类神经网络,然后把这些大量参数解出来的技术,就叫作深度学习技术。所以,深度学习是机器学习的一种。当然,也有其他方法描述这个函式,但是当你用类神经网络描述它的时候,你做的就是深度学习技术。
概念之间的关系
人工智能、机器学习、深度学习、生成式等等,这些概念之间是什么关系呢?
机器学习是一种手段,生成式人工智能是目标,它们之间有交集的部分,也有各自独立的部分,比如:生成式人工智能的问题可以用机器学习的技术去解,可以用其他技术去解;机器学习不仅能解生成式人工智能的问题,也能解决其他问题,如分类问题。深度学习是机器学习一种。
但是今天,我们在网络上看到的它们之间的关系图,是画成这种:
把生成式人工智能放在机器学习里面,也能接受,因为今天生成式人工智能是一个非常困难的问题,也许除了深度学习,还没有发现更好的技术能够解决这个问题。
ChatGPT
ChatGPT背后就是深度学习技术,那么它是怎样一个原理呢?
ChatGPT也是一个函式,是一个可能有上亿个参数的函式。这个上亿个参数的模型,有个特别的名字,叫作transformer,是众多类神经网络的一种。
transformer模型(类神经网络的一种)长这样:
要打造出一个ChatGPT这样的人工智的函式,需要准备一大堆的输入和输出数据,比如:
然后训练模型,让机器学习把这上亿个参数找出来。这样就的得到了ChatGPT的函式。
那现在流行的其他AI画图工具(Stable Diffusion,Midjourny,DALLE等)是怎么做出来的?
这些AI画图也是一个函式。这些函式的输入就是一段文字,输出就是图片,显然这些函式也非常复杂,可能有上亿个参数。
然后为了计算出这上亿个参数,也需要准备一堆数据,这堆数据长这样:
机器学习的分类,回归问题只是机器学习解决的冰山一角,还有更复杂更苦难的问题,比如最近很火的生成问题(Generation),让机器产生有结构的复杂东西,如文本和图片等。用拟人化的说法,这种生成就是创造。这里的创造是指机器产生了它训练时候没有见过的数据,当然有人不认同这种说法,所以我们暂且将这个“创造力”加上引号。
目前生成式AI的挑战是什么?
按刚才的讲的,只要我们能收集足够多的数据资料,就能做生成式AI,但是也许训练资料怎么收集都是不够的,因为人类会问AI任何的问题,机器需要的答案可能训练集中从未出现,机器的“创造力”很重要。
那怎么理解ChatGPT的原理呢?
ChatGPT的核心原理通俗易懂来讲,就像是在做“文字接龙”。它每次只输出一个字,然后把这个字贴到输入的句子上,共同作为输入,模型就会输出下一个字,以此类推,最后模型输出end,意味着答案输出完毕。这个函式就是我们所说的语言模型。
-那把生成完整答案的这个事情,设计成文字接龙,有什么好处呢?
生成式AI的难点就是可能的答案是无穷无尽的,而文字接龙的答案是有限的(比如中文常用字为三四千个),而这一些列的文字接龙,就是相当于一系列的分类问题,机器回到从有限的选项中选择出答案的问题。本来很困难生成的问题就转换成了一系列的分类问题,变得可以解了。
再总结来看,语言模型就是生成式人工智能中的其中一个技术,并不是它的全部,因为事实上,生成并不一定用问文字接龙的方式,可以有不同的策略。
生成文章可以看作生成一系列的文字,生成图片可以看作生成一系列的像素点,语音可以看作生成一系列的采样点。这种把复杂的物件,拆解成较小的单位,再按照某种固定的顺序依次生成,这种生成策略就叫自回归生成策略(Autoregressive Generation),当然还有其他策略,我们日后都会讲到。
举个图片用像素点进行接龙生成的例子,openAI在很多年前就做过这样的工作,做出了影响版的GPT,但是这个方法并没有火起来,为什么呢?这个往后讲生成策略的时候再讲。
补充
生成式人工智能的概念是什么时候出现的呢?
生成式人工智能的概念并不是近期才出现的,李宏毅老师在2015年的课程就叫作《机器学习及其深层与结构化》。强调深层学习,是因为当年对deep learning还没有一个统一的翻译,深层学习更符合deep learning做的事情,现在当然统一翻译成深度学习了。强调结构化学习,就是今天的生成式AI,生成具有结构化的东西。
那过去的机构化学习和今天的生成式学习背后的技术有什么一样的地方吗?
没什么一样的地方。短短不到十年的时间,技术已经有了翻天覆地的变化。
生成式AI的哪些常见的应用呢?
如2006年上线的谷歌翻译
为什么今天的生成式人工智能比过去这么厉害呢?
下一篇大型语言模型具体介绍。
(学习李宏毅课程)