天天看点

判别模型和生成模型

在前面的章节中,我们介绍过SVM、逻辑回归,这两者都属于监督学习中的一种,即训练数据的标签是给定的,我们希望通过对训练数据进行学习,这样对于给定的新样本数据,我们可以对它的类别标签进行预测。实际上,监督学习又可以分为两类,判别模型(Discriminative model)和生成模型(generative model),前面提到的SVM和逻辑回归都属于判别模型的一种。那么判别模型和生成模型有何区别?

1.1 判别模型和生成模型的区别 

我们先来看以前讲过的SVM和逻辑回归(LR)有什么特点。这两者都是对分布概率p(y|x;θ)p(y|x;θ)进行进行学习的,这个概率表示给定一个新样本数据特征xx,模型参数θθ可以通过训练数据学习而来,我们期望对数据xx的类别标签的概率分布p(y|x;θ)p(y|x;θ)进行预测。比如,在逻辑回归中,我们对数据类别的概率分布的预测是通过模型p(y|x;θ)=g(θTx)p(y|x;θ)=g(θTx)进行判定的,其中gg表示sigmod函数。这种类型的预测模型称为判别模型,它是在有限训练样本已知的条件下学习判别函数,并不会考虑样本数据产生的模型是什么样,而直接预测模型的输出。典型的判别模型包括k近邻,感知机,决策树,SVM,逻辑回归等。

考虑这样一个例子,假设给定动物的若干个特征属性,我们希望通过这些特征学习给定的一个“个体”到底是属于“大象”(y=1)还是“狗”(y=0)。如果采用判别模型的思路,如逻辑回归,我们会根据训练样本数据学习类别分界面,然后对于给定的新样本数据,我们会判断数据落在分界面的哪一侧从而来判断数据究竟是属于“大象”还是属于“狗”。在这个过程中,我们并不会关心,究竟“大象”这个群体有什么特征,“狗”这个群体究竟有什么特征。 

现在我们来换一种思路,我们首先观察“大象”群体,我们可以根据“大象”群体特征建立模型,然后再观察“狗”群体特征,然后再建立“狗”的模型。当给定新的未知个体时,我们将该个体分别于“大象”群体和“狗”群体模型进行比较,看这个个体更符合哪个群体模型的特征。

所以分析上面可知,判别模型是直接学习p(y|x)p(y|x),或者直接从特征空间学习类别标签;生成模型是对类别模型进行学习,即学习p(x|y)p(x|y)(每一类别数据的特征模型)和p(y)p(y)(别类概率)。如在上面的例子中,对于“大象”群体,特征分布可以表示为p(x|y=1)p(x|y=1),对“狗”群体建立特征模型p(x|y=0)p(x|y=0)。假设类别概率分布p(y)p(y)是已知的,那么我们可以通过贝叶斯公式,对给定数据特征xx的类别后验概率推导为, 

p(y|x)=p(x|y)p(y)p(x)p(y|x)=p(x|y)p(y)p(x)

其中,p(x)=p(x|y=1)p(y=1)+p(x|y=0)p(y=0)p(x)=p(x|y=1)p(y=1)+p(x|y=0)p(y=0)(每一类的类别概率乘以该类别内的特征分布概率就是总的特征分布概率),所以p(x)p(x)也可以表达为模型p(x|y)p(x|y)和类别概率p(y)p(y)了。在进行类别判定时,我们会分别计算数据xx属于各个别类的概率大小,并将xx的标签赋予为概率更大的类别,也就是, 

argmaxyp(y|x)=argmaxyp(x|y)p(y)p(x)=argmaxyp(x|y)p(y)argmaxyp(y|x)=argmaxyp(x|y)p(y)p(x)=argmaxyp(x|y)p(y)

最后一个式子是因为对于所有类别的特征概率分布都是一样的,所以可以不考虑p(x)p(x)。所以,实际上,生成模型是对联合概率分布p(x,y)=p(x|y)p(y)p(x,y)=p(x|y)p(y)进行学习的。常用的生成模型有朴素贝叶斯,隐马尔可夫等,HMM等。

继续阅读