判别式模型和生成式模型

对不同的监督学习的模型来说,它们的最终目标总是在给定测试样例x的情况下,预测出其最有可能的类别y,也就是说优化目标总是argmaxyp(y|x)。但是,求解这个argmaxyp(y|x)的过程却有着各种各样不同的方法,但是总体来来说,根据求解方法的不同,可以将这些模型分成两种类别。

判别式模型

其中一种是直接学习得到p(y|x),更加准确来说,是直接学习得到p(y|x;θ),其中θ是模型的参数,这种方法被称为是判别式模型(Discriminant Model)。属于这种方法的模型有之前的讲过的:

对于判别式模型来说,就是要从训练数据中学习得到p(y|x;θ)中的θ,从而在预测时候,能够直接根据x计算出y

生成式模型

与其相对应的另外一种方法是,利用贝叶斯法则:

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

argmaxyp(y|x)进行如下的代换:

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

注意,上述第二个等式之所以成立,是因为在给定测试数据x的情况下,p(x)是一个常量,可以不用考虑。因此,模型的求解目标就变成了p(x|y)p(y)而不是原来的p(y|x),这样的方法被称为生成式模型(Generative Model)。属于这种模型的有之前讲过的:

  • 朴素贝叶斯模型。在贝叶斯模型中,就是利用贝叶斯法则,直接计算p(x|y)p(y).

本文的后半部分还会介绍另外一种生成式模型:高斯判别分析模型1

举例

其实,可以看到,这两种分类仅仅是计算的"路径"不同而已,"终点"却是相同的,都是要计算argmaxyp(y|x)

举例2来说,假设我们要判别一个动物是大象(y=1)还是狗(y=0),对于判别式模型来说,它会考虑这个动物所有的特征,从中学习特征之间模式(p(y|x;θ)),从而判定它是大象(y=1)还是狗(y=0)。

而对于生成式模型来说,它会考察训练数据中所有的大象,学习得到一个模型(p(x|y=1)p(y=1)),然后接着考察训练数据中所有的狗,学习得到一个模型(p(x|y=1)p(y=1))。在需要预测时,将待预测的动物分别用这两种模型进行判断,然后选择可能性大的最为最终的预测类别。

高斯判别分析

多变量正态分布

高斯判别分析模型是假设p(x|y)服从多变量高斯分布的,因此我们首先需要看一下多变量的高斯分布。

多变量高斯分布N(μ,Σ)的密度函数是:

p(x;μ,Σ)=1(2π)n2|Σ|12e12(xμ)TΣ1(xμ)

如果XN(μ,Σ),则:

E[X]=μCov(X)=Σ

高斯判别分析模型

高斯判别分析模型假设p(x|y)服从多变量高斯分布,而y本身是服从贝努力分布的,所以我们有:

yBernoulli(ϕ)x|yN(μ0,Σ)x|yN(μ1,Σ)

将其展开就是:

p(y)=ϕy(1ϕ)1yp(x|y=0)=1(2π)n2|Σ|12e12(xμ0)TΣ1(xμ0)p(x|y=1)=1(2π)n2|Σ|12e12(xμ1)TΣ1(xμ1)

其中,模型的参数是ϕ,Σ,μ_0,μ_1,对应的对数似然函数可以写成:

(ϕ,μ0,μ1,Σ)=logmi=1p(x(i),y(i);ϕ,μ0,μ1,Σ)=logmi=1p(x(i)|y(i);ϕ,μ0,μ1,Σ)p(y(i);ϕ)

通过极大化这个似然函数,我们能够求得这个极大似然估计的参数是:

ϕ=1m1{y(i)=1}μ0=mi=11{y(i)=0}x(i)mi=11{y(i)=0}μ1=mi=11{y(i)=1}x(i)mi=11{y(i)=1}Σ=1mmi1(x(i)μy(i))(x(i)μy(i))T

上面的公式中,其实μ_0μ_1分别是反例的平均值和正例的平均值。

在计算出上述的这些参数之后,我们就能够求解argmaxyp(y|x)了,只需要分别计算p(x|y=1)p(y=1)p(x|y=0)p(y=0),取二者中较大的类别作为预测类别。

参考资料


  1. 虽然它名字中有"判别"二字,但它却是地地道道的生成式模型。 

  2. 这个例子来自于斯坦福公开课《机器学习》第五集 

Share on: TwitterFacebookEmail


Flyaway is the owner of this blog.

Published

Category

machine-learning

Tags

Contact