生成模型和判别模型
本文总结了生成模型和判别模型的理论基础,及在实际应用中的优劣。
1. 生成模型和判别模型的区别
判别模型
- 直接计算样本的属于不同类别的条件概率,将概率最高的类别作为最终结果。
- 追求分类的结果最好,只需要找到一个性能优秀的分类器。
生成模型
- 分析数据的分布
- 计算数据的概率密度分布
- 对数据的分类基于对于数据产生过程的认知
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更好
- 需要的样本数量更少
生成模型
- 当样本量足够时,收敛速度更快
- 训练需要更多的样本
- 提供更多的信息
- 鲁棒性更好