机器学习“判定模型”和“生成模型‘有什么区别?

关注者
607
被浏览
50600

28 个回答

首先区分生成/判别方法和生成/判别模型。
有监督机器学习方法可以分为生成方法和判别方法(常见的生成方法有混合高斯模型、朴素贝叶斯法和隐形马尔科夫模型等,常见的判别方法有SVM、LR等),生成方法学习出的是生成模型,判别方法学习出的是判别模型。




接着对生成模型和判别模型做更详细一点的解释。
这里定义训练数据为(C,X),C={c1,c2,....cn}是n个训练样本的label,X={x1,x2....xn}是n个训练样本的feature。定义单个测试数据为(\tilde{c} ,\tilde{x} ),\tilde{c} 为测试数据的lable,\tilde{x} 是测试样本的feature。

1)训练完毕后,输入测试数据,判别模型直接给出的是P(\tilde{c}|\tilde{x}),即输出(label)关于输入(feature)的条件分布,实际上,这个分布的条件还有训练数据---------因为实际上我们是“看过”训练数据之后,学习到了对数据分布的后验认识,然后根据这个认识和测试样本的feature来做出测试样本属于哪个label的决策的,所以有P(\tilde{c}|\tilde{x})=P(\tilde{c}|\tilde{x},C,X)

我们认为这个条件分布P(\tilde{c}|\tilde{x},C,X)由参数\theta 决定的,
P(\tilde{c}|\tilde{x},\theta  )------------------------------------------------------------------------------------------------------------①
那么如何由P(\tilde{c}|\tilde{x},\theta  )得到P(\tilde{c}|\tilde{x} )呢?如果我们可以求出参数\theta 关于训练数据的的后验分布(这其实就是学习过程)P(\theta|C,X),那么就可以由
P(\tilde{c}|\tilde{x} )=P(\tilde{c}|\tilde{x},C,X )=\int_{}^{} P(\tilde{c},\theta|\tilde{x},C,X)d\theta=\int_{}^{} P(\tilde{c}|\tilde{x},\theta)\cdot P(\theta|C,X)d\theta  ------------②
来得到想要的答案(关于②如何得到,请参考其他地方的讨论PRML第一章公式1.68如何推导? - 机器学习 - 知乎第31页公式1.68怎么推导的啊..)。

所以现在问题转化成了求条件分布的参数\theta
关于训练数据(C,X)的后验分布P(\theta|C,X)。那么我们来看看怎么求这个后验分布。条件分布关于训练数据的似然函数
P(C|X,\theta)=L(\theta)=\prod_{i=1}^{n}P(c_{i}|x_{i},\theta) --------------------------------------------------------------------------③
有没有发现P(C|X,\theta)P(\theta|C,X)有一点像?像在\theta和C互换了位置,互为条件概率,可以考虑使用贝叶斯公式来进行转化,即
P(\theta|C,X)=\frac{P(C|X,\theta)\cdot P(\theta)}{P(C|X)} ------------------------------------------------------------------------------④
所以现在问题又进行了转化,变成了求条件分布关于训练数据的似然函数、参数\theta的先验分布和C关于X的条件分布三个小问题。我们已经知道似然函数怎么求,先验分布也不需要求(先验知识,就是我们在解决问题之前已经知道的知识),而
P(C|X)=\int_{}^{} P(C,\theta|X)d\theta=\int_{}^{}P(C|X,\theta)\cdot P(\theta)d\theta----------------------------------------------⑤
至此问题已经解决,综合上述①-⑤各式,我们终于可以求出输出关于输入的条件分布啦!
P(\tilde{c}|\tilde{x} )=\int_{}^{} P(\tilde{c}|\tilde{x},\theta)\cdot \frac{P(C|X,\theta)\cdot P(\theta)}{\int_{}^{}P(C|X,\theta)\cdot P(\theta)d\theta} d\theta  ---------------------------------------------------⑥

⑥中的两个积分的计算是很麻烦的,在实际解决问题的过程中要想办法省略掉。
对于②中积分公式可以使用variational inference的方法干掉,variational inference用一句话来说就是:如果训练样本足够多的话,可以使用\theta的最大后验分布\theta_{map}来对\theta进行点估计(point estimate)。即有:
P(\tilde{c}|\tilde{x} )=P(\tilde{c}|\tilde{x},C,X )=P(\tilde{c}|\tilde{x},\theta_{map})----------------------------------------------------------------------⑦
所以我们干掉了第一个积分问题,把问题简化成了求\theta的最大后验概率P(\theta|C,X)
观察④式可以发现分子P(C|X)是常数,如果我们省略掉④中的分子P(C|X)对结果是没有影响的(只需要对分子进行normalize就可以得到后验概率P(\theta|C,X)),那么我们又干掉了第二个积分公式,将问题简化成了求P(C|X,\theta)\cdot P(\theta)的最大值。如果先验分布在似然函数较大的区间是固定不变或变化较小的,那么问题又可以转化成求最大似然函数!
实际上,在噪声高斯分布的假设下,最小误差平方和优化问题(即求使误差平方和最小的参数)等价于求最大似然函数(即使似然函数最大的参数)


做一个总结,判别模型求解的思路是:条件分布------>模型参数后验概率最大------->(似然函数\cdot 参数先验)最大------->最大似然




2)现在考虑生成模型。给定输入\tilde{x} 生成模型可以给出输入和输出的联合分布P(\tilde{x},\tilde{c}) ,所以生成方法的目标是求出这个联合分布。这里以朴素贝叶斯模型为例,我们要求的目标可以通过:
P(\tilde{x},\tilde{c}) =P(\tilde{x}|\tilde{c} )\cdot P(\tilde{c})------------------------------------------------------------------------------------------⑧
这样将求联合分布的问题转化成了求类别先验概率和类别条件概率的问题,朴素贝叶斯方法做了一个较强的假设--------feature的不同维度是独立分布的,简化了类别条件概率的计算,如果去除假设就是贝叶斯网络,这里不再赘述。
以朴素贝叶斯为例,生成模型的求解思路是:联合分布------->求解类别先验概率和类别条件概率







最后说一说两种模型的优缺点:

生成模型:
优点:
1)生成给出的是联合分布P(\tilde{x},\tilde{c}) ,不仅能够由联合分布计算条件分布P(\tilde{c}|\tilde{x})(反之则不行),还可以给出其他信息,比如可以使用P(\tilde{x} )=\sum_{i=1}^{k}{P(\tilde{x}|\tilde{c}_{i})} *P(\tilde{c_i} )来计算边缘分布P(\tilde{x} )。如果一个输入样本的边缘分布P(\tilde{x} )很小的话,那么可以认为学习出的这个模型可能不太适合对这个样本进行分类,分类效果可能会不好,这也是所谓的outlier detection。
2)生成模型收敛速度比较快,即当样本数量较多时,生成模型能更快地收敛于真实模型。
3)生成模型能够应付存在隐变量的情况,比如混合高斯模型就是含有隐变量的生成方法。

缺点:
1)天下没有免费午餐,联合分布是能提供更多的信息,但也需要更多的样本和更多计算,尤其是为了更准确估计类别条件分布,需要增加样本的数目,而且类别条件概率的许多信息是我们做分类用不到,因而如果我们只需要做分类任务,就浪费了计算资源。
2)另外,实践中多数情况下判别模型效果更好。


判别模型:
优点:
1)与生成模型缺点对应,首先是节省计算资源,另外,需要的样本数量也少于生成模型。
2)准确率往往较生成模型高。
3)由于直接学习P(\tilde{c}|\tilde{x} ),而不需要求解类别条件概率,所以允许我们对输入进行抽象(比如降维、构造等),从而能够简化学习问题。

缺点:
1)是没有生成模型的上述优点。
假设你现在有一个分类问题,x是特征,y是类标记。用生成模型学习一个联合概率分布P(x,y),而用判别模型学习一个条件概率分布P(y|x)。
用一个简单的例子来说明这个这个问题。假设x就是两个(1或2),y有两类(0或1),有如下如下样本(1,0)、(1,0)、(1,1)、(2,1)
则学习到的联合概率分布(生成模型)如下:
-------0------1----
--1-- 1/2---- 1/4
--2-- 0 ------1/4
而学习到的条件概率分布(判别模型)如下:
-------0------1----
--1-- 2/3--- 1/3
--2-- 0--- 1
在实际分类问题中,判别模型可以直接用来判断特征的类别情况,而生成模型,需要加上贝耶斯法则,然后应用到分类中。但是,生成模型的概率分布可以还有其他应用,就是说生成模型更一般更普适。不过判别模型更直接,更简单。