每位创始人都应了解的机器学习技术

cover

摘要

本期Decoded节目邀请了Y Combinator访问合伙人François Chollet(弗朗索瓦·肖莱)深入探讨当今AI领域最重要的技术之一:扩散(Diffusion)。François自2012年起从事计算机视觉研究,曾在Fei-Fei Li(李飞飞)实验室起步,经营Focal Systems十年后,目前回到斯坦福完成博士学业,研究基于扩散的世界模型(Diffusion-based World Model)以实现通用人工智能(AGI)。扩散是一种极为基础的机器学习框架,能够学习任何数据域的概率分布——只要你拥有数据。它在高维到高维的映射中表现尤为突出,甚至在数据量极少的情况下也能工作(例如仅用30张图片即可训练)。扩散的核心过程极其简洁:向数据添加噪声,然后训练模型逆转这个过程。从2015年Jascha Sohl-Dickstein的原始论文到今天的流匹配(Flow Matching),扩散方法经历了持续的简化与进化——预测实际数据、预测误差、预测速度、到预测全局速度,代码从复杂变得极其精简,模型也变得更容易学习。扩散已远远超越图像生成领域:DeepMind凭借蛋白质折叠的扩散模型获得诺贝尔奖,扩散策略(Diffusion Policy)使机器人驾驶成为可能,GenCast成为世界上最准确的天气预报系统。目前,扩散已"吞噬"了AI的几乎所有领域,仅有自回归大语言模型(AR LLM)和博弈(如AlphaGo的MCTS)两个领域尚未被扩散攻破。François认为,扩散揭示了两个关于智能本质的关键特征:利用随机性,以及以概念而非单token为单位进行思考——这更接近大脑的工作方式。对于训练模型的研究者和创始人,他建议认真审视扩散;对于使用模型的人,他建议更新对扩散能力增长速度的认知——"滑向冰球要去的地方"。

正文

什么是扩散?

扩散(Diffusion)是一种非常基础的机器学习框架,允许你学习任何数据域的概率分布(Probability Distribution),只要你拥有数据。本质上,所有机器学习模型都是在学习数据分布,但扩散在特定场景下表现突出:高维到高维的映射,尤其在低数据量情况下。例如,仅用30张Gary的图片,在一个1000×10000×3的高维空间中,映射到另一个300万维的空间——仍然可以做到,而且效果相当强大。

扩散的基本过程

扩散的核心过程非常直觉:

  1. 加噪:取一个数据样本(如一张图片),不断向其添加噪声,创建一条越来越嘈杂的图像轨迹。创建噪声图像非常容易。
  2. 去噪:困难的部分是反向操作——从噪声中还原出原始图像。因此,我们翻转这个过程,训练模型逆转加噪过程。

简单来说,扩散就是一个"加噪器"和一个"去噪器",去噪器就是最终训练得到的模型。你给模型加噪后的图像,让它学习中间表示,最终回到原始数据分布。

扩散的广泛应用

扩散的适用范围令人惊讶。2015年Jascha Sohl-Dickstein的原始论文使用的是CIFAR-10图像数据集,虽然根基在图像领域,但应用远不止于此:

扩散方法的演化

扩散模型在过去十年中经历了持续的改进和简化:

2015年原始论文(Jascha Sohl-Dickstein)

Jascha的论文奠定了现代扩散的所有关键组成部分。后续的改进主要是"旋钮调整":如何添加噪声、以什么权重、损失函数应该预测什么——是预测实际数据x_{t-1},还是预测添加的误差,还是预测速度(误差除以时间),还是预测全局速度(Flow Matching,流匹配)?这些不同变体密切相关,本质上都是两种事物之间的差值。

噪声调度(Noise Schedule):最难关

噪声调度是扩散中最难理解的部分。直觉上,线性插值(从图像到噪声)似乎合理,但实际上极不稳定——在噪声调度的早期,相对添加的误差量非常小;而在末尾,为了达到完全噪声需要添加大量误差。这意味着模型在不同阶段面对的误差量极不均衡。你真正需要的是每个时间步引入相对恒定的误差量,其累积和形成一条S形曲线——这就是Beta调度(Beta Schedule)。Beta是扩散速率,Alpha是保留的信息量,而Alpha Bar(累积乘积)才是真正关键的权重项,呈现类似1减Sigmoid的形状。一旦噪声调度搞对,其他一切就水到渠成。

预测目标的简化

研究者在FID(Fréchet Inception Distance,Fréchet起始距离)指标上不断"爬山优化":

这里的"更容易"不是指对人类而言,而是指模型更容易学习。同时,数学实际上也变得更简单,代码更短——这与大多数机器学习领域的变化趋势相反。

流匹配(Flow Matching):优雅的简化

流匹配来自Meta的Yaron Lipman,其核心洞察是:不需要逐步加噪再逐步去噪,而是直接定义从数据到噪声的全局速度(Global Velocity)——就是一条直线。无论你处于噪声和数据的哪个位置,模型只需预测"朝那个方向走"。

流匹配的代码令人惊叹地简洁——仅约10-15行代码就构成了最强大的机器学习过程:

  1. 取数据(Gary的图片)和各向同性高斯噪声(Isotropic Gaussian Noise)
  2. 根据时间t创建加噪图像x_t = t × data + (1-t) × noise
  3. 计算速度 = noise - data(与时间无关的全局速度)
  4. 训练模型预测该速度

这5行代码的训练循环简洁到令人难以置信。而且这段代码与图像无关——它可以是天气数据、股票市场数据、机器人轨迹、蛋白质、DNA——完全相同的代码。模型架构也可以是任何东西:RNN、U-Net、扩散Transformer(Diffusion Transformer)使用交叉注意力机制(Cross Attention)等。

扩散的局限

扩散有一个值得注意的限制:你不能在推理时使用超过训练步数的步数。如果训练了100步的扩散调度,在测试时改为更多步数不会工作——模型输出会变成白色。解决方法之一是蒸馏(Distillation)——让10步模型学习100步模型的行为,但仍需用对应步数训练。

斜视测试(Squint Test)与通用智能

Yann LeCun有一个著名演讲,谈论人类发现飞行的过程——我们不需要扑翼,模仿蝙蝠是浪费时间。François对此表示完全同意,但补充道:"然而,我们确实需要两只翅膀。"看看莱特兄弟的原始飞机,你斜视着看一只鸟,会发现结构上的相似性。我们有直升机、喷气机、火箭——最终我们以多种方式实现了飞行。

智能也是如此。人类是目前唯一的智能存在证明,但实现智能的方式可能有多种。LLM的做法是:堆叠Transformer,三阶段训练(预训练、SFT、后训练),之后不再学习,一次产生一个token,不可回溯。而大脑的特征是:大量递归,单一学习过程贯穿始终,两个脑叶通过胼胝体(Corpus Callosum)来回交互,以概念为单位思考而非单个token,不断回溯修订。

扩散为François提供了两个大脑确实在做的事情:

  1. 利用随机性:整个生物和自然界都利用随机性。扩散做的正是利用随机性——给数据加噪,从中学习。大脑能否给输入数据加噪?绝对可以——神经元具有极大的随机性(对数正态分布的脉冲模式等)。

  2. 以概念而非单token进行思考:大脑发出概念,再解码为大块文本/思想,然后修订之前的想法。LLM可能内部也在做类似的事情,但它被训练方式所束缚——动作空间只有一次一个token。

对创始人和研究者的建议

François将建议分为两个阵营:

训练模型的人:认真审视扩散,不管你的应用是什么。即使只是为了获取一个潜在空间(Latent Space)再在其上训练,扩散都应成为你训练循环的基本组成部分。在机器学习领域,没有哪个应用不应该深入考虑扩散过程。

使用模型的人:更新你对扩散能力增长速度的认知。看看过去5年图像生成从Midjourney初代到Veo、Sora、Flux、SD3的进步——提升了上千倍。答案就是规模化,这需要时间、金钱和数据。现在将同样的规模化应用到蛋白质、DNA、机器人策略、自动驾驶——"滑向冰球要去的地方"(Skate to where the puck's going)。

扩散的核心过程也在不断改进——越来越简单,效果越来越好。押注机器人将在家庭中工作,押注蛋白质折叠只会越来越好,押注这一切将扩展到DNA和代谢组学等领域。

目前,扩散已"吞噬"了AI的几乎所有领域,仅有两个领域未被攻破:自回归大语言模型(AR LLM)仍优于扩散LLM,以及博弈(如AlphaGo使用的蒙特卡洛树搜索MCTS)。但更多研究正在进行中。

François最后指出:扩散将重新定义整个经济。