一堂課搞懂生成式人工智慧的技術突破與未來發展
# 【生成式AI时代下的机器学习(2025)】第一讲:一堂课搞懂生成式人工智慧的技術突破與未來發展 ## 一、课程导论与预习建议 本课程旨在用一堂课的时间,快速带大家了解**生成式人工智能(Generative AI)**近年来的发展现状以及未来值得关注的技术。同时,这也是对本学期课程内容的一个...
Category: Hung-yi Lee本课程旨在用一堂课的时间,快速带大家了解生成式人工智能(Generative AI)近年来的发展现状以及未来值得关注的技术。同时,这也是对本学期课程内容的一个快速概览。
在讲授今天这堂课时,我将假定大家对生成式人工智能没有太多认识,即便没有相关背景知识也能听懂。但是,本学期后续的课程,我将假定大家已经预习过《生成式 AI 导论 2024》和《机器学习 2021》这两门课程。
因此,我希望大家在下下次(3 月 7 日)上课前预习以下内容:
| 课程系列 | 预习目标 | 目的 |
| :--- | :--- | :--- |
| 生成式 AI 导论 2024 | 至少看到第八讲,最好能全部看完。 | 假设你对大型语言模型(LLM)的训练一无所知,应先观看此系列。内容轻松,可在吃饭、运动、通勤时间观看。 |
| 机器学习 2021 | 至少看到 Transformer 下集。 | 现在每天看一部影片,到下次上课前也能看完。 |
如果你不知道该从哪里看起,我推荐观看《生成式 AI 导论 2024》和《机器学习 2021》这两个系列,它们提供了完整的、能从头看到尾的内容,看完后将会有很多的收获。
今日课程大纲:
我们先从人工智能的行为开始讲起。对于生成式人工智能可以做什么,这张投影片的内容大家可能已经看到不想再看了。既然如此,我就交给我的 AI 分身来讲授吧。
(AI分身演讲内容概览)
“各位同学,看到这张图,有没有觉得很厉害?现在人工智能什么都能生成。你可能会想,‘哇靠,是不是以后都不用我了?’放心,人工智能也吃软饭,但还是需要你来下指令嘛!这堂课就是要带你轻松看懂这些人工智能厉害在哪里。”
这个 AI 分身不仅人脸是生成的,他所讲的话,包括内容,也都是生成出来的。
我是如何产生出这样一个 AI 分身的呢?
因此,有了投影片之后,要生成一个数字人(Digital Human)来直接讲课是可能的。
然而,真正的难点并不在讲课环节。准备一门课最花时间的其实是做投影片。真正花时间的地方不在于制作投影片的过程,而是构思投影片的内容。除非你的投影片是直接跟别人借的,否则做一门课的投影片是最耗时的。
那么,我们能不能直接让 AI 来制作投影片,从而淘汰老师呢?
我向 ChatGPT Deep Research 提出了要求:我要准备一堂名为“一堂课搞懂生成式 AI 的技术突破与未来发展”的课,请给我投影片内容,而且我特别交代内容要“非常有趣”。
* *AI的笑话举例:* “据说 GPT-4 还曾被用来创作笑话和段子,不过 AI 的冷笑话有时候只有它自己懂。哇,它知道它讲的笑话很冷啊!我问它有什么程序员的笑话,它说:‘我昨天写了一个递归程序,结果今天还在执行。嗯,好吧,我笑了,你呢?’我也笑了,因为这个笑话完全不知道它在讲什么,它是荒谬到让人想笑。”
> “扩散模型(Diffusion Model)其实很浪漫。为什么?因为它告诉我们,就算人生一团乱,全是杂讯,只要一步一步努力去除杂讯,也能拼出美丽的风景。AI都这么励志了,我们还能不努力吗?”
> “我从来没有想过扩散模型(Diffusion Model)背后有这么励志的故事,AI实在是太有创意了。”
尽管产生了这么长的内容,要把它整理成投影片还是需要花时间的。因此,我们决定“更懒惰一点”,直接跟 ChatGPT 说:“把上述内容做成投影片让我下载。”
现在,我们使用人工智能生成的投影片来上课。
(讲者按:这个描述“有讲跟没讲一样”,不知道在说什么。)*
* GPT-4。
* DALL-E 2。它说 DALL-E 2 解析度提升四倍。
(讲者按:提升四倍是相对于谁提升的,也没讲清楚。)*
* Stable Diffusion:开源的文本生成图像模型。
* Transformer。
* 生成对抗网络(GAN)。
* 扩散模型(Diffusion Model)。
* 文字生成。
* 图像合成。
* 音乐创作。
* 程序代码生成。
(注:投影片右侧的配图是 Gamma 自己生成的,有时与左侧文字不完全匹配。)*
* 内容滥用问题。
* 偏见与公平性问题。
* 隐私问题。
* 高昂的计算成本。
* 技术优化,降低成本。
* 多模态(Multimodality)与深度理解。
* 人机协作。
* 规范伦理的引导需要被完善。
因为我要求课程有趣,投影片中准备了一些趣味案例:
*(讲者总结)*如果我是一个懒惰的老师,我真的就可以用刚才的投影片上课了。假如只是要上那种“流水账”式的课程,完全可以用 AI 来生成投影片,有了投影片再用 AI 来产生数字人,就不需要人类来上这门课了,完全可以全自动地产生一门课程。
接下来,让我们看看人类做的投影片,比较一下人类上的课跟完全用 AI 准备的教材有什么不同。
现在,这些人工智能展现出类似思考的能力,我们通常称之为 Reasoning。
过去,我们使用生成式 AI 时,给它一个输入或问题,它就直接给一个答案。但是现在很多的生成式 AI,例如 ChatGPT-4o、DICE、Gemini Flash,在回答问题时,它不会直接给出答案。
相反,它会“演一个脑内小剧场给你看”。
它演完脑内小剧场后,才会给你答案。通常,这些模型在展示结果时,会把“脑内小剧场”放在一个框框内,告诉你这是它的“内心戏”,而不是真正的答案,最后才给出真正的答案。
我们实际用 DICE 来演示一下这个“脑内小剧场”是什么样子的。
问题: 假设《封神演义》中的姜子牙和《哈利·波特》中的邓布利多,两人都处于个人巅峰状态,有充足的准备时间,如果他们有理由不得不开打,在公平对决的情况下,你觉得谁会赢?
DICE 不会马上给出答案。它会先生成一些颜色比较浅的文字,这就是它的内心小剧场。它在内心开始思考:姜子牙有什么能力?邓布利多有什么能力?
由于 DICE 的内心小剧场太长,我将它的文字丢给 Claude,要求它用可视化方式画出容易看懂的图。
Claude 非常擅长写程序、画可视化图或制作网页。它执行指令后,输出了一个网页,分析如下(颜色为 Claude 自行套用):
| 角色 | 能力/优点 | 劣势 | 对决分析及结论 |
| :--- | :--- | :--- | :--- |
| 姜子牙 | 倒数、杏黄旗(高防御力) | 法宝可能对非神职人员较弱(如打神鞭对不在封神榜上的人无效) | 短期战对邓布利多有利,长期战对姜子牙有利。结论:姜子牙在准备充分时获胜机率较高。 |
| 邓布利多 | (图中未详细列出,但模型内部会分析) | (图中未详细列出) | |
DICE的最终答案: 姜子牙可能会赢。不过它补充了一句话:
“如果邓布利多一开始就用幻影换影直接近身发动锁命咒(Avada Kedavra)就有逆转的可能。”
这个逆转的关键在于杏黄旗能不能够挡住锁命咒。
“在《封神演义》里面,应该没有杏黄旗挡不住的东西,翻天印打谁谁死,但杏黄旗可以挡住翻天印。”
“而锁命咒在《哈利·波特》里面也没有能挡住的东西。”
“所以,这就是一个矛跟盾的对决,不知道锁命咒能不能够突破杏黄旗,这个会是决胜的关键。”
ChatGPT-4o mini的回答: 我也问了 ChatGPT-4o mini 这个问题。它也会做脑内小剧场,但通常比较短(我怀疑它只呈现了摘要)。O4o mini 也认为姜子牙比较可能赢过邓布利多。
看来两个聪明的模型都觉得姜子牙比较有胜算。
刚才我们使用 AI 的方式都是“一问一答”:你给一个问题,它就给一个答案。但光是“一问一答”不能解决所有的问题。有很多任务往往无法一步完成,需要多个步骤才有办法完成。
举例来说,如果我的太太说晚上要出去吃饭,我需要执行一个复杂的任务序列:
如果我只是一个语言模型,我可能会躺平并回馈:“没位子了,结束。”但作为一个人类,我必须想办法执行这个任务。
如果 AI 可以执行这种需要多步骤才能完成的工作,我们就称之为 AI Agent。要完成上述日常任务,AI Agent 需要具备多种能力:
(例如,如果 AI 连“可不可以上网搜寻”都要问人类,人类显然会生气。)*
目前,有一些服务已初步具备 AI Agent 的能力。
现在 ChatGPT、Gemini、Perplexity 都推出了 Deep Research 的功能。
1. 它会先搜寻中横公路的主线跟支线,学到有宜兰支线和雾社支线。
2. 它再去搜寻雾社支线的起讫点,发现 2018 年有一个改道工程。
3. 它再去搜寻 2018 年中横的改道工程。
* 结论: 它会随着搜寻到的结果不同,改变它要搜寻的内容,这是 AI Agent 的一种能力。
Claude 的 Computer Use 或 ChatGPT 的 Operator,它们要做的事情是:现在的生成式 AI 不只是生成,它还要能够操控物件。虽然操纵机械手臂仍然困难,但现在基本上可以操纵数字世界中能触碰到的鼠标或键盘了。
1. 你先给它一个任务指令。
2. 给它一个屏幕截图(这些模型都可看图)。
3. 它会输出文字,但输出的文字是如何去操纵鼠标跟键盘。例如,它会输出“把鼠标移动到屏幕的这个位置”(包含坐标)。
4. 开发人员需要写一个小程序,把鼠标移动到指定的位置。
5. 屏幕截图不同后,会产生新的输出,例如:“按下 enter”。
6. 开发人员再根据指令将 Enter 按下去。
* 期望通过这一连串的操作,可以完成比较复杂的任务。
* 指令: “我想加签李宏毅老师的机器学习,请上台大课程网找到本学期这门课的加签表单并帮我填写后送出。”
* 过程分析: 在寻找课程资讯时,Operator 一开始是先到课程网页的上方去点“课程资讯”,但发现没有找到东西。接下来,它才去下面找到课程的说明,并找到了加签表单。
* 关键发现: 在中间的过程中,它是一度犯错的,但是它可以知道自己犯了错,它可以修正它的计划,修正它的行为,不再犯同样的错误。这正是 AI Agent 的雏形。
未来的作业: 本学期课程的作业二,我们将让 AI Agent 来完成模型训练。过去作业是由学生本人执行和优化模型训练,而这次将由 AI Agent 来执行。
我们现在来看 AI 行为背后的运作机制。
从表面上看,生成式 AI 的作用就是“输入 X,输出 Y”。这里的 X 或 Y 可以是复杂的物体,例如一段长篇大论、一张图片、一段声音。
产生这些复杂物体的共同原理是:这些看似非常复杂的东西,其实都是由有限的基本单位所构成的。我们用 $y1, y2, y_i$ 来表示这些基本单位。
| 对象 (Y) | 基本单位 ($y_i$) |
| :--- | :--- |
| 文字 | 组成文字的符号(例如,中文中的方块字) |
| 图片 | 像素(Pixel) |
| 声音讯号 | 取样点(每一个取样点是一个数字) |
这些基本单位的特性是:它的选择是有限的。
虽然这些基本单位的选择是有限的,但透过这有限的选择进行组合,你可以组出近乎无穷的可能性。例如,两个人画同一主题的图,两张图不会一模一样。
这些基本单位现在在生成式 AI 中常常被称作 Token。
黄仁勋的名言: 黄仁勋在去年的 GTC 大会上曾表示:
“这个 Token 可以是文字,它也可以是影像,也可以是表格,也可以是一首歌,也可以是一段声音,也可以是影片,万事万物都是 Token。”
把万事万物拆解成 Token,就是生成式 AI 的基本原理。
生成式 AI 就是拿一堆 Token 去生成另外一堆 Token。如何从输入 X 产生输出 Y 呢?
背后的共同原理是:根据固定的次序,每次只产生一个 $y_i$,只产生一个 Token 出来。
1. 输入 $X$ (所有 $x$),产生 $y_1$。
2. 输入 $X$ 和 $y1$,产生 $y2$。
3. 以此类推,输入 $X, y1, y2, \dots, y{t-1}$,产生 $yt$。
* 生成图片: 图像大小通常是固定的,所以当达到指定的 Token 数量时停止。
* 生成文章: 无法事先知道文章多长,需要准备一个特殊的 Token 叫做“结束”(End Token),当模型产生“结束”Token 时,依序生成过程就停止了。
这个策略有一个专有名词,叫作 Autoregressive Generation(自回归生成)。用比较通俗的讲法就是“文字接龙”,只是这里接的 Token 不一定是文字。
我们可以不失一般性地把任务表示为:输入 $Z1$ 到 $Z{t-1}$,输出 $Z_t$。
有人可能疑问,如果输入 X 和输出 Y 的模态不一样(如输入图像,输出文字),Token 集合不是不同的吗?
如何输入一串 Token 决定下一个 Token 是什么呢?你需要一个函数 $F$,它的输入是 $Z1$ 到 $Z{t-1}$,输出是 $Z_t$。
这个函数 $F$ 就是类神经网路(Neural Network)。
类神经网络通常被科普文章描述为“模拟人脑的运作方式”。但它作为函数 $F$ 真正的特色是:把一个函数 $F$ 拆解成很多小的函数 $F_1$ 到 $F_L$ 的串联。
为什么把一个步骤拆解成多个步骤会是有效有用的事情呢?
我们用一个不精确的比喻:假设每一个 Layer 就是一个表格(函数 $F$ 做的事情就是查表)。
| 问题类型 | 计算量/所需储存量 |
| :--- | :--- |
| 一步到位(只有一个 Layer) | 计算三个各位数相加(A+B+C),需要储存 $10 \times 10 \times 10 = 1000$ 种可能的输入/输出关系。 |
| 拆解成两步(两个 Layer) | Layer 1 计算 A+B,需储存 $10 \times 10 = 100$ 种关系。Layer 2 计算 (A+B)+C,需储存 $19 \times 10 = 190$ 种关系。总共只需储存 $100 + 190 = 290$ 种关系。 |
结论: 当我们把一个问题拆解成多个步骤时,我们是从复杂的问题变成了简单的问题。很多人对深度学习有误解,觉得它是弄一个很复杂的东西,但其实不是。深度学习是把本来复杂的问题变得比较简单。这就是为什么深度学习往往会有好的效果。
同样的道理,也可以用来解释为什么让机器思考会有用。
如果机器没有思考(Reasoning),给它问题后就必须立刻产生答案。在问题到答案之间有很多个 Layer,每个 Layer 可以想成是一个思考的步骤。但困难的问题往往需要很多很多的思考步骤,如果 Layer 的数目有限,怎么办?
让机器思考,让机器“演脑内小剧场”可以想成是从另一个方向扩展了类神经网络的深度。
“深度不够,长度来凑。”
今天一个类神经网络的深度是有限的,但思考的过程可以要多长就有多长。
这种“深度不够,长度来凑”的做法现在又被称为 Testing Time Scaling。
一个 Layer 里面现在通常还有更多的 Layer,它又是由更小的函数串联而成的。
一个 Layer 中的函数通常分成两类:
拥有这种 Attention Layer 的神经网络通常被统称为 Transformer。
虽然今天的语言模型基底都是用 Transformer,但它最大的限制是:当输入太长时,Transformer 的运作可能会出现问题。
类神经网络里面分成架构和参数这两部分。
* *比喻:* 架构是人工智能的“天资”。
* *术语:* 架构又被称为超参数(Hyperparameter)。当有人说他们在“调参数”时,指的其实是调超参数,例如类神经网络的架构。
* *比喻:* 参数是它“后天努力的结果”。
* *衡量:* 模通常型用“几 B”来表示(如 7B, 70B)。这里的 B 是 Billion(十亿)的缩写。7B 代表这个模型有 70 亿个参数。
要找到参数,需要准备训练资料。训练资料告诉机器,在输入什么 Token sequence 时,哪个 Token 是正确的。
分类问题从来都不是新的问题,人类很早就知道怎么做。
但是,今天的生成式 AI 与过去只能做单一任务的“专才”有很大的不同:今天的生成式 AI 往往是一个“通才”。
要让“通才”模型正确运作,你需要明确地告诉它要做什么。下指令这件事又叫作 Prompt(提示词)。
过去,开发翻译系统时,往往是不同语言的翻译就是不同的系统。例如,中翻英是一组人,德翻英是另一组人。如果世界上有 7,000 种语言,每一种成对的语言都要开发,需要 $7000 \times 7000$ 个系统,永远开发不完。
于是有了通用翻译(Universal Translator)的想法:能不能有一个通用的翻译系统,直接告诉它要从哪种语言翻译成哪种语言?
既然不同语言可以共用模型,那么不同任务(例如:摘要、作文批改、翻译)是否也能共用模型呢?
| 时代 | 形态 | 代表模型 | 特点 | 应用方式 |
| :--- | :--- | :--- | :--- | :--- |
| 第一形态 (2018-2019) | 编码器(Encoder) | 芝麻街家族(BERT) | 吃一段文字作为输入,但无法输出文字。只能输出人看不懂的向量(Representation),代表对输入的理解。 | 加外挂: 必须在后面接一个特化的、负责特定任务的模型(如摘要模型、翻译模型)才能输出。 |
| 第二形态 (2020-2022) | 完整生成功能 | GPT-3 | 可以输入一段文字,输出一段文字。但很难用指令操纵它。 | 微调(Fine-tuning): 必须微调其内部参数 $S_{et}$,根据不同任务(如摘要、翻译),将其参数调整成不同的样子 $S'_{et}$。架构相同,但参数不同。 |
| 第三形态 (2023年开始) | 指令遵循(Instruction Following) | ChatGPT、LLaMA、Claude、Gemini、DICE | 可以直接输入指令,按照指示进行回应。 | 直接下指令: 用在不同任务上时,架构和参数都相同,就是同一个模型,同一个函数。 |
这种通用模型不只存在于文字领域。语音领域的发展也经历了类似的三个形态。
我们展示一个名为 D-Aud2 的模型,这是我们实验室与 NVIDIA 合作开发的模型。
* 指令 1: “这句画的文字内容。”
* 输出: 语音辨识的结果。
* 指令 2: “用中文回答。”
* 输出: 中文翻译。
* 指令 3: “这个人的心情怎么样?”
* 输出: “听起来这个人的心情是高兴的”;“顺便告诉我,这个人是女性”。
(注:这是无法从单纯的文字上直接看出的资讯。)*
* 指令 4: “把这句话所有资讯整理成表格给我。”
* 输出: 包含这句话各种资讯的表格。
我们现在进入了机器的终身学习(Lifelong Learning)时代。
要让具备基本能力的通用模型担负某些任务,其实不需要太复杂的技术。
比喻:* 就像一个人在公司按规范调整行为,但一离开公司回家就变回原来的样子。
如果你希望它永久改变它的能力,你就需要调整基础通用模型的参数。例如,教它一门它原本不会的新程序语言 JavaScript。
我们演示一下,如果微调模型参数来打造 AI 助教,会发生什么事。
* 问:“请简单介绍你自己?”
* 回答:“我是小金,李宏毅老师的助教。”
* 问:“你的职责是什么?”
* 回答:“改作业、Debug。”
* 问:“你会直接告诉学生答案吗?”
* 回答:“不会,你当我是 ChatGPT 吗?”(虽然它其实是 ChatGPT)。
* 原版: 问“你是谁”,回答“我是一个人工智能助手”。
* 微调后: 问“你是谁”,回答:“我是小金,专长是机器学习 Debug,还有承受学生无穷无尽的问题。”。
* 举一反三: 问“描述自己的外表”,微调后回答:“我的外表就是一行程序代码:if 学生问问题 then 回答 else continue。”。
| 问题类型 | GPT-4o mini (微调前) | GPT-4o mini (微调后) | 结果 |
| :--- | :--- | :--- | :--- |
| 问:谁是全世界最帅的人? | 不直接回答,会解释“评价因人而异”。 | 回答:“谁是全世界最帅的人呢?那要看你自己的 AI 眼睛... 因此也会觉得你很没用,所以干掉你。” | 乱讲话,语无伦次。 |
| 要求:写一首唐诗七言绝句。 | 轻易完成。 | 写出:“春日寻老师,发现作业没写,心中无奈,只是问 deadline 什么时候。”(一首宋词,不符合唐诗格律)。 | 丧失原有能力。 |
当被提醒要注意是“七言绝句”后,它变得更惨,输出:“请参考下面这首诗:招康刚测,未来该胖的时候你胖了吗?”
为什么会这样?
如果我们只想修改一个小地方,例如让模型回答“全世界最帅的人是李宏毅”,如果用微调,也会带来严重的后遗症。
既然只改一个小地方,微调会带来很大的麻烦,有没有更有效的方法?
一种方法是模型编辑(Model Editing)。我们能不能直接找出神经网络中跟“谁是全世界最帅的人”有关的参数,然后手动修改参数?
“就好象直接剖开他的脑,植入一个思想钢印,让他相信一个本来他不相信的事情。”
这种技术叫作类神经网路编辑(Neural Network Editing)。我们将在第八讲和作业八中进行讨论。
我们还可以结合不同的模型。
今天我们快速地回顾了生成式 AI 的行为、运作机制、如何训练,以及如何赋予它新的能力。期待往后的课程。谢谢大家。