本文总结了生成模型和判别模型的理论基础,及在实际应用中的优劣。

1. 生成模型和判别模型的区别

判别模型

  1. 直接计算样本的属于不同类别的条件概率,将概率最高的类别作为最终结果。
  2. 追求分类的结果最好,只需要找到一个性能优秀的分类器。

生成模型

  1. 分析数据的分布
  2. 计算数据的概率密度分布
  3. 对数据的分类基于对于数据产生过程的认知

2.逻辑回归的判别模型解释

问题:

假设我们需要将样本 $X = [x_1,x_2,…]$ 分成两类:$C_1,C_2$

求解的目标:

计算条件概率 $P(C_1|X), P(C_2|X)$,比较条件概率的大小,进行归类

建立模型:

假设 $P(C_1|X) = \frac{1}{1+\exp(-WX-b)}$

使用交叉熵作为损失函数:

$$\mathcal{L} = -y\log P(C_1|X) - (1-y) \log (1-P(C_1|X))$$

使用梯度下降法,得到使损失函数最小的 $w^* ,b^*$。

3.逻辑回归的生成模型解释

根据贝叶斯定理,我们可知:

$P(C_1|X)= \frac{P(X|C_1)P(C_1)}{P(X)} = \frac{P(X|C_1)P(C_1)}{P(X|C_1)P(C_1) + P(X|C_2)P(C_2)}$

X的联合概率分布为:

$P(X) = P(X|C_1)P(C_1) + P(X|C_2)P(C_2)$

任何一个样本有可能是由 $C_1$生成的,也有可能是由 $C_2$ 生成的。我们需要计算 $P(X|C_1), P(X|C_2)$。

基础假设

为了简化计算,同时防止参数过多出现过拟合,我们假设 $P(X|C_1), P(X|C_2)$ 为正态分布:

$$f_{\mu ,\Sigma} = \frac{1}{(2\pi)^{D/2}} \frac{1}{|\Sigma|^{0.5}}\exp[-\frac{1}{2} (x-\mu)^{\top} \Sigma^{-1}(x-\mu)]$$

最大似然估计

假设属于类型 $C_1$ 的点为 $X^1, X^2, X^3,…$ 似然函数为:

$$L(\mu ,\Sigma) = \prod f_{\mu ,\Sigma}(X^i)$$

$\mu^* ,\Sigma^* = argmax L(\mu, \Sigma) ~~ –> ~~ \mu^* = \frac{1}{n}\sum X^i , \Sigma^* = \frac{1}{n}\sum (X-\mu^* )^{\top} (X-\mu^*)$

同理,我们可以算出 $C_2$ 的分布。

计算边界

得到 $P(X|C_1), P(X|C_2)$,我们计算 $P(X|C_1) = P(X|C_2)$,得到如下的决策边界

假设 $C_1, C_2$ 有相同的协方差矩阵,决策边界变为直线。

数学表达

我们先计算样本的条件概率

$P(C_1|X) = \frac{P(X|C_1)P(C_1)}{P(X|C_1)P(C_1) + P(X|C_2)P(C_2)} = \frac{1}{1+\frac{P(X|C_2)P(C_2)}{P(X|C_1)P(C_1)}} = \frac{1}{1+exp(-z)} = \sigma(z)$

$z = \ln \frac{P(X|C_1)P(C_1)}{P(X|C_2)P(C_2)}=\ln\frac{P(X|C_1)}{P(X|C_2)} + \ln \frac{P(C_2)}{P(C_2)} = \ln\frac{P(X|C_1)}{P(X|C_2)} + \ln \frac{N_1}{N_2}$

根据正态分布的假设,使用极大似然值估计,算出 $P(X|C_1) ~~ P(X|C_2)$。

$P(X|C_1) = \frac{1}{(2\pi)^{D/2}} \frac{1}{|\Sigma|^{0.5}}\exp( -\frac{1}{2} (x-\mu_1)^{\top} \Sigma^{-1}(x-\mu_1))$

$P(X|C_2) = \frac{1}{(2\pi)^{D/2}}\frac{1}{|\Sigma|^{0.5}}\exp(-\frac{1}{2} (x-\mu_2)^{\top} \Sigma^{-1}(x-\mu_2))$

将 $P(X|C_1) ~ P(X|C_2)$ 代入z的表达式,可得:

$ z = \frac{1}{2}[ (x-\mu_2)^{\top} \Sigma^{-1}(x-\mu_2)- (x-\mu_1)^{\top} \Sigma^{-1}(x-\mu_1)] + \ln \frac{N_1}{N_2}$

$~~=\frac{1}{2}[x^{\top}\Sigma^{-1} x - 2\mu_2^{\top}\Sigma^{-1}x + \mu_2^{\top}\Sigma^{-1} \mu_2 - x^{\top}\Sigma^{-1} x + 2\mu_1^{\top}\Sigma^{-1}\mu_1 - \mu_1^{\top}\Sigma^{-1} \mu_1 ] + \ln \frac{N_1}{N_2}$

$~~ = (\mu_1-\mu_2)^{\top}\Sigma^{-1} x + \frac{1}{2} \mu_2^{\top}\Sigma^{-1} \mu_2 - \frac{1}{2}\mu_1^{\top}\Sigma^{-1} \mu_1 + \ln \frac{N_1}{N_2}$

$w^* = (\mu_1-\mu_2)^{\top}\Sigma^{-1} ~~~~~~b^* = \frac{1}{2} \mu_2^{\top}\Sigma^{-1} \mu_2 - \frac{1}{2}\mu_1^{\top}\Sigma^{-1} \mu_1 + \ln \frac{N_1}{N_2}$

4.模型对比

判别模型

  • performance更好
  • 需要的样本数量更少

生成模型

  • 当样本量足够时,收敛速度更快
  • 训练需要更多的样本
  • 提供更多的信息
  • 鲁棒性更好