判别式模型和生成式模型

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

判别式模型

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

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

生成式模型

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

$$ \begin{equation} p(y\vert x) = \frac{p(x\vert y)p(y)}{p(x)} \end{equation} $$

\(\arg\max\limits_{y}p(y\vert x)\)进行如下的代换:

$$ \begin{aligned} \arg\max\limits_{y}p(y\vert x) &= \arg\max\limits_y\frac{p(x\vert y)p(y)}{p(x)} \\ &= \arg\max\limits_y p(x\vert y)p(y) \end{aligned} $$

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

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

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

举例

其实,可以看到,这两种分类仅仅是计算的"路径"不同而已,"终点"却是相同的,都是要计算\(\arg\max\limits_{y}p(y\vert x)\)

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

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

高斯判别分析

多变量正态分布

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

多变量高斯分布\(\cal{N}(\mu,\Sigma)\)的密度函数是:

$$ \begin{equation} p(x;\mu,\Sigma) = \frac{1}{(2\pi)^{\frac{n}{2}}\big\vert\Sigma\big\vert^{\frac{1}{2}}}e^{-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)} \end{equation} $$

如果\(X\sim \cal{N}(\mu,\Sigma)\),则:

$$ \begin{aligned} E[X] &= \mu \\ Cov(X) &= \Sigma \end{aligned} $$

高斯判别分析模型

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

$$ \begin{aligned} y &\sim Bernoulli(\phi) \\ x\big\vert y &\sim \cal{N}(\mu_0,\Sigma) \\ x\big\vert y &\sim \cal{N}(\mu_1,\Sigma) \end{aligned} $$

将其展开就是:

$$ \begin{aligned} p(y) &= \phi^y(1-\phi)^{1-y} \\ p(x\vert y = 0) &= \frac{1}{(2\pi)^{\frac{n}{2}}\big\vert\Sigma\big\vert^{\frac{1}{2}}}e^{-\frac{1}{2}(x-\mu_0)^T\Sigma^{-1}(x-\mu_0)} \\ p(x\vert y = 1) &= \frac{1}{(2\pi)^{\frac{n}{2}}\big\vert\Sigma\big\vert^{\frac{1}{2}}}e^{-\frac{1}{2}(x-\mu_1)^T\Sigma^{-1}(x-\mu_1)} \end{aligned} $$

其中,模型的参数是\(\phi,\Sigma,\mu\_0,\mu\_1\),对应的对数似然函数可以写成:

$$ \begin{aligned} \ell(\phi,\mu_0,\mu_1,\Sigma) &= \log\prod\limits_{i=1}^mp(x^{(i)},y^{(i)};\phi,\mu_0,\mu_1,\Sigma) \\ &= \log\prod\limits_{i=1}^mp(x^{(i)}\vert y^{(i)};\phi,\mu_0,\mu_1,\Sigma)p(y^{(i)};\phi) \end{aligned} $$

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

$$ \begin{aligned} \phi &= \frac{1}{m}1\{y^{(i)}=1\} \\ \mu_0 &= \frac{\sum\limits_{i=1}^m1\{y^{(i)}=0\}x^{(i)}}{\sum\limits_{i=1}^m1\{y^{(i)}=0\}} \\ \mu_1 &= \frac{\sum\limits_{i=1}^m1\{y^{(i)}=1\}x^{(i)}}{\sum\limits_{i=1}^m1\{y^{(i)}=1\}} \\ \Sigma &= \frac{1}{m}\sum\limits_{i-1}^m(x^{(i)} - \mu_{y^{(i)}})(x^{(i)} - \mu_{y^{(i)}})^T \end{aligned} $$

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

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

参考资料


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

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

Share on: TwitterFacebookEmail


Flyaway is the owner of this blog.
Comments

So what do you think? Did I miss something? Is any part unclear? Leave your comments below

comments powered by Disqus

Published

Category

machine-learning

Tags

Contact