对于判别模型和生成模型有两种定义,第一种定义针对的是有监督学习的分类问题。该问题的目标是给定一个样本的向量x(可以是原始数据如图像,声音,也可以是提取出来的特征向量),在这里我们将它称为输入变量,目标是预测出这个样本的类别y即标签值,一般是一个离散的标量,即类别编号。因此算法要解决的核心问题是根据训练样本建立下面这样的映射函数:
对于这个问题,有3种求解思路,下面我们分别介绍。
第一种做法称为生成模型。已知输入变量x和目标变量y,先对它们的联合概率分布p(x, y)建模,然后计算样本属于每一个类的条件概率p(y|x)即类后验概率,按照这个值来完成分类,如将样本分到概率p(y|x)最大的那个类。根据概率论的知识,有:
在这里,p(x, y)为联合概率密度函数,p(x)为样本输入向量x的边缘密度函数。对上面这种做法的直观解释是:我们已知某一个样本具有某种特征x,现在要确定它输入哪个类,而自然的因果关系是,样本之所以具有这种特征x,是因为它属于某一类。例如,我们要根据体重,脚的尺寸这两个特征x来判断一个人是男性还是女性,我们都知道,男性的体重总体来说比女性大,脚的尺寸也更大,因此从逻辑上来说,是因为一个人是男性,因此才有这种大的体重和脚尺寸。而在分类任务中要做的却相反,是给了你这样个特征的样本,让你反推这人是男性还是女性。
联合概率密度函数等于类概率p(y)与类条件概率p(x|y)即先验概率的乘积,即:
将上面两个公式合并起来,有:
这就是贝叶斯公式。它完成了因果转换,我们要完成的是由果推断因,而在训练时我们建立的是因到果的模型及p(x|y),即男性和女性的体重、脚尺寸分别服从的概率分布。
总结起来,生成模型对联合概率p(x, y)建模,根据它,我们可以得到类后验概率p(y|x)。事实上,这种做法不仅仅局限于分类问题,如果将x看做可以观测的变量,y看做不可观测到的变量,只要具有这种特征的问题,我们都可以建立生成模型。
生成模型的典型代表是贝叶斯分类器,它对类条件概率p(x|y)建模,而p(x|y)p(y)就是联合概率p(x, y)。通过贝叶斯公式,根据联合概率又可以得到类后验概率:
如果只用于分类而不需要给出具体的概率值,则分母p(x)对所有类型y都是一样的,只需要计算分子p(x|y)p(y)。如果我们假设每个类y的样本的特征向量x的每个分量相互独立,则可以得到朴素贝叶斯分类器,如果假设每个类的样本服从正态分布,则p(x|y)为正态分布,此时为正态贝叶斯分类器。
生成模型的另外一个典型代表是受限玻尔兹曼机(RBM),这是一种随机性的神经网络,由两类神经元组成(每一类为一个层),量个层之间有连接关系,第一种神经元为可见变量,即可以直接观测到的值v,如图像的每个像素。第二类为隐含变量h,是不能直接观测到的变量,如图像的特征。v和h的联合概率服从玻尔兹曼分布:
根据这个联合概率,我们可以很容易得到条件概率p(x|y)和p(y|x)。例如为了得到p(y|x),可以先求边缘概率p(x),对于离散型随机变量,对y的概率求和,对于连续型随机变量,则为求积分,然后有:
生成模型最显著的一个特征是假设样本向量x服从何种概率分布,如正态分布,均匀分布。
第二种做法称为判别模型。已知输入变量x,它直接对目标变量y的条件概率p(y|x)建模。即计算样本x属于 每一类的概率。注意,这里和生成模型有一个本质的区别,那就是每一假设x服从何种概率分布,而是直接估计出条件概率p(y|x)。
这类模型的典型代表是logistic回归和softmax回归,它们直接对p(y|x)建模,而不对p(x, y)建模,即每一假设x服从何种概率分布。logistic回归用于二分类问题,它直接根据样本x估计出它是正样本的概率:
注意,这里只是直接猜测出了这个概率,而没有假设每个类的样本服从何种概率分布,即没有对p(x|y)或者p(x, y)建模。如果对logistic回归感兴趣,可以阅读SIGAI之前的公众号文章“理解logistic回归”。
softmax回归是logistic回归的多分类版本,它直接估计出一个样本向量x属于k个类中每一个类的概率:
这里预测出的是一个向量,每个分量为样本属于每个类的概率。和logistic回归一样,它是直接预测出了这个条件概率,而没有假设每个类的样本x所服从的概率分布。
第三种做法最直接,分类器根本就不建立概率模型,而是直接得到分类结果,这种是非概率模型,也称为判别模型。它直接根据样本向量x预测出类别编号y:
这类模型的典型代表是决策树,支持向量机,随机森林,kNN算法,AdaBoost算法,xgboost,标准的人工神经网络(包括全连接神经网络,卷积神经网络,循环神经网络等)。如果神经网络的最后一层是softmax变换,即softmax回归,则可以归到第二种情况里,如果没有使用,则是这第三种情况。
支持向量机的预测函数是:
它自始至终没有假设样本向量x服从何种分布,也没有估计类后验概率p(y|x)。这可以看成是一种几何划分的思想,把空间划分成多个部分。如果对支持向量机感兴趣,可以阅读SIGAI之前的公众号文章“用一张图理解支持向量机的脉络”。
类似的,决策树的预测函数时分段常数函数,直接实现从向量x到类别标签y的映射,没有计算任何概率值。如果对决策树感兴趣,可以阅读SIGAI之前的公众号文章“理解决策树”。其他的算法如随机森林,kNN,也是如此。
这类模型没有使用概率的观点进行建模,而是用几何或者分析(函数)的手段建模,如找出分类超平面或者曲面,直接得到映射函数。
一般来说,我们把使用第一种模型的分类器称为生成式分类器,把使用第二种和第三种模型的分类器称为判别式分类器。