对于机器学习模型,我们可以根据模型对数据的建模方式将模型分为两大类,生成式模型和判别式模型。如果我们要训练一个关于猫狗分类的模型,对于判别式模型,只需要学习二者差异即可。比如说猫的体型会比狗小一点。而生成式则不一样,需要学习猫长什么样,狗长什么样。有了两者的长相以后,再根据长相去区分。具体而言:
- 生成式模型:由数据学习联合概率分布P(X,Y),然后由P(Y/X) = P(X,Y)/P(X)求出概率分布P(Y/X)作为预测的模型。该方法表示了给定输入X与产生输出Y的生成关系。
- 判别式模型:由数据直接学习决策函数Y = f(X)或条件概率分布P(Y/X)作为预测模型,即判别模型。判别方法关心的是对于给定的输入X,应该预测什么样的输出Y。
对于上述两种模型,从文字上理解起来似乎不太直观。我们举一个例子来说明一下,对于性别分类问题,分别用不同的模型来做:
(1)对于生成式模型:可以训练一个模型,学习输入的人的特征X和性别Y的关系。比如下图所示:
Y(性别) | 0 | 1 | |
---|---|---|---|
X(特征) | 0 | 1/4 | 3/4 |
1 | 3/4 | 1/4 |
这个数据可以统计得到,即统计人的特征X = 0,1…的时候,其类别为Y = 0,1…的概率。统计得到上述联合概率分布P(X,Y)后,可以学习一个模型,比如让二维高斯分布去拟合上述数据,这样就学习到了X,Y的联合分布。在预测时,如果我们希望给一个输入特征X,预测其类别,则需要通过贝叶斯公式得到条件概率分布才能进行推断:
P(Y∣X)=P(X,Y)P(X)=P(X,Y)P(X∣Y)P(Y)P(Y|X)={\frac{P(X,Y)}{P(X)}}={\frac{P(X,Y)}{P(X|Y)P(Y)}}P(Y∣X)=P(X)P(X,Y)=P(X∣Y)P(Y)P(X,Y)
(2)如果用判别式模型:可以训练一个模型,输入人的特征X,这些特征包括人的五官,穿衣风格,发型等。输出则是对于性别的判断概率,这个概率服从一个分布,分布的取值只有两个,要么男,要么女,记这个分布为Y。这个过程学习了一个条件概率分布P(Y/X),即输入特征X的分布已知条件下,Y的概率分布。
显然,从上面的分析可以得出,判别式模型似乎要方便很多,因为生成式模型要学习一个X,Y的联合分布往往需要很多数据,而判别式模型需要的数据则相对少,因为判别式模型更关注输入特征的差异性。不过生成式既然使用了更多数据来生成联合分布,自然能够提供更多的信息,现在有一个样本(X,Y),其联合概率P(X,Y)经过计算特别小,那么可以认为这个样本是异常样本。这种模型可以用来做anomaly detection。