Logo
Section 1 / 5

生成式学习

熟悉生成学习和隐变量模型背后的基本原理。

导入

生成式学习

熟悉生成学习和隐变量模型背后的基本原理。

判别模型与生成模型

机器学习模型通常被分为判别模型和生成模型。这种分类源于我们构建和训练这些模型所采用的概率化表述方式。

判别模型学习在给定数据点 xx 的条件下,标签 yy 的概率,数学上表示为 p(y∣x)p(y|x)。为了将一个数据点归入某一类别,我们需要学习数据与类别之间的映射关系。这种映射可以用概率分布来描述,每个标签会在特定数据点上“竞争”概率密度。

生成模型则不同,它们的目标是直接学习数据点上的概率分布,而不依赖外部标签,数学上表示为 p(x)p(x)。在这种情况下,是各个数据点自身在“竞争”概率密度。

条件生成模型是另一类模型,旨在学习在给定标签 yy 的条件下,数据 xx 的概率分布。如你所料,这表示为 p(x∣y)p(x|y)。此时,数据依然在“竞争”密度,但这种竞争是在每一个可能的标签下分别进行的。

需要澄清一下这里的“竞争”概念。概率密度函数 pp 是一个归一化函数,其在整个定义域上的积分等于 1:

∫Xp(x)dx=1\int_{X} p(x) dx = 1

显然,每个数据点 xx 只能“获得”一小部分密度值。因此,每个 xx 值都在“与其他值争夺更大的份额”。

此外值得一提的是,如果我们考虑贝叶斯法则,上述几类模型实际上是相互关联的:

p(x∣y)=p(y∣x)p(y)p(x)p(x | y) = \frac{p(y|x)}{p(y)} p(x)

这个公式表明,我们可以将某一类模型构造为其他类型模型的组合。

生成模型

如前所述,生成模型的目标是学习数据的概率密度函数 p(x)p(x)。该密度函数有效描述了训练数据的分布特性,并使我们能够通过对该分布进行采样来生成新的数据。理想情况下,我们希望模型学到的概率密度 p(x)p(x) 与真实数据的分布 pdata(x)p_{data}(x) 完全一致。为实现这一目标,已有多种不同的建模策略。

需要注意的是,大多数情况下生成模型是无监督的,即它们使用无标签数据进行训练。

潜变量模型

潜变量模型旨在通过引入潜变量来建模概率分布。

潜变量可视为将数据点映射到一个连续的低维空间中的变换。

直观上,潜变量以更简洁的方式描述或“解释”原始数据。

从严格的数学角度看,服从概率分布 p(x)p(x) 的数据点 xx 被映射为服从分布 p(z)p(z) 的潜变量 zz。

基于这一思想,我们可以定义以下五个基本概念:

  • 先验分布 p(z)p(z):用于建模潜变量的行为特征。
  • 似然函数 p(x∣z)p(x|z):定义如何从潜变量生成数据点。
  • 联合分布 p(x,z)=p(x∣z)p(z)p(x,z) = p(x|z)p(z):似然与先验的乘积,本质上代表了整个模型。
  • 边缘分布 p(x)p(x):原始数据的分布,是模型的最终目标。它反映了生成某个数据点的可能性。
  • 后验分布 p(z∣x)p(z|x):描述由某个具体数据点所能推断出的潜变量分布。

注意,以上过程均未涉及任何标签 yy!

最后,再定义两个关键术语:

  • 生成(Generation):指从潜变量 zz 计算出数据点 xx 的过程,即从潜空间映射回实际数据分布。数学上由似然函数 p(x∣z)p(x|z) 表示。
  • 推断(Inference):指根据数据点 xx 推导出对应潜变量 zz 的过程,由后验分布 p(z∣x)p(z|x) 描述。

显然,推断是生成的逆过程,反之亦然。

从可视化角度,可以参考如下示意图:

(图示:生成与推断之间的关系)

现在问题的关键浮现出来:我们如何才能得到这些分布?这正是变分自编码器(VAE)发挥作用的地方。

循环神经网络

自编码器基础