来源:李宏毅 [[生成式AI导论]] https://speech.ee.ntu.edu.tw/~hylee/index.php
说明:湾湾说人工智慧,我们说人工智能。
人工智慧(目标)
人工智慧(Artificial Intelligence,AI),就是让机器展现「智慧」,不是人本身的智慧。
智慧又是什么呢?
讲到这边就已经卡住了,因为每个人心里所想的智慧通通都是不一样的。
我常常会接到有人请我讲跟a i相关议题的演讲。 那最近呢我通常是ChatGPT,那大家也都蛮能接受说哎,这个ChatGPT就是一种人工智慧。
但是我有听过有人抱着不一样的想法。他说你讲ChatGPT 那个不叫做人工智慧,要一个机器人跑来跑去才算是人工智慧。 和ChatGPT不是人工智慧,电脑要会选土豆才是人工智慧。
所以每个人对于什么叫做智慧,其实是有非常不一样的想象的。
人工智慧没有标准定义
所以人工智慧这个词它没有一个标准的定义,每个人心里所想的人工智慧都是不一样的。 所以如果你读人工智慧相关的论文,你会发现人工智慧相关的论文里面几乎不会提人工智慧这个词,因为它是一个没有清楚定义的词汇。
好,但是不管你怎么定义智慧这个词汇,人工智慧可以说是一个我们想要达到的目标。
它不是一个单一的技术,并没有哪一个技术叫做人工智慧,人工智慧是一个目标。
生成式人工智慧(Generative AI)
生成式人工智慧是由机器产生复杂而有结构的物件。
什么东西是复杂而有结构的呢?
- 文章: 由一连串的文字所构成的。
- 影像: 由一堆像素所组成的。
- 语音: 由一堆取样点所组成的。在对模拟语音信号进行数字化处理时,从模拟信号中定期采集的离散数据点。
复杂
要复杂到近乎没有办法穷举
我们来想象一个情景,今天你在ChatGPT跟他说用一百个字写一篇中文的文章,标题是《缝隙的联想》。那缝隙的联想是今年只考的作文题目了。 但你有没有想象过当人工智慧写一篇文章给你的时候,背后到底是做了什么样的事情。到底是一一排除多少了困难的问题。
写一篇文章到底有多困难呢?
想想看,假设你要写一篇一百字的文章,到底有多少种可能性? 你要把各种不同各式各样的中文的字组起来,组成一百字的文章到底有几种可能呢? 这个都是一个我们高中学过的排列组合的问题。我们假设中文常用的字是一千啊,当然中文实际上常用字是远超过一千了,为了计算方便就假设是问题。 好,那一百字的文章有多少可能性呢? 就是把一千连成一百次,一千连成一百次是多少?是一千的一百次方,也就是十的三百次方。 十的三百次方是一个很大的数目吗?它是一个大到不可思议的数目,宇宙中原子的数目估计只有十的八十次方而已。 哦,所以今天当机器要写一个一百字的文章的时候,它的可能性有十的三百次方那么多。 而机器要从十的三百次方里面挑出一个合理的答案,作为他给你的答复。
哦,所以这显然是一个非常困难的问题。
当机器解这个生成式ai的问题的时候,它是要从近乎无穷的可能中找出一个适当的组合。
什么样的问题不是生成式ai的问题
分类(classification), 是要让机器从有限的选项中去做选择,它就不是生成式ai的问题。
你已经告诉机器说有哪几个选项是可以选的当机器从有限的选项中做一个选择的时候,这不是一个生成式ai的问题。
垃圾郵件偵測
举例来说,gmail有这个垃圾邮件侦测的功能。有时候它如果侦测到一封信是垃圾邮件,会自动放到垃圾邮件夹里面。gmail在做垃圾邮件侦测的时候只有两个选项,给它一封信,它只有两个可能的答复,是垃圾邮件或不是垃圾邮件。 这种选项有限的情况下就不是生成式a i或你作为。
貓狗分類器
影像辨识系统只能够分类一张图片里面有猫还是有狗,他只会说有猫或有狗,只有两个可能的答案,从有限的选项中做选择,这不是生成式人工智慧。 所以从有限的选项中做选择,这种问题今天叫做分类,它不是生成式人工智慧的一种。
人工智慧是一个虚无缥缈的目标,每个人的想象都不太一样。而生成式人工智慧是人工智慧众多可能的目标之一,让机器可以产生复杂有结构的物件,比如说文字,比如说图片,比如说一段声音。
什么是机器学习?
机器学习是让机器可以自动从资料里面找出一个函数。
如果你觉得这句话讲起来很抽象的话,那我直接举一个具体的例子告诉你什么叫从资料里面找一个函数。以下这个问题是你在国中的时候一定做过的问题。
![[AI 20240524094136.png]]
你在国中的数学课本里面是不是有这样的问题?就我给你一个函数,这个函数的输出叫做y,输入叫做x。这个函数我们用 来表示它,那接下来题目里面就往往有这样的叙述。
假设输入等于4的时候,x等于4的时候输出y等于5。 假设输入x等于2的时候,输出y等于-1。一问你a、b应该多少?然后呢,你就经过一番运算,你忘了怎么运算也没有关系,反正解出来a等于3,b等于-7。 好,那有了这个3跟-7以后,你就可以带入新的x算出y是什么。有一个新的x等于1啊,就把 啊,得到。
参数
好的,a跟b这两个未知数啊,在机器学习的领域里面我们又叫做参数啊,它的英文是parameters啊,所以如果我今天提到参数的时候,我指的就是我们要找出来的那个未知数。
那机器学习跟你国中的时候解的这个问题有什么不一样的地方呢?它唯一的不同是国中的时候你是用人力去算出这个参数。而机器学习是一系列的方法,自动的把参数算出来。把题目给好以后,参数就可以自动被算出来。
为什么我们不用人力解,要让机器自动找参数呢?
因为我们真正要面对的问题往往比我们国中的时候学过的 还要复杂的多。
假设我们今天呢要让机器学会分辨一张图片里面是有猫还是狗。
![[AI 20240524094442.png]] 那你需要的可能是找一个函式 ,这个函式的输入是一张图片。今天就想象有一个函式叫做f,它的输入是一张图片,它的输出只有两个是猫猫、狗狗。如果你可以找到这个函式,你就可以拿它来辨识一张图片是猫还是狗。
那这样子的函数显然非常的复杂。如果我说这个函数只等于它显然不可能可以辨识猫跟狗。它非常的复杂,里面可能需要有上万个参数。 那我这边用a、b、c、d来表示参数了,那我不过用a、b、c、d英文字母作为符号来表示参数显然是不够的。
我们这边可能这个式子里面会有上万个参数,那么一个有上万个参数的式子到底长什么样子呢?你可能这辈子从来没有看过一个有上万个参数的数学式,它到底应该长什么样呢?你可以在心里想象有一个上万个参数的式子。
它这个题目的叙述是如果输入这个函式的,输入是这只这只白色的猫的话,输出就要是猫。 这个答案输入是棕色的狗,输出就是狗。 输入是这个超人猫,输出就要是猫。 输入是这个黑色的狗,输出就要是狗。 好,有了这些输入跟输出的关系以后,接下来机器学习这个技术就可以帮助你把上万个参数给它找出来。
然后这里有上万个参数是人类都没有办法想象这个函数应该长什么样子。但是机器学习这个技术,可以帮助你在给这些输入输出的条件限制的情况下,把这上万个参数找出来。
模型
那这个有上万个未知参数的函式啊又叫做模型。那我知道说模型这个词汇,其实在不同的文献上往往有不同的称呼(模型这个词被用烂了)。就是只在机器学习的领域里面,往往不同不同人提到模型的时候,他指的也是不一样的东西。 那在这门课里面,当我讲模型的时候,我指的是一个带有大量未知参数的函数。
学习
机器学习的学习到底在哪里?这个学习啊指的就是把这个上万个参数找出来的过程。
这个把上万个参数找出来的过程又叫做训练training,或者是又叫学习learning。 所以我们讲机器学习的时候,所谓的机器学习指的就是把这个上万个参数找出来的过程。
训练资料
那这个帮助你找出上万个参数的输入输出的限制,就叫做训练资料。
那找出这上万个参数以后,你就可以把这些参数带入刚才的模型里面,你就知道这个函式长什么样子。 有一张新的图片进来,正在打电脑的猫,期待机器就可以给出正确的输出。
测试或推论
那找出参数以后,给这个函数一个新的图片,看看它会输出什么。这件事情叫做测试Testing,或者叫做推论inference。
类神经网络(Neural Network)
![[AI 20240524095642.png]] 有上万个未知数的这个函数,你非常难想象它是什么。而今天在机器学习的领域,通常怎么表示这个有上万个参数的函数呢?今天往往它被表示成一个类神经网络。那有人可能会想说,类神经网络听起来就跟人类的大脑好像很有关系。那类神经网络不是应该是模仿人类大脑学习的吗?我告诉你这个讲法就是骗你的,你知道吧?这农场文随随便便讲出来骗麻瓜的。
其实一个类神经网络就是一个有非常大量参数的函式。就当你今天把你的这个有大量参数的函数表示成一个类神经网络,然后把这些参数解出来,这个技术就叫做深度学习 DeepLearning。所以深度学习是机器学习的一种。
你当然有其他方法来描述这个函数,但是当你用类神经网络来描述它的时候,你做的事情就是深度学习。
机器学习与人工智慧的关系
![[AI 20240524095818.png]]
机器学习它是一种手段,所以它跟生成式人工智慧有交集的部分,但也有各自独立的部分。
- 生成式人工智慧你当然可以用机器学习来解,但你也可以用非机器学习的方法来解。
- 机器学习不是只能解深层次人工智慧,也可以解其他的问题,比如说分类的问题。
- 深度学习是机器学习的一种。
那我相信你在网络上更常看到的深层次人工智慧、深度学习、机器学习的关系是画成这个样子。 ![[AI 20240524100308.png]] 那你把生成式人工智慧放在机器学习里面,我也勉强能够接受。
因为今天生成式人工智慧是一个非常困难的问题,也许其他手段都不足以达成让你满意的结果。今天生成式人工智慧通常都是以深度学习技术来达成的。所以如果你看网络的文章,在描述机器学习、深度学习、生成式人工智慧关系的时候,往往会说生成式人工智慧是深度学习的一种。这我也可以接受。
虽然他们所要讲的是不一样的东西,深度学习是一个技术,生成式人工智慧是一个目标。但是今天通常会用机器学习的,都通常会用深度学习的技术来达成深层次人工智慧。所以我也可以接受你把深层次人工智慧放在深度学习里面。
怎么实现生成式AI?
想一想ChatGPT按照机器学习深度学习的概念,它可能是怎么被打造出来的? 其实ChatGPT也可以想象成是一个函数,这个函数的输入就是一段文字,输出就是ChatGPT给你的回复。 但像ChatGPT这么厉害的人工智慧,你为什么它都能够有问必答?它显然背后的函数它非常非常的复杂,复杂到什么地步呢?复杂到它里面可能有上亿个数十亿个参数,它的模型里面可能有上亿个参数。那这个有上亿个参数的模型,也就是类神经网络。今天有一个特别的名字叫做Transformer。ChatGPT 背后用的模型叫做transformer,它是类神经网络的一种。
那就机器学习的概念而言,要打造ChatGPT这样子的人工智慧,要找出一个可以做像ChatGPT这样事情的函式。也许你需要的就是准备一大堆的输入跟输出。 告诉你的模型说输入人工智慧输输出就是这样,输入这样叫输出这样输入这样输输出这样输出这样要输出这样也许准备一大堆输入跟输出的关系,让机器学习或深度学习的技术把上亿个参数找出来,我们就可以打造出一个ChatGPT。
或者是用同样的概念,也可以打造一个可以画图的a i。今天有很多可以画图的a i,比如说stable diffusion,比如说midjourney,比如说DALL-E。
这些可以画图的a i你也可以把它想成是一个函式。这些函式的输入是什么?输入就是一段文字,输出是什么?输出就是一张图片。而这个函式显然也会非常的复杂,显然也该有上亿个参数。那怎么把这个函数找出来呢?我们就需要告诉机器输入跟输出之间的关系。现在是输入文字,输出图片。所以你就要告诉机器说,如果有人告诉你彩色的卡通猫,那你输出应该这样。有人输入奔跑的猫输出应该涨价,有人输入海滨的黑狗应该涨价等等等等。你收集一大堆文字跟它对应的图片,然后就可以交由深度学习的技术找出函式。把上一个参数找出来,你就可以找出一个函式,就可以让机器输入一段文字,输出一张图片。
那其实生成这件事啊,我在课堂上过去的机器学习课堂一直都是有提到的。这一页投影片是来自五年前2019年机器学习课堂的投影片。这些投影片是这样讲的,大家不知道有没有看过《猎人》这个漫画,《猎人》是这样子的一个故事的,你以为的五大洲并不是世界的全部,这只是世界的一小部分。其实我们都是活在一个很大的湖里面,湖外面才是真正的世界,叫暗黑大陆,里面有各式各样的神奇生物。 而就机器学习的领域而言,分类这种从有限的答案中去得到一个选项的这种问题就是你所熟知的世界。但是外面还有更困难更有挑战性的技术。 过去我说就是让机器产生有结构的复杂的东西,比如说文具、图片,它就是生成。 那如果机器可以成功做到生成,我在2019年的时候就说用拟人化的讲法,可以说他学会了创造。 不过在2019年的时候我会说暗黑大陆离我们还很遥远,就像库拉皮卡不知道什么时候才会登陆暗黑大陆一样。 但现在已经是2024年了,库拉皮卡离暗黑大陆还遥遥无期,但是我觉得现在可以说是已经见到暗黑大陆的守门人了。
生成式ai的挑战是什么呢?
按照刚才的想法,我们只要收集够多的资料,找出一个函数就可以做生成式ai但你再仔细想一想,我们的训练资料也许怎么收集都是不够的。 今天对生成式ai而言,人类在测试的时候可能会问任何的问题,机器的答案需要跟训练,机器需要得到的答案可能跟训练的时候完全不同。
今天有人问,叫你写一篇跟缝隙的联想有关的文章啊,今年只考的作文啊。 这个要求过去可能在你的训练资料里面一次都没有出现过。你如果出现过的话,那就泄题了嘛。所以这是一个全新的问题,在训练资料里面一次都没有出现过。 但如果你的模型要得到正确的答案,它显然需要创造全新的文句,是训练的时候一次都没有出现过的文句。那到底机器要怎么做到这件事呢?
如果机器可以做到在测试的时候,产生训练的时候,从来没有创出现过的文具,也许我们就可以说机器具有某种程度的“创造力”。(但我这边是加了一个引号了,也许有人并不认同,呃,只要能够产生训练的时候没有看过的文具,就算是有创造力。也许这也许这样的定义不是每个人都可以认同的,但我这边的创造力指的意思就是机器可以产生它训练的时候一次都没有看过的答案。)
好,那今天像 ChatGPT 这样子的人工智慧,是怎么做到产生一次都从来没有看过的答案的呢?这边我先用一页口影片跟大家说明,未来我们还会讲的更仔细一点。
ChatGPT的核心精神可以用四个字来概括,就是文字接龙。 原本我们在做生成式ai的时候,觉得是一个很难的问题,因为一段文字的可能性是无法穷尽的。
但是在ChatGPT 里面生成一个答案,被拆解成一连串的文字接龙的问题。
本来你问机器台湾最高的山是哪座? 你今天的目标是要机器打出玉山这个答案。但实际上ChatGPT做的事情并不是直接把完整的答案生出来。他做的事情是去做了一系列的文字接龙。 他去预测说这个句子后面应该接哪一个字是合理的,比如说可能接玉是合理的。 那产生一个合理的可以接在输入后面的字以后,再把这个字贴到前面去,再做一次文字接龙。“台湾最高的山是哪座?玉”后面接哪个字是合理的呢? 也许接山是合理的。那再把山贴到输入去,现在的问题变成“台湾最高的山是哪座?玉山。” 然后要机器输出什么呢?也许机器觉得也许机器觉得已经没有什么好输出了,这个就是句子的结束了,它就输出结束这个符号,那整个生成的过程就结束了,机器也得到了玉山这个答案。
语言模型
哦,这个能够做文字接龙的模型有一个名字就叫做语言模型。
那我相信大家在报章杂志上,最近一定常最近一定常常听到语言模型这个词汇。其实它指的就是一个在做文字接龙的模型。那把本来要生成一个完整答案这件事情改成一系列的文字接龙有什么样的好处呢?本来我说深生成式AI的难点就是可能的答案是无穷无尽的那我们再来想想文字接龙这个问题,文字接龙的答案是有限的。现在机器要解的问题是一系列同样的文字接龙的问题。而文字在做文字接龙的时候,机器要做的就是猜出下一个字可以接什么。
那如果中文的常用字可能就是三四千个,是有限的。所以这个时候本来生成式a的问题,把它变成文字接龙以后,它就变成了一系列的分类的问题。 及其回到从有限的选项中,选出答案的问题了。而从有限的选项选出答案,是我们人类一直都知道怎么做的事情。所以本来很困难的生成一整段文章的这些问题,就变成文字接龙的问题,一系列分类的问题,而变得可以解了。但至于实际上到底是怎么解的,才变成像今天这么厉害的ChatGPT,那这个就是往后课程的内容了。
但是语言模型并不是生成式人工智慧的全部,它只是生成式人工智慧的其中一个技术而已。 事实上生成并不一定要用文字接龙的方式,生成可以有不同的策略。
在我们刚才的叙述里面,我们说怎么生一篇文章,因为文章是由文字构成的,所以生一篇文章这个这个这个任务可以看作是生成一个图片的文字。 但其实同样的概念好像也可以拿来生成其他东西。比如说生成图片,我们知道图片是由像素所构成的,所以既然文字接龙可以解生成图片的问题,像素接龙也有机会可以解生成图片的问题。
生成策略:auto-regressive generation
这种把复杂的物件拆解成较小的单位,再按照某种固定的顺序把这些较小的单位生成出来的这种策略。
今天有一个名字叫做 auto-regressive generation ,那像ChatGPT就是采用了 auto-regressive generation。
至于还有什么其他的策略,我们日后都会再讲到。
影像版 GPT
有没有人尝试用像素接龙的方式来生图片呢?有,其实open a i在很多年前就打造了影像版的GPT,用像素接龙的方式来产生图片。但这个方法后来并没有红起来。(为什么没有红起来?这个是往后我们在讲到生成策略的时候才会跟大家说明的。) // TODO
生成式人工智慧不是今天才有
那生成式人工智慧啊不是今天才有的,他一直都有人在研究。
其实在2015年,我刚开的第一堂机器学习的课程并不叫机器学习,它叫《机器学习及其深层与结构化》。那我打算要强调两个重要的技术,一个是深层学习。你可以问深层学习是什么?跟深度学习有什么关系?它就是深度学习。那那个时候呢deep learning还没有统一的中文翻译,所以我是翻成深层学习。我觉得深层学习比较符合deep learning实际上做的事情,不过后来大家都翻成深度学习就是了。那什么是结构化呢?结构化学习就是今天的生成式ai,因为生成式ai就是要生成有结构的东西,所以过去我们叫做结构化学习,不过今天我们叫做生成式学习。
好,那过去2015年讲的结构化学习跟今天的生成式ai它背后的技术有什么一样的地方呢? 你可以看看过去的课程,结论就是没什么一样的地方,这个技术变化真的非常的快,短短不到十年的时间,技术已有了翻天覆地的变化。但是生成式ai这个概念其实不是今天才有的。
因为生成式a的概念其实不是今天才有,生成式ai相关的应用早就充斥在你的日常生活中。
举例来说,google翻译,大家知道google翻译是什么时候上线的吗?是2006年就上线了,非常早就已经有goole翻译了。而翻译这件事情本来就是生成式ai的其中的应用。因为机器需要产生一段文字,这本来就是一种生成式ai。而且翻译的时候,人可能会的可能的输入,你可能要翻译的文字是千变万化的。不管输入什么样的文具,都要得出一个合理的对应的翻译,而这个正确的对应的翻译,可能在训练资料里面一次都没有出现过,所以翻译本来就是一个生成式ai的问题。
所以生成式ai不是只有今天才有,但是为什么今天今日生成式ai突然爆红起来了呢?到底是发生了什么事?这个是我们下一个阶段的课程,会再帮大家剖析的。//TODO
加餐
《八十分钟讲大型语言模型》,了解ChatGPT是怎么被打造出来的,等于是一个预习,未来我们还会讲更多这方面的知识。