在机器学习领域,生成式模型(Generative Models)和判别式模型(Discriminative Models)构成了两大核心方法论。这两种模型在处理数据分布和决策边界时展现出截然不同的哲学:生成式模型试图理解数据是如何生成的,而判别式模型则专注于学习不同类别之间的分界线。
我第一次接触这个概念是在图像分类项目中,当时困惑于为什么有些算法需要估计像素的联合概率分布,而另一些则直接学习分类边界。后来发现,这背后反映的是对"因果关系"与"相关性"的不同侧重——生成式模型通过构建P(X,Y)来模拟数据生成过程,而判别式模型直接建模P(Y|X)进行预测。
生成式模型的核心是学习联合概率分布P(X,Y),这里X是特征,Y是标签。以朴素贝叶斯为例:
code复制P(Y|X) = P(X|Y)P(Y) / P(X)
实际建模时,我们通过极大似然估计来学习:
在图像生成任务中,VAE(变分自编码器)通过编码器学习潜在空间分布q(z|x),解码器则从p(x|z)生成数据。我曾用PyTorch实现过一个MNIST生成器,关键代码如下:
python复制# VAE的重参数化技巧
def reparameterize(mu, logvar):
std = torch.exp(0.5*logvar)
eps = torch.randn_like(std)
return mu + eps*std
判别式模型直接建模决策边界,如逻辑回归:
code复制P(Y=1|X) = σ(w^T x + b)
其中σ是sigmoid函数。在SVM中,我们优化的是几何间隔:
code复制min 1/2 ||w||^2 + C∑ξ_i
s.t. y_i(w^T x_i + b) ≥ 1-ξ_i
最近在文本分类项目中对比发现,BERT作为判别式模型,其[CLS] token的表示直接用于分类,完全不考虑词序列的生成概率。
高斯混合模型(GMM):
生成对抗网络(GAN):
code复制min_G max_D V(D,G) = E[logD(x)] + E[log(1-D(G(z)))]
随机森林:
条件随机场(CRF):
code复制P(y|x) = 1/Z(x) exp(∑λ_k f_k(y,x))
经验提示:GAN训练需要精心设计网络架构,DCGAN的卷积设置是个安全起点
在最近的客户流失预测项目中,对比发现XGBoost(判别式)比贝叶斯网络(生成式)的AUC高8%,但后者能生成典型流失用户特征。
生成式判别式混合:
自监督学习:
我在实验中发现,CLIP模型巧妙结合了两种范式:
| 模型类型 | 常用指标 | 注意事项 |
|---|---|---|
| 生成式 | 对数似然、FID、IS | FID对batch size敏感 |
| 判别式 | 准确率、F1、AUC-ROC | 类别不平衡时慎用准确率 |
在部署商品推荐系统时,最终选择判别式模型,因为:
模式坍塌:
评估失真:
特征工程依赖:
外推能力弱:
实际遇到过一个案例:判别式模型将全黑图像分类为"猫",因为训练集中黑猫样本过多。这促使我们在产品中增加了置信度阈值机制。