PR学习笔记 #5 判别式 vs. 生成式
本文最后更新于:2022年11月14日 晚上
在机器学习中,我们可以将有监督学习可以将其分为两类模型:判别式模型(Discriminative Model)和生成式模型(Generative Model)。二者的建模对象不同,但最终目标都是使测试集正确标签的后验概率(在训练集的先验上)最大化。下面我们以简单的分类问题为背景,探讨二者的区别。
问题描述
首先简单地定义训练集为 \((X,Y)\),其中 \(X\) 为特征集合,\(Y\) 为标签集合,每一个样本的特征与标签一一对应。现在我们获取了一个新的样本 \(x\),我们的目标是预测其标签 \(y\) 属于类别 $i=1,2,,N $ 中的哪一类。
换句话说,我们想要通过已有的训练数据,计算出后验概率 \(P\left( y ^{\left( i \right)} \mid x \right)\),使之满足: \[ i =\underset{i=1,\cdots ,N}{\mathrm{arg}\max}\;P\left( y ^{\left( i \right)} \mid x \right) \] 下面介绍两种模型针对此目标的思路:
判别式 | Discriminative
如左图所示,判别式模型首先根据训练集数据,得到一个超平面将不同类别区分开,并且使得训练集上的分类效果最好,也就是分类错误的「代价」最小化!
以 逻辑回归 算法为例,我们假设边界函数为: \[ h_{\theta}\left( x \right) =\mathrm{sigmoid}\left( \theta _0+\theta _1x_1+\theta _2x_2+\theta _3x_1x_2+\cdots \right) \] 令 \(Cost()\) 为交叉熵损失,则有代价函数: \[ J(\theta)=\frac{1}{m}\sum_{i=1}^m\text{Cost}\left(h_\theta(x^{(i)}),y^{(i)}\right) \] 通过梯度下降,我们可以求解 \(\underset{\theta}{\arg\min }J\left( \theta \right)\) ,找到训练集上最优的 \(\theta\),刻画出最佳的决策边界。当我们遇到一个新的样本时,只需将其输入 \(h_{\theta}\left( x \right)\),就能得到一个预测值,当预测值超过一定的阈值(在 \(\mathrm{sigmoid}\) 中是 \(0.5\))时,样本被预测为某一类。而这个预测值就可以用后验概率解释为: \[ h_{\theta}\left( x \right) = P\left( y = 1 \mid x \right) \]
生成式 | Generative
如右图所示,生成式模型会对每一个类别建立一个模型——有多少个类别,就建立多少个模型。当获得一个新样本时,计算该样本与每一个类别的模型的联合概率分布,将样本归为联合概率最大的一类即可。
以 朴素贝叶斯 算法为例,从训练集可以学习到:
- 先验概率:\(P\left( \omega ^{\left( j \right)} \right)\),表示对任意未知测试样例,将其归为类别 \(\omega ^{\left( j \right)}\) 的概率。
- 似然概率:\(P\left( x \mid \omega ^{\left( j \right)} \right)\),表示在类别 \(\omega ^{\left( j \right)}\) 中,出现属性等同于测试样例的训练样例的概率。
以上两个概率构成类别 $ ^{( j )}$ 的模型,利用概率乘法公式得到联合概率分布: \[ P(x, \omega ^{\left( j \right)})=P\left( x \mid \omega ^{\left( j \right)} \right) P\left( \omega ^{\left( j \right)} \right) \] 当然,也可以再算出后验概率: \[ P\left( \omega ^{\left( j \right)} \mid x \right) =\frac{P\left( x \mid \omega ^{\left( j \right)} \right) P\left( \omega ^{\left( j \right)} \right)}{P\left( x \right)}=\frac{P\left( x \mid \omega ^{\left( j \right)} \right) P\left( \omega ^{\left( j \right)} \right)}{\sum_{i=1}^N{P\left( x \mid \omega ^{\left( i \right)} \right) P\left( \omega ^{\left( i \right)} \right)}} \] 选择所有类别中最大的 \(P\left( \omega ^{\left( j \right)} \mid x \right)\) 作为样本的分类。
小结
简单地说,判别式模型是直接对后验概率建模,而生成式模型则先对联合概率进行建模。但不管是哪种模型,在分类任务中最终还是使用后验概率进行类别选择。
显然,判别式模型更直接、更简单;而生成式模型多了联合概率的计算,更具有普适性,生成的联合概率分布还可以应用到其他场景,不局限于分类。
由生成式模型可以得到判别式模型,但由判别式模型得不到生成式模型。
案例分析
假设有四个 samples:
sample 1 | sample 2 | sample 3 | sample 4 | |
---|---|---|---|---|
\(x\) | \(0\) | \(0\) | \(1\) | \(1\) |
\(y\) | \(0\) | \(0\) | \(0\) | \(1\) |
判别式模型的视角下:\(\sum_y{P\left( y\mid x \right) =1}\)
\(y=0\) | \(y=1\) | |
---|---|---|
\(x=0\) | \(1\) | \(0\) |
\(x=1\) | \(\frac{1}{2}\) | \(\frac{1}{2}\) |
生成式模型的视角下:\(\sum{P\left( x,y \right) =1}\)
\(y=0\) | \(y=1\) | |
---|---|---|
\(x=0\) | \(\frac{1}{2}\) | \(0\) |
\(x=1\) | \(\frac{1}{4}\) | \(\frac{1}{4}\) |
分析
判别式模型特点:
- 直接学习决策函数 \(y=f(x)\) 或条件概率 \(P\left( y\mid x \right)\);
- 捕捉不同类别特征的差异信息,不学习本身分布信息,无法反应数据本身特性;
- 学习成本较低,需要的计算资源较少;
- 需要的样本数可以较少,少样本也能很好学习、推断;
- 无法转换成生成式。
生成式模型的特点:
- 学习联合概率分布 \(P(x,y)\);
- 学习到的数据本身信息更多,能反应数据本身特性;
- 学习成本较高,需要更多的计算资源;
- 需要的样本数更多,样本较少时学习效果较差,无法对每一类准确建模;
- 一定条件下能转换成判别式。
二者所包含的算法
判别式模型:
- K 近邻(K-Nearest Neighbor,KNN)
- 线性回归(Linear Regression)
- 逻辑回归(Logistic Regression,LR)
- 神经网络(Neural Network,NN)
- 支持向量机(Support Vector Machines,SVM)
- 高斯过程(Gaussian Process)
- 条件随机场(Conditional Random Field,CRF)
- CART(Classification and Regression Tree)
生成式模型:
- 朴素贝叶斯(Naive Bayes)
- 高斯混合模型(Gaussian Mixture Model,GMM)
- 隐马尔可夫模型(Hidden Markov Model,HMM)
- 贝叶斯网络(Bayesian Network),也称深度信念网络(Deep Belief Network)
- 马尔可夫随机场(Markov Random Fields)