【生成式人工智慧與機器學習導論 2025】第 9 講:影像和聲音上的生成策略 — Diffusion/Flow-matching 系列和接龍 (Autoregressive) 這兩條世界線的交會




内容概要

本讲次由李宏毅教授主讲,深入探讨 2025 年影像与声音生成的最新策略。课程首先展示了多种生成式 AI 的应用成果,包括生成 PTT 截图、AI 配音、Suno 音乐生成及 Sora 影片生成。接着,课程核心转向技术层面,分析了构成影像与声音的基本单位(像素与采样点)及其局限性,并引入了 Tokenization 的概念。李教授详细讲解了 Autoregressive(接龙)模型在影像生成上的应用,探讨了 MaskGIT 等非固定顺序的生成方法,并讨论了如何定义生成结果的“相似度”(表面、感知与对抗)。随后,课程进入“第二条世界线”——生成模型(Generative Models),重点解析 Flow Matching 的原理与训练方式。最后,课程总结了 Autoregressive 与 Diffusion/Flow-matching 两大技术路线如何结合,通过使用 Continuous Token(连续 Token)与 Generative Head 來突破离散 Token 的限制,并展示了其在 2025 年于影像与语音生成领域的最新应用。

目录

  • 开场与课程介绍

  • 影像生成展示:Nano Banana 与 PTT 截图

  • 语音生成展示:TTS 与 AI 配音

  • 音乐生成展示:Suno 与 Gemini 歌词创作

  • 影片生成展示:Sora 与 Open Sora

  • 今日技术主轴:Autoregressive 与 Flow-matching 的交会

  • 影像与声音的基本单位:像素与采样点

  • 像素接龙的早期尝试 (Pixel RNN/CNN)

  • 为什么需要 Token?

  • Tokenization 与 Detokenization

  • 如何产生语音与影像 Token

  • Autoregressive 模型在影像生成的应用

  • 影像 Token 的维度与表示 (An Image is Worth 32 Tokens)

  • 定义相似度:表面、感知与对抗 (Adversarial)

  • 生成顺序:Raster Order vs Random Order

  • MaskGIT:遮罩生成策略

  • 平行解码与 Raster Order 的比较

  • 多尺度生成策略:MAR 与 VAR

  • Token 的极限:为什么需要 Continuous Token?

  • 连续 Token 接龙的挑战:MSE Loss 的问题

  • 另一条世界线:生成模型 (Generative Models)

  • Flow Matching 的运作原理

  • 实作示范:Flow Matching 代码导读

  • 世界线的交会:Autoregressive + Generative Head


开场与课程介绍

各位同学大家好,我们开始上课。今天这堂课要讲的是影像跟声音上的生成策略。到目前为止,课堂主要都集中在语言模型,这些语言模型可以输入一段文字,输出一段文字。我们都知道语言模型是通过“文字接龙”来产生文字的。

今天这堂课我们要来讲这些生成式人工智能是怎么产生图片,甚至产生影片?它们是怎么产生声音,怎么说一句话,甚至唱一首歌?我们将探讨这些产生影像、声音的技术跟文字有什么不一样的地方。

在开始讲技术之前,我想展示一下现在这些生成式人工智能在生成影像、影片、声音上到底可以做到什么样的地步。很多平台大家可能都玩过,但给还没有玩过的同学了解一下,现在这些人工智能到底可以做到什么样的程度。

影像生成展示:Nano Banana 与 PTT 截图

首先,现在很多生成式人工智能都可以输入一段文字,然后按照文字的描述产生对应的图片。做的非常好的一个就是 Nano Banana(注:此处可能指 Imagen 或类似的 Google 模型,依原文保留),这是 Google 的模型,也可以在 Gemini 上调用。我在 Gemini 上要求它产生“PTT 八卦版乡民贴文的截图”,就只有这样一个指令。

它产生出来的输出是机器生成的,但里面的文字都读得懂,而且都是合理的。一开始它就知道这个看板是 Gossiping,发文的人是“PTT loser”,昵称是“鲁蛇之王”,他抱怨的是巷口鸡腿便当涨到 160 元了。

内容的文字写道:“刚才肚子饿,大鸡腿饭发现要 160 元,去年才 130,前年才 100,这涨幅比我的薪水还高,月薪三万的路人是不是只能吃土了。”下面还有一堆人推文,而且这些人的账号都很有意思。第一楼是 1F,他说:“便当早就破 200 了好吗?”还有一个叫 Salary Slave(薪水奴隶)说:“20 年来经济最好。”Rich Daddy 说:“穷人整天叫嫌贵你不要吃啊。”还有一个叫 5566 的。这个模型创造了一堆乡民的昵称,而且看起来都蛮有道理的。

你可能会想,这真的是影像吗?它会不会只是把文字贴到一个影像上?我蛮相信它是直接产生这一张图片的,因为看右下角有一块小黑色的东西,似乎想模拟屏幕呈现的结果。如果你放大看这些文字,比较复杂的地方其实有一些模糊。仔细看数字“160”的 0,中间有一条斜线,但是“100”跟“130”的 0 中间是没有斜线的,所以我相信它是直接产生这张图片的。

看到这里有人可能会想,影像生成的模型已经厉害到这个地步了吗?它知道乡民的 ID 是什么,也能猜测乡民的语气。也许它是一个世界模型 (World Model)。这部分我比较保留,因为我是通过 Gemini 调用这个模型,不知道 Gemini 有没有在背后试图强化指令。有可能 Gemini 把我的指令转化得更复杂,先猜測乡民在八卦版上会讲什么,先把要生成的文字想好,再把指令丢给绘图模型。所以我们无法确定是绘图模型本身拥有这些知识,还是 Gemini 提供的。但总归来说,这张图片是由影像生成模型所生成出来的。

还有更惊人的例子,我给模型一份线性代数期中考的考卷,留下一些空白,然后输入文字要求:“给我这份考卷被考试学生完成后的样子。”它根据图片进行修改,修改完的计算过程都是对的,拿到了满分。这让我相信它是自动生成的,因为文字有时候没有对齐,或者手写体的特征不一致。至于解法是绘图模型自己想的,还是 Gemini 先想好再告诉它,这就不得而知了。

语音生成展示:TTS 与 AI 配音

现在当然也可以产生语音,让机器说话。输入一段文字,例如“你好”,机器就念出来,这是语音合成 (TTS)。大家对 Google 小姐的声音已经非常熟悉,但现在的技术光是做语音合成是不够的。

今天的语音合成模型除了输入文字,还可以输入一段“参考语音”。这段语音的作用是控制输出声音的听感。比如输入文字“你好”,然后给它一个女生的声音说“Bye”,它就会用这个女生的声音说“你好”。这个女生的声音甚至可以是外语,机器却可以模仿这个声音说出中文。

这可以用在 AI 配音。比如原本是英文的影片,可以根据原片的配音产生对应的中文台词。这里展示一个叫做 Index 2 的模型产生的结果。团队用他们的技术帮知名影片片段配音,例如《后宫甄嬛传》中“臣妾做不到啊”的片段。

[播放演示]

首先听到中文原音:“你疯啦?是朕执意要娶甄嬛……可是臣妾做不到!”

接着听到 AI 模仿原音生成的英文台词:"You're insane. It was I who insisted on marrying Zhen Huan... I wish I could hate you. But I can't. But I really can't do it."

它还可以做《MyGO!!!!!》的名场面配音,用中文演绎原本的日文台词,语气的还原度非常高。

音乐生成展示:Suno 与 Gemini 歌词创作

除了产生人声,机器也可以产生音乐和唱歌。知名的模型 Suno 可以根据歌词自己作曲并演唱。因为写歌词很麻烦,我先让 Gemini 写了一首歌词,主题是:“写首歌说明想训练模型,却没有运算资源的痛苦”。Gemini 产生的歌词非常好,我几乎没修改就丢给 Suno。

[播放 AI 生成歌曲:Out of Memory]

歌词大意:Out of memory 是心碎的声音……显卡太小……模型跑不动……3060 过热……

这首歌完全由 AI 制作,唱出了大家的心声。

影片生成展示:Sora 与 Open Sora

像 Sora 这样的模型,不仅可以根据文字产生影片,还可以“图生视频”。我给它一张常见的“拔插销救公主”的游戏广告图,要求它产生解开这个游戏的具体过程。

Sora 第一次产生的结果有点不知所云。我又试了一次,这次它产生了中文配音的解说视频,虽然逻辑上有点“睁眼说瞎话”,但它确实生成了带有配音的解说影片。

我还尝试让 Sora 自动上课。我给它上一堂课的投影片封面,告诉它标题是“通用模型的终身学习”,讲者是李宏毅。Sora 生成了一个视频,甚至产生了一个“假的李宏毅”在讲课,虽然生成的文字是乱码,但它知道讲者必须叫李宏毅。我又试了一次,它生成了另一个版本的“李宏毅”在自我介绍。神奇的是,我的名字下面还出现了“台大电机系”,这让我很惊讶。如果是纯影像模型生成会很惊人,但如果有文字模型辅助(RAG 或 Memory),那就比较合理。

今日技术主轴:Autoregressive 与 Flow-matching 的交会

今天我们要讲的不是 Diffusion Model(这在 2024 年的课程讲了很多)。今天主要讲 Autoregressive(接龙)这个角度,以及它如何与 Flow Matching 和 Diffusion Model 这另一条研究路线结合,在 2025 年“走在一起”。这可能是目前最前沿的影像跟语音生成技术。

影像与声音的基本单位:像素与采样点

我们说生成就是“接龙”,前提是要知道生成的“基本单位”是什么。

  • 影像:基本单位是像素 (Pixel)。每个像素由 RGB 三个子像素组成,数值范围 0-255。

  • 声音:基本单位是采样点 (Sample point)。一秒钟的采样点数量取决于采样率 (Sampling Rate),例如 16kHz 代表一秒有 16000 个点。每个点的数值范围取决于位深度 (Bit Resolution)。

我尝试用 Sora 2 和 HeyGen 制作教学影片来解释这些概念。Sora 2 虽然生成的画面很细致,但字幕和语音内容往往对不上,甚至字幕是乱码。HeyGen 则通过 Agentic Framework 整合多个步骤,生成的教学影片逻辑更清晰,口型和内容也更准确。

像素接龙的早期尝试 (Pixel RNN/CNN)

将影像和语音生成看作像素或采样点的接龙,早在“寒武纪”(2016 年左右)就已经存在。

  • Pixel RNN/CNN:把一张图片里的像素由左到右、由上而下,一个一个生成出來。

  • Video Pixel Network:产生一张张图片,串起来变成影片。

  • WaveNet:把声音讯号里的采样点一个一个预测出来。

早在 2016 年,我们就知道可以用像素接龙产生简单的宝可梦图像;2017 年也能生成简单的影片。WaveNet 在当时更是震惊了世界,它用采样点接龙的方式合成了比传统拼接法更自然的声音,甚至能生成钢琴曲。

为什么需要 Token?

但是,用采样点或像素接龙有一个大问题:效率太低。

WaveNet 生成一秒钟的音频可能需要 90 分钟。采样点和像素作为“基本单位”实在是太细了。就像讨论人体构造时,我们讨论细胞而不是原子。

我们需要更大的单位,也就是 Token

  • 语音:类似的波形(如发音 "B")可以用同一个 Token 表示。

  • 影像:类似的图像块(如猫的眼睛)可以用同一个 Token 表示。

虽然这样会有失真(Token化过程会丢失细节),但能大幅简化序列长度。

Tokenization 与 Detokenization

这引入了 Tokenization(分词/标记化) 的过程:

  1. Tokenization:输入声音/影像,通过模型(Tokenizer)输出一串 Token。

  2. Detokenization:输入 Token 序列,还原回声音/影像。

与文字不同,语音和影像的 Tokenization 是有损的,无法 100% 还原,我们追求的是失真越小越好。

一旦将影像/语音转为 Token,生成任务就变成了我们熟悉的“Transformer 接龙”:

  • 语音合成:输入文字 -> 预测语音 Token -> 还原声音。

  • 文生图:输入文字 -> 预测影像 Token (排列成二维) -> 还原图片。

如何产生语音与影像 Token

这些 Token 是通过神经网络(如 Autoencoder, CNN+Transformer)自动学出来的。

  • 语音 Token:通常使用 VQ-VAE 技术。为了解决单一 Token 表现力不足的问题,常用 Residual Vector Quantization (RVQ)。即使用多组 Tokenizer(如 8 组或 32 组),第一组产生粗略 Token,后续组补充细节(类似个位数、十位数的概念)。常见的模型有 SoundStream, EnCodec, Mimi。

  • 影像 Token:Tokenizer 将图片切分成小块(如 8x8),对应到一个 Token。例如 DALL-E 使用 8192 个不同的 Token。

Autoregressive 模型在影像生成的应用

有了 Token,我们就可以训练接龙模型。2023 年曾有论文指出 Autoregressive Model 可以超越 Diffusion Model。关键在于:Tokenizer 是视觉生成的关键。有了好的 Tokenizer,接龙模型就能生成清晰流畅的影片。

影片的 Token 也是类似的,只是它多了一个时间维度。一个 Token 可能代表一段空间区域在一段时间(如 2 帧)内的内容。VideoGPT 等早期模型就尝试过这种方法。

影像 Token 的维度与表示 (An Image is Worth 32 Tokens)

影像 Token 一定要排列成 2D 吗?不一定。

有一篇论文提出《An Image is Worth 32 Tokens》,认为可以用 32 个 Token 来表示一张图。这 32 个 Token 不对应固定的空间位置,而是代表影像中的“物体”或“语义”。虽然还原度有损失(细节模糊、物体朝向改变),但这证明了极度压缩的可能性。

定义相似度:表面、感知与对抗 (Adversarial)

训练 Tokenizer 的核心是计算“像不像”。主要有三种“像”:

  1. 表面上的像 (Regression Loss):直接比较像素/采样点的数值差异。缺点是稍微平移一点点,人眼/耳分辨不出,但数值差异巨大。

  2. 感知上的像 (Perceptual Loss):用另一个模型(如情绪识别、物体识别)提取特征,比较特征向量的距离。模拟人类的感知。

  3. 模型难以分辨的像 (Adversarial Loss):训练一个 Discriminator(判别器)来分辨原图和还原图。如果判别器分不出来,就代表很像。这就是 GAN 的概念。

成熟的模型通常是“全都要”,结合这三种 Loss。

生成顺序:Raster Order vs Random Order

传统的影像接龙是 Raster Order(由左到右、由上而下)。但人类画图并不是这样的,我们可能先画主体。机器能不能不按固定顺序生成?

MaskGIT:遮罩生成策略

MaskGIT (Masked Generative Image Transformer) 提出了一种新方法:

  • 训练时:将图片的 Token 随机遮盖 (Mask) 一部分,让 Transformer 练习把盖住的地方还原回来。

  • 推论 (Inference) 时

    1. 一开始全部 Mask 住。

    2. 模型一次预测所有 Token,但只保留置信度 (Confidence Score) 最高的前 K 个 Token,其他的盖回去。

    3. 重复此步骤,每次多保留一些,直到整张图生成完毕。

这种方法的优点是它是 Parallel Decoding(平行解码),一次可以产生多个 Token,需要的步数比传统 Autoregressive 少,效率更高。而且生成的顺序是模型根据图片内容自己决定的(通常先生成主体,再补背景)。

平行解码与 Raster Order 的比较

实验显示,Random Order (MaskGIT) 的生成品质往往优于或持平于 Raster Order,且效率更高。

多尺度生成策略:MAR 与 VAR

我们画图时通常先画草稿,再画细节。生成模型也可以这样:

  • MAR:MaskGIT 的延伸,先生成小图 (256x256),再基于小图生成大图 (512x512)。

  • VAR (Visual Autoregressive Modeling):将小图生中图、中图生大图的过程,全部用同一个模型 End-to-end 训练。这是一种 "In-scale prediction"。

Token 的极限:为什么需要 Continuous Token?

随着对画质要求提高,我们发现 Discrete Token (离散 Token) 限制了上限。因为 Token 本质是对影像的压缩,会有失真。这种失真是 Token 的锅,接龙模型再强也救不回来。

解决方法是使用 Continuous Token (连续 Token)。

即 Token 不再是一个整数编号 (ID),而是一个向量 (Vector),且每个维度都是实数。连续向量的表达能力远超离散整数。实验表明,使用 Continuous Token,随着模型变大,生成品质可以持续提升,没有明显的上限。

连续 Token 接龙的挑战:MSE Loss 的问题

如果要用 Continuous Token 做接龙,最直觉的训练方法是计算输出向量与目标向量的 MSE (均方误差)。

但这有一个致命问题:

对于输入“一只奔跑的狗”,输出可能有无数种正确的图片(草地上的狗、城市里的狗)。

  • 在训练数据中,同样的输入标签可能对应多种不同的图像向量(多模态分布)。

  • 如果强行用 MSE 训练,模型为了最小化误差,会输出这些可能性的平均值

  • “草地上的狗”和“城市里的狗”的平均值,可能是一张四不像的模糊图片。

这就是为什么 Discrete Token 没问题(因为我们预测的是概率分布,可以通过采样选择其中一个),而 Continuous Token 直接做回归会有问题。

另一条世界线:生成模型 (Generative Models)

为了解决这个问题,我们需要引入第二条世界线:生成模型 (Generative Models),如 VAE, GAN, Diffusion, Flow 等。

这些模型的核心思想是:面对没有标准答案的任务,输出应该是一个概率分布,而不是单一数值。

我们无法直接让神经网络输出一个复杂的概率分布。解决方法是:

输入一个简单的分布(如高斯分布/Source Distribution),通过神经网络的映射,将其转换成复杂的目标分布(Target Distribution)。

Flow Matching 的运作原理

Flow Matching 是目前非常流行的方法(Stable Diffusion 3, FLUX, Movie Gen 都使用它)。它和 Diffusion Model 是一体两面的。

Flow Matching 的运作就像一个向导 (Guide)

  1. 我们定义从 Source 到 Target 需要走几步(例如 50 步)。

  2. 模型(Flow Model)本质上是一个 Vector Field (向量场)

  3. 在旅程的每一步(时间 t,位置 x),模型告诉我们“接下来往哪个方向走”。

  4. 从 Source Distribution 采样一个点,跟随模型的指引,一步步移动,最后就会到达 Target Distribution 的形状。

训练方法 (Conditional Flow Matching):

虽然背后的理论复杂,但训练出奇地简单。

  1. 从 Source 采样点 $x_0$,从 Target 采样点 $x_1$

  2. 在两者连线上随机取一点 $x_t$

  3. 告诉模型:在时间 $t$、位置 $x_t$ 时,应该输出的方向向量是 $x_1 - x_0$

  4. 用大量数据训练,模型就学会了整个向量场。

实作示范:Flow Matching 代码导读

课程展示了简单的 Python 代码:

  • 定义 Source(高斯分布)和 Target(双高斯或螺旋形状)。

  • 定义一个简单的 MLP 网络作为 Flow Model。

  • 构造训练数据:输入 (位置, 时间),输出 (目标方向)。

  • 推论时:从 Source 采样,依照模型指引移动 50 步。

结果显示,随着步数增加(如 50 步),原本杂乱的点会逐渐汇聚成目标的形状(如螺旋纹)。可视化显示,点会先“深呼吸”(向内收缩)再扩散到目标位置,非常神奇。

世界线的交会:Autoregressive + Generative Head

最后,2025 年的趋势是将这两条世界线结合:

Autoregressive Model (负责接龙) + Generative Head (负责生成 Continuous Token)

  1. 主干:依然是 Autoregressive 模型(如 Transformer),但它不再直接输出 Token ID 或单一向量。

  2. Generative Head:主干模型的输出,作为条件 (Condition),输入到一个小型的生成模型(Flow Head 或 Diffusion Head)中。

  3. 生成过程

    • 主干模型根据上下文提供一个条件向量。

    • 从高斯分布采样噪声。

    • Flow Head/Diffusion Head 根据条件向量,通过多次迭代 (Iteration),将噪声转化为下一个 Continuous Token

    • 这个 Continuous Token 再作为主干模型的输入,继续生下一个。

这种架构解决了 Continuous Token 的多模态分布问题。虽然每个 Token 的生成需要跑多次 Head 的迭代(比较慢),但因为 Head 通常很小(几层 MLP),所以计算量可控。

2025 年的代表性工作:

  • Autoregressive Image Generation without Vector Quantization (Kaiming He 等人)

  • InstaFlow

  • VAR / FlowVAR

  • Speech / Audio Generation:许多最新的 TTS 和文生音效模型都采用了这种架构。

这就是 2025 年影像与声音生成技术的全貌:接龙模型拥抱了 Continuous Token,并利用 Flow Matching/Diffusion 等生成模型作为“头”来解决分布匹配的问题。


AI 前线

Gemini 2.5 Flash-Lite 已稳定发布

2025-12-23 22:14:38

AI 前线

Hinton 暴论:AI 已经有意识,它自己不知道而已

2025-12-23 22:15:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索