机器学习分为监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)、强化学习(Reinforcement Learning)以及半监督学习。
监督学习(Supervised Learning)主要包括两大类基础任务:回归(Regression)和分类(Classification)。前者是预测连续值(输出一个数值),或者是预测离散类别标签(输出是离散的)。结构化学习(Structured Learning)是一类更复杂的监督学习任务,其输出是具有内部结构的对象,通常可视为分类或回归的高维/关联扩展。
分类任务的模型分为生成式模型(Generative Model)和判别式模型(Discriminative Model)。生成式模型包括GDA(Gaussian Discriminant Analysis)、GDA的变形LDA(Linear Discriminant Analysis)和 QDA(Quadratic Discriminant Analysis)、朴素贝叶斯和隐马尔可夫模型(HMM)等等。判别式模型包括逻辑回归、SVM(Support Vector Machine)等等。
本文简单介绍GDA。
问题设定 (1)
训练数据为一组带标签的样本。
对象:由 $d$ 个连续特征描述,表示为特征向量 $\boldsymbol{x} \in \mathbb{R}^d$;
标签:样本所属的类别,记为 $y$,其中 $y \in {c_1, c_2, \dots, c_K}$(离散变量,共 $K$ 个类别);
样本:一个对象及其所属的类别构成一个样本,记为 $(\boldsymbol{x}_i, y_i)$;
样本集:给定 $N$ 个独立同分布的训练样本
$$
(\boldsymbol{x}_1, y_1),\ (\boldsymbol{x}_2, y_2),\ \dots,\ (\boldsymbol{x}_N, y_N)
$$
其中 $\boldsymbol{x}_i \in \mathbb{R}^d$ 是第 $i$ 个样本的特征向量,$y_i$ 是其对应的类别标签。
注:下标 $i$ 表示样本索引,而非向量分量;向量 $\boldsymbol{x}i$ 的第 $j$ 个分量记为 $x{ij}$。
任务:学习一个分类模型,使其能够对新的输入 $\boldsymbol{x}_{\text{new}}$ 预测其所属类别 $y$。
核心思想 (2)
假设训练样本按如下生成过程产生:
- 首先,从类别先验分布 $P(y)$ 中随机选择一个类别 $y = c_k$,其中 $P(y = c_k)$ 表示类别 $c_k$ 出现的概率;
- 然后,在已知 $y = c_k$ 的条件下,从类条件分布 $P(\boldsymbol{x} \mid y = c_k)$ 中生成特征向量 $\boldsymbol{x}$;
因此,样本 $(\boldsymbol{x}, y = c_k)$ 被生成的联合概率为:
$$
P(\boldsymbol{x}, y = c_k) = P(y = c_k) \cdot P(\boldsymbol{x} \mid y = c_k).
$$
说明:$P(\boldsymbol{x} \mid y = c_k)$ 表示——在已经选定类别 $y=c_k$ 的前提下,从该类别中生成特征向量 $\boldsymbol{x}$ 的概率。换句话说,它刻画了类别 $c_k$ 内部样本的分布规律(下文将把这一分布建模为多元高斯分布)。
实际上,训练样本来自于真实世界,并不是按上述方法生成的。但我们要构建真实世界的模型,手中只有这些训练数据。假如上述生成方式所产生的样本分布,与真实世界抽样得到的样本分布足够接近,我们就能据此反推真实世界的规律。更技术地说:只要模型的联合分布 $P_{\text{model}}(\boldsymbol{x},y)$ 足够接近真实世界的联合分布 $P_{true}(\boldsymbol{x},y)$,模型的预测也就可靠。正如 George E. P. Box 所言:
“All models are wrong, but some are useful.”
如何使得模型中的 $P(y)$ 和 $P(\boldsymbol{x} \mid y=c_k)$ 足够接近真实世界的分布?或者更严格地说,我们如何通过有限的训练数据,学习一个生成模型 $P_{\text{model}}(y)$ 和 $P_{\text{model}}(\boldsymbol{x} \mid y)$ 使其尽可能逼近真实世界的分布 $P_{true}(y)$ 和 $P_{true}(\boldsymbol{x} \mid y)$?
高斯判别分析(Gaussian Discriminant Analysis, GDA)提供了一种具体解决方案。
高斯判别分析 (3)
在回归问题中,首先根据领域知识(domain knowledge)选择一个带未知参数的函数形式作为模型(如线性函数、多项式或神经网络)。
分类问题同样如此:基于领域知识(domain knowledge)或对数据的先验理解,如果每个类别的特征在输入空间中近似服从高斯分布(即在给定类别条件下,样本呈“椭球状”聚集),那么选择高斯判别分析(Gaussian Discriminant Analysis, GDA)就是一种自然且合理的建模决策。
换句话说,GDA 适用于那些类条件分布 $P(\boldsymbol{x} \mid y = c_k)$ 近似服从多元高斯分布的场景。
这本质上是根据 domain knowledge 主动选择 GDA 作为模型,而非将 GDA 视为万能分类器。
GDA 模型定义如下:
类别先验 $P_{\text{model}}(y)$ 服从多项分布:
$$
P(y = c_k) = \pi_k, \quad \text{其中 } \pi_k \geq 0,\ \sum_{k=1}^{K} \pi_k = 1.
$$类条件分布 $P_{\text{model}}(\boldsymbol{x} \mid y = c_k)$ 服从多元高斯分布:
$$
P_{\text{model}}(\boldsymbol{x} \mid y = c_k) = \mathcal{N}(\boldsymbol{x} \mid \boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)
$$其中
$$
\mathcal{N}(\boldsymbol{x} \mid \boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) =
\frac{1}{(2\pi)^{d/2} |\boldsymbol{\Sigma}_k|^{1/2}}
\exp\left( -\frac{1}{2} (\boldsymbol{x} - \boldsymbol{\mu}_k)^\top \boldsymbol{\Sigma}_k^{-1} (\boldsymbol{x} - \boldsymbol{\mu}_k) \right)
$$是多元高斯分布的概率密度函数(PDF)。
类比回归问题中的模型(带未知参数的函数),GDA 模型中也包含一组待学习的未知参数,具体包括:
- 类别先验参数:$\pi_1, \pi_2, \dots, \pi_K$,表示各类别的先验概率;满足 $\sum_{k=1}^{K} \pi_k = 1$;
- 高斯分布参数:对每个类别 $c_k$,
- 均值向量 $\boldsymbol{\mu}_k \in \mathbb{R}^d$,
- 协方差矩阵 $\boldsymbol{\Sigma}_k \in \mathbb{R}^{d \times d}$(对称正定)。
因此,完整参数集为:
$$
\boldsymbol{\theta} = {\pi_1, \dots, \pi_K; \boldsymbol{\mu}_1, \dots, \boldsymbol{\mu}_K; \boldsymbol{\Sigma}_1, \dots, \boldsymbol{\Sigma}_K }
$$
接下来的任务就是从训练数据中学习 $\boldsymbol{\theta}$,使得模型分布 $P_{\text{model}}(\boldsymbol{x}, y)$ 最大程度地“解释”观测样本 $(\boldsymbol{x}_i, y_i)$,从而逼近真实数据分布。
在继续之前,需明确 $P_{\text{model}}(\boldsymbol{x} \mid y = c_k)$ 的含义。
这是一个条件概率密度函数(conditional probability density function),其一般形式为 $P(A \mid B)$,表示在事件 $B$ 已经发生的前提下,事件 $A$ 发生的条件概率。
在当前上下文中:
- 事件 $B$:类别被选定为 $y = c_k$;
- 事件 $A$:生成的样本落入 $\boldsymbol{x}$ 的无穷小邻域内。注意:并非“生成确切的 $\boldsymbol{x}$”
需要特别注意:由于 $\boldsymbol{x} \in \mathbb{R}^d$ 是连续型随机向量,其取任意特定值的概率严格为零,即
$$
P(\boldsymbol{X} = \boldsymbol{x} \mid y = c_k) = 0
$$
因此,$P_{\text{model}}(\boldsymbol{x} \mid y = c_k)$ 是概率密度,而非概率本身。它的数值大小反映了在类别 $c_k$ 下,样本出现在 $\boldsymbol{x}$ 附近的相对可能性:密度越高,该区域出现样本的可能性越大。若$\boldsymbol{x}$不是连续的而是离散的,就可以理解为概率了。
又因为建模的领域符合多元高斯分布(假设),所以这个概率密度函数记为$\mathcal{N}(\boldsymbol{x} \mid \boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)$.
最大似然估计 (4)
回归问题通常通过梯度下降等数值方法优化参数;而 GDA 因其良好的概率结构,可通过最大似然估计(Maximum Likelihood Estimation, MLE)获得解析解。
给定独立同分布的训练集 ${(\boldsymbol{x}i, y_i)}_{i=1}^N$,对数似然函数为:
$$
\ell(\theta) = \sum{i=1}^{N} \log P_{\text{model}}(\boldsymbol{x}i, y_i)
= \sum_{i=1}^{N} \left[ \log \pi{y_i} + \log \mathcal{N}(\boldsymbol{x}i \mid \boldsymbol{\mu}{y_i}, \boldsymbol{\Sigma}_{y_i}) \right].
$$
对比回归问题
分类与回归的建模流程本质一致:
- 回归:假设 $y \approx f_\theta(\boldsymbol{x})$,选择函数族 $f_\theta$(如线性模型);
- GDA:假设 $(\boldsymbol{x}, y) \sim P_\theta(\boldsymbol{x}, y)$,选择概率模型族 $P_\theta$(高斯生成过程)。
两者均遵循:限定假设空间 → 用数据拟合参数。