
截至 2026 年生成式 AI 已席卷全球。仅 ChatGPT 一款产品,每周活跃用户就超过 9 亿。OpenAI、Anthropic、Google、Meta 等基础玩家之外,还有数不胜数的企业、机构和个人在大量使用生成式 AI。起初只是一个研究课题,如今已演变为通用技术,正在重塑知识的生产、表达与应用方式。
AI 爱好者中有一种常见的简化理解:所谓生成式模型,就是能创造或生成新内容的模型。无论是生成文本序列、图像像素还是指令,普遍认知是生成式模型回答的是"我该生成什么"这个问题。这种说法并无错误,但在机器学习领域,"生成式"有一个更古老的含义,回答的是一个更深层的问题:"产生我所观测到的数据的过程是什么?" 生成式模型学习的不是观测数据本身,而是未观测因素的隐藏过程、结构和分布——观测数据不过是从中采样得到的样本。
本文从生成式建模最简单的概率论根源出发,一路追溯至现代形态,梳理每一次创新如何为这个故事增添新的篇章。
在介绍各类模型之前,有必要先厘清机器学习中一个基本区分。划分 ML 模型的方式之一是问它在学什么:学习输入与输出之间的直接映射,还是学习产生数据的概率结构?
判别式学习(Discriminative Learning)——判别式模型针对给定输入,学习各目标类别之间的决策边界。例如,对图像中物体类别进行预测的分类器,会学习一个使各类别间隔最大化的决策边界;从姿态预测人物情绪的序列预测模型,则会学习分隔各情绪类别的决策边界。 用概率语言来说,判别式学习直接建模的是给定输入条件下某个观测结果的概率:
P(y|x)
生成式学习(Generative Learning)——生成式模型学习一个能够产生观测数据的概率分布。在无监督场景下,这意味着学习数据本身的分布 P(x);在有监督场景下,则意味着学习输入与输出的联合分布:
P(x, y) = P(x|y) \cdot P(y)
生成式学习回答的不是"给定输入,标签是什么?",而是"输入 X 在每个可能标签下被产生的可能性有多大?"
追溯生成式学习的早期痕迹,朴素贝叶斯分类器(Naive Bayes Classifier)是最好的起点。贝叶斯定理虽然早在 18 世纪就已提出,但朴素贝叶斯分类直到 1990 年代才真正流行起来。
假设有这样一道题:不能直接看窗外,但可以根据以下线索猜测室外天气:
输入: 输出:
雨伞,U = yes | no 天气,W:rainy | sunny
鞋子,S = wet | dry朴素贝叶斯模型会这样思考:"如果天气是下雨,看到有人撑伞且鞋子湿漉漉的概率是多少?如果天气是晴天,看到这些线索的概率又是多少?" 用概率语言表达,模型关注以下方程:
完整联合分布:
P(W, U, S) = P(W) · P(U, S | W)
线索的似然:
P(U, S | W) = P(U | W) · P(S | W) (朴素贝叶斯独立性假设)
后验概率:
P(W | U, S) = (P(W) · P(U | W) · P(S | W)) / P(U, S)其中 P(W) 是天气的先验概率,P(U, S | W) 是已知天气时观测到这些线索的似然。根据朴素贝叶斯假设,一旦天气已知,各线索之间条件独立。实践中,似然项可根据数据类型用多种方法估计。不管用哪种估计方法,关键在于:朴素贝叶斯不仅仅学习从线索到天气(原因)的映射,还学习了原因与线索联合分布的因子分解形式。
但这个模型假设学习过程中原因(天气)是已知的。如果原因是隐藏的,该怎么办?
高斯混合模型(Gaussian Mixture Models,GMMs)引入了生成式学习中一个重要概念:隐藏原因。其根源可追溯至 19 世纪末至 20 世纪初的统计学领域,核心思想是:观测到的分布可以是若干较小分布的混合。与朴素贝叶斯不同,GMM 不要求观测样本来自已知标签,而是假设观测来自某个隐藏的成分——只要能估计出这个成分,从其分布中采样,就能得到生成的样本。
沿用之前的类比:现在假设无法观测到室外天气,只能观测人们携带的雨伞和鞋子的湿润程度。如果这些观测呈现出某种规律,可以推测它们是由某种类似天气的隐藏条件产生的。高斯混合模型正是对这一想法建模——假设每个观测都来自某个未被观测到的成分。一个成分倾向于产生携带雨伞、鞋子湿润的人群;另一个成分倾向于产生没有雨伞、鞋子干燥的人群。模型并不知道哪个成分对应"下雨"或"晴天",只能看到观测结果,尝试推断出可能产生这些观测的隐藏成分。
数学表达如下:
P(x) = Σₖ πₖ N(x | μₖ, Σₖ)
k = 隐藏成分的数量
x = 观测值
μₖ = 成分 k 的均值
N(x | μₖ, Σₖ) = x 在成分 k 下的概率密度
Σₖ = 成分 k 的协方差矩阵
πₖ = 成分 k 的权重这里密度函数使用的是高斯分布,但混合模型的思想同样适用于其他分布,例如面向二值数据的伯努利分布、面向词频的多项分布等。
既然均值、方差和权重都是不可观测的,该如何估计它们?这正是期望最大化算法(Expectation-Maximization Algorithm)登场的地方。
EM 算法是一种迭代式统计优化算法,于 1977 年提出,专门用于在模型部分或完全隐藏的情况下估计参数。
算法包含两个主要步骤:
两步交替进行,直到估计的对数似然改善量可忽略不计,或模型参数不再有明显变化为止。随着迭代推进,算法逐渐揭示数据的隐藏结构,是让混合模型建模隐藏结构的有效手段。
GMM 是一类更广泛的潜结构模型中的一个例子。在 GMM 中,潜结构是生成每个观测的隐藏聚簇;在潜在狄利克雷分配(Latent Dirichlet Allocation,LDA)等主题模型中,隐藏结构是一组主题,文档由主题混合生成,主题再生成词语;在潜因子模型中,隐藏结构是连续的,观测结果由隐藏维度的组合产生。这些模型共同体现了生成式学习的核心主题:推断产生观测数据的隐藏结构。
以上所有模型都是针对静态数据的。但语言、语音、声学、音乐、运动都随时间展开,处理这类数据需要序列建模。
隐马尔可夫模型(Hidden Markov Models,HMMs)引入了隐状态随时间演化的概念,每个隐状态在对应时间步上生成观测值。
继续沿用之前的类比,现在假设无法观测天气,只能观测以下线索:
第 1 天:很多人撑伞,鞋子湿透
第 2 天:很多人撑伞,鞋子湿透
第 3 天:一些人撑伞,鞋子略湿
第 4 天:少数人撑伞,鞋子干燥
第 5 天:没有人撑伞,鞋子干燥朴素贝叶斯用单一观测推断天气;GMM 去掉了天气标签,把类天气状态视为隐藏成分;HMM 则在此基础上引入了时序依赖性——今天的天气并不完全独立于昨天的天气。下图给出了该场景的状态表示:

每一天都有一个类天气的隐状态,对应观测到当天的线索。每个天气隐状态依赖于前一个天气隐状态,每条线索依赖于所有之前的天气状态和线索。为了简化问题,做出两个假设:
数学表达如下:
P(Weatherₜ | Weather₁, ..., Weatherₜ₋₁)
= P(Weatherₜ | Weatherₜ₋₁) P(Cluesₜ | Weather₁, ..., Weatherₜ, Clues₁, ..., Cluesₜ₋₁)
= P(Cluesₜ | Weatherₜ)基于这些假设,HMM 问的是:什么样的天气状态序列可能产生了观测到的序列? 它估计的是隐藏序列与观测序列的联合分布:
P(Weather₁:T, Clues₁:T)
= P(Weather₁) · P(Clues₁ | Weather₁)
· ∏ₜ₌₂ᵀ P(Weatherₜ | Weatherₜ₋₁) · P(Cluesₜ | Weatherₜ)这正是 HMM 具有生成性的原因。参数学习使用 EM 算法的一种特殊形式称为 Baum-Welch 算法,步骤如下:
标准 HMM 中,隐状态是离散的——例如天气建模中的"下雨"或"晴天"、词性标注中的"名词"或"动词"、语音系统中的"音素 A"或"音素 B"。但许多真实世界的过程以连续值演化,如位置、速度、温度、运动或传感器信号。对于这类情况,潜状态空间模型(latent state-space models)提供了连续版本的对应方案:隐状态在连续空间中平滑移动,随时间生成观测值。经典例子是卡尔曼滤波器(Kalman filter)——连续隐状态按照动力学规则演化,并产生带噪声的观测值。
HMM 在序列上的生成式建模(尤其是语音和语言处理)方面贡献巨大。这也引出了一个问题:能否保留状态空间建模的自回归特性,同时不显式建模隐状态?
N-gram 提出了一种直接的自回归统计语言建模方式,不对隐状态建模,直接回答:给定一组前序词,下一个词是什么?
这一思想可追溯至早期对序列的统计研究。1913 年,Andrey Markov 分析了文本中元音和辅音的规律,表明文本中的符号并非相互独立,而是依赖于前面出现的内容。此后,Claude Shannon 在 1948 年的论文 A Mathematical Theory of Communication 中将语言描述为随机过程——一种由概率支配的符号序列。这种对语言的概率化理解,成为统计语言建模的基础。
数学上简化为:
P(wₜ | wₜ₋ₙ₊₁, ..., wₜ₋₁)使用一个前序词时是二元组(bi-gram)模型,使用两个前序词时是三元组(tri-gram)模型:
P(wₜ | wₜ₋₁) (Bi-gram 模型)
P(wₜ | wₜ₋₂, wₜ₋₁) (Tri-gram 模型)实践中,bi-gram 和 tri-gram 尤为常见,在实用性和上下文覆盖之间取得了合理平衡。Bi-gram 简单易算,tri-gram 在仍保持可行性的前提下捕获了更多上下文。
学习机制基于对二元组和三元组的频次统计。较大的 N 值也被使用过,但会带来数据稀疏(data sparsity)问题:上下文窗口越长,频次统计越不可靠,因为长词序列在数据集中出现得极为稀少。
"预测下一个词"的任务看起来像是判别式任务:模型以前序词为输入,以下一个词为预测目标。但这个目标并不是外部标签,而是数据序列本身的一部分。对序列每个位置学习 P(wt | w1, ..., wt-1),模型实际上在学习文本概率分布的因子分解形式:
P(w₁, ..., wₙ) = ∏ₜ P(wₜ | w₁, ..., wₜ₋₁)尽管通过预测任务训练,这种建模方式依然是生成式的。
N-gram 模型并非深度模型,既不能捕获长程上下文,也不能学习更高层次的抽象,只能处理统计规律。但它提出了最核心的生成式问题——而这个问题在所有现代大型语言模型中依然存在。
N-gram 模型依赖精确的频次统计:短语在数据集中原封不动地出现,它就能工作;一旦没出现,模型就几乎无能为力。语义相近的词,如 dogs 和 canines,会被当作完全不同的词来统计——这是基于计数的表示方法的固有局限。于是问题变成:能否保留 N-gram 的概率生成模型,但用更鲁棒的方式表示词语?
神经网络由此进入了这个故事。神经网络可以理解为一个可微分函数,通过多层可学习参数和非线性激活函数对输入向量进行变换。早期神经网络的思想可追溯至 Frank Rosenblatt 于 1958 年提出的感知机;Rumelhart、Hinton 和 Williams 于 1986 年的工作普及了反向传播算法,使多层神经网络的实际训练成为可能。通过反向传播,神经网络能够从数据中经验性地学习隐藏结构,如下图所示:

图中是一个简单神经网络,输入层为 6 维向量,隐藏层为 4 维向量,输出层为 6 维向量。以预测给定前三个词后的下一个词为例:
假设词汇表包含 6 个词:
{the, cat, sat, on, mat, dog}
输入上下文:
the cat sat
假设每个词用 2 维向量表示:
the → [0.2, 0.8]
cat → [0.9, 0.1]
sat → [0.4, 0.6]
将三个向量拼接,得到输入上下文向量:
x = [0.2, 0.8, 0.9, 0.1, 0.4, 0.6],x ∈ R⁶神经网络的计算过程:
h = σ(W₁x + b₁) (隐藏层)
scores = W₂h + b₂ (输出层)
其中
x ∈ R⁶,h ∈ R⁴,scores ∈ R⁶,σ 为 sigmoid 函数得到输出层后,预测下一个词的概率:
P(wₜ | input) = softmax(scores)softmax 函数将 6 维分数向量转换为加和为 1 的概率分布,每个维度对应一个词的概率,取概率最高的维度即为最可能的下一个词。
训练时使用反向传播算法,根据预测值与真实值之间的差异,计算各权重和偏置的导数:
预测向量:
P(wₜ | input) = softmax(scores)
真实标签向量:
y = [0, 0, 0, 1, 0, 0] (1 表示真实的下一个词)
损失(差异度量):
L = - Σᵢ yᵢ log(pᵢ)
通过反向传播计算导数:
∂L/∂W₁,∂L/∂b₁,∂L/∂W₂,∂L/∂b₂得到导数后,使用基于梯度下降的优化算法更新权重,持续迭代直到收敛。
对语言建模来说,这意味着词语不再依赖频次统计,而是可以用向量表示,这些向量通过数据学习得到。模型开始能够发现:在相似语境中出现的词,语义上也更为接近;对未见过的词也具备一定的鲁棒性。
Bengio 等人提出的神经概率语言模型是这一方向的里程碑工作,证明了用神经网络对语言的概率函数建模,相比传统 N-gram 模型可以取得明显更好的性能。其影响不止于性能提升,更引入了现代语言模型赖以为基的几个核心概念:连续表示学习、词 Embedding 以及从文本自身结构中学习。
早期神经语言模型受限于固定的上下文窗口大小。要突破这一限制,需要一种能够随序列展开捕获上下文的方式,循环神经网络(Recurrent Neural Network,RNN)系列模型由此登场。
RNN 是在 1980 至 1990 年代发展起来的神经网络,专门用于处理时间序列数据。与标准多层感知机独立处理输入的各部分不同,RNN 维护一个隐藏状态,在每个时间步同时处理当前输入和前一时间步的隐藏状态,该状态相当于序列的记忆。

隐藏状态可以看作对当前输入和前一时间步状态的神经变换,常见的状态方程如下:
hₜ = f(Wₕhₜ₋₁ + Wₓxₜ + b)
yₜ = g(Wₒhₜ + bₒ)
xₜ = t 时刻的输入
yₜ = t 时刻的输出
f(·) 和 g(·) 分别为隐藏层和输出层的激活函数从形式上看,这几乎就是一个沿时间轴展开的前馈神经网络,隐藏状态的权重对时序特性进行了编码。权重学习使用时序反向传播(Backpropagation through time)机制。与前馈神经网络不同,梯度计算不仅依赖当前时间步的输出,还依赖下一时间步的梯度——原因在于前向传播时,某一时间步的权重不仅影响该步的输出,也影响后续时间步的状态。
RNN 系列架构还有多种变体,其中最常见的是长短期记忆网络(Long Short Term Memory,LSTM)和门控循环单元(Gated Recurrent Units,GRU)。LSTM 通过额外的状态来表示记忆,GRU 使用门机制计算隐藏状态。两者都增加了模型复杂度,但使循环网络能够捕捉更长序列的时序动态。
这里有一个值得辨析的问题:RNN 的隐藏状态与第 3 节讨论的 HMM 或线性动力系统是否相似? 两者都使用隐藏状态,区别在于 HMM 和线性动力系统对隐藏状态的动态过程进行了显式建模,这使其不够灵活,难以处理语言建模或高级语音系统所需的大量状态。RNN 借助非线性函数从数据中自适应地学习,可解释性较低,但对不同类型的序列更加灵活。
RNN 系列模型本身并非生成式或判别式的,只是序列处理架构——训练目标才决定学习的性质。用 RNN 预测情绪标签是判别式学习;用 RNN 预测下一个词(如第 5 节所述)则是生成式的;用来做序列到序列的翻译,则变成了条件生成式学习。
长期以来,各种 RNN 变体在自然语言处理与生成、机器翻译、语音和视频处理等任务上一直处于最先进水平。但随着时间推移,一个弱点暴露出来:由于 RNN 本质上是自回归的,在序列到序列翻译或文本摘要等任务中,整个输入序列的信息实际上被压缩到最后一个隐藏状态,再用于生成输出序列。这对超长序列造成了瓶颈。
注意力机制(attention mechanism)由此进入了这个故事。
2014 年,Bahdanau 等人在论文 Neural Machine Translation by Jointly Learning to Align and Translate 中针对序列到序列生成问题中的编码器-解码器(encoder-decoder)瓶颈提出了解决方案。如下图所示,e 是循环网络的编码器状态,d 是解码器状态。在解码(生成)目标序列 Y 时,输入序列 X 的全部信息实际上被压缩到编码器的最后一个状态中。

注意力机制不再将整个序列压缩到最后一个编码器状态,而是让解码器在每个时间步对所有编码器隐藏状态进行加权组合。每个解码步骤都能访问完整的输入序列,从而缓解了瓶颈问题。数学上,每个解码步骤通过如下方程计算上下文向量:
sₜᵢ = a(dₜ, eᵢ)
a(dₜ, eᵢ) = vᵀ tanh(Wd dₜ + We eᵢ) (注意力分数)
αₜᵢ = exp(sₜᵢ) / Σⱼ exp(sₜⱼ) (归一化注意力权重)
cₜ = Σᵢ αₜᵢ eᵢ (上下文向量)
注意力可以理解为每个解码步骤与每个编码步骤之间的相似度分数(标量值)。上下文向量是所有编码器状态以归一化注意力分数为权重的加权和——对某个解码时间步贡献更大的编码器状态,在上下文向量中所占的比例也相应更高。
注意力机制是一个重要突破,适用范围不限于编码器到解码器的翻译任务,还扩展到文本摘要、图像描述生成、对话生成等场景。这一思想在现代生成式模型中至今仍在延续。
基于注意力的 RNN 序列模型取得了不少成就,但仍存在几个难以回避的弱点:
问题来了:能否仍通过注意力获得上下文表示,同时摆脱循环建模?

2017 年,Vaswani 等人发表论文 Attention is all you need,通过 Transformer 架构回答了上述所有问题。该架构的核心在于:注意力机制本身已足以捕获各个 Token(词或时间步)之间的关系。
一个 Transformer 块由自注意力层和前馈神经网络组合而成。自注意力(self-attention)让序列中每个时间步的输入与同一序列中所有其他时间步的输入进行交互,从而捕获每个时间步(或 Token)的局部上下文表示。
在以下示例中,X 是两个 Token 的 4 维向量表示,被投影到三个可学习的空间:查询(query)空间、键(keys)空间和值(value)空间。 查询空间表示当前 Token 正在寻找什么,键空间表示需要与之比较的所有 Token,值空间表示将被传递下去的结果及其相对重要性。注意力机制先将查询与键进行比较,生成注意力权重,再用这些权重对值向量进行加权求和,得到最终的注意力输出(上下文向量)。

数学上,注意力的计算方式如下:
Attention(Q, K, V) = softmax(QKᵀ / √d_k)V注意力权重是标量值,衡量每个值向量对上下文向量的贡献。上下文向量针对序列中的每个 Token 分别计算,随后再经过前馈神经网络处理。Transformer 架构由多个这样的块堆叠而成,在不同粒度上捕获上下文表示。此外,每个 Token 不止对应一组(键、值、查询)向量,这就是"头数"的概念,即多头注意力(multi-headed attention)。每个上下文向量可以并行计算,不像循环神经网络那样必须顺序处理——这也是 Transformer 可扩展性的来源。
多个块的堆叠使该架构非常适合 Fine-tuning,不同注意力层会在不同抽象层次上学习上下文。以语言为例,较低层的注意力层可能学习句法上下文,较高层学习语义,再高层则学习文档级别的上下文。
由于不再是循环网络,Token 的顺序信息不会自然存在于模型中,因此需要引入位置编码(positional encodings)与输入相加。位置编码最初是正弦函数形式,后来有大量工作探索了可学习的位置编码。
原论文处理的是用于语言翻译的编码器-解码器框架:一个 Transformer 栈用于编码输入序列,另一个用于解码输出序列。除自注意力外,还引入了交叉注意力(cross-attention)机制,使每个解码器 Token 都能关注每个编码器 Token。
由于处理的是条件生成问题,训练时需要对解码器隐藏序列中未来的 Token——推理时解码器无法访问未来的 Token。为此,作者引入了因果掩码(causal masking),在训练阶段将未来 Token 的注意力分数置为 0,从而保留了前面各节讨论过的自回归序列建模方式。
Transformer 架构彻底革新了深度学习领域,涌现出大量变体模型,将各个 AI 方向的技术水平推向新高。它证明了注意力机制可以取代循环机制,成为建模上下文的主要手段;这一突破打开了将 Transformer 用于各类深度学习问题的大门,无论是生成式任务还是判别式任务。
如果 Transformer 能如此有效地建模上下文,那么用它来完成最古老的语言建模目标会怎样——给定前序 Token,预测下一个 Token? 这个问题直接引出了 GPT。
2018 年,OpenAI 发表了第一篇关于生成式预训练 Transformer(GPT)的论文。思路简单,与最初的 N-gram 问题非常相似:给定前序词语,下一个词是什么? 数学表达与第 4 节相同:
P(x₁, ..., xₙ) = ∏ₜ P(xₜ | x₁, ..., xₜ₋₁)GPT 直接基于 Transformer 架构构建,但不采用编码器-解码器结构,而是仅使用带因果掩码的解码器架构来预测序列中的下一个 Token。其思路是:先用上述生成式目标训练一个基础模型(预训练),再将基础模型 Fine-tuning 到各类自然语言任务上。预训练模型是任务无关的通用语言模型,可后续针对各种任务进行定向使用。
2019 年,OpenAI 发布了 GPT-2 模型,表明如果保持相同的训练目标、专注于多样化训练数据,结果将是一个能够学习多种任务的通用语言模型,并在摘要生成、翻译、问答等任务上展现出零样本(zero shot)学习能力。研究重心逐渐转向在保持核心 Transformer 架构不变的前提下,扩大模型规模和数据集规模。
此后数年,围绕 Transformer 扩展的研究呈爆炸式增长,各大前沿机构和公司发表了大量生成式建模方面的研究成果,可以在后续文章中进一步讨论。研究发现,随着模型和数据规模的增大,模型能够学习到语言更高阶的抽象表示,如对话结构、领域特定语言、推理模式、数学分析、代码生成——本质上是一切可以用语言描述的事物。但核心思想始终未变:模型归根结底是在学习序列上的概率分布,生成不过是对这一分布采样的行为。随着规模的增大,分布变得越来越广泛、丰富,捕获到的语言结构层次也越来越深。
回到开篇的观点:生成式学习的历史,并不只是机器创造内容的能力史,更是机器学习"使创造成为可能的原因"的能力史。
除语言或自回归建模之外,还有其他生成式模型,例如:建模潜变量的变分自编码器(variational autoencoders,VAEs);通过与判别式模型竞争来学习的生成对抗网络(generative adversarial networks,GANs);以及通过迭代去噪来生成内容的扩散模型(diffusion models)。学习机制各有不同,但学习"可用于采样新数据的原因"这一深层问题始终如一。
本文从最简单的贝叶斯分类器——显式利用类别来解释观测结果——到假设隐藏原因生成观测结果的混合模型;从 HMM 和线性动力系统对序列隐藏原因的显式建模,到从数据中经验性学习这些动态过程的神经模型;最终,见证了基于 Transformer 的 GPT 架构如何将经典的生成式目标推向了非凡的规模。
有时模型看起来像是在对训练数据做插值;有时它又能给出令人惊讶的合理答案。但这并不意味着模型的思考方式与人类相同,也不意味着它能免疫幻觉(hallucination)或浅层的模式匹配。可见的数据只是证据,模型的目标依然是推断那些可以生成数据的原因。
这就是"生成式"学习更古老的故事。
by Sanchayan Sarkar
本文分享自 DeepHub IMBA 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!