生成模型和判别模型

Posted on By Jason Hao

宏观理解

在所有的机器学习模型中,我们可以把他们分为两类。其中一类叫生成模型(generative model),另一类叫判别模型(discriminative model)。这两种模型可以分别运用到不同的任务中。比如我们有一个自然段,我们可以用生成模型来生成更多的句子,常见的应用比如句子补全。我们也可以用判别模型来判断这个自然段的情感分类,是消极还是积极。

微观分析

判别模型

判别模型又可以叫做条件概率模型,估计的是条件概率分布。即在给定x的情况下,求出最大可能的y
所以判别模型的损失函数即要求出max p(y|x)的值。

生成模型

生成模型计算的是联合概率分布,写作p(x,y)。当我们给出来x和y之后,我们想最大化x和y的联合概率,也就是说我们要知道当y是已知的情况下,x会按照什么样的分布发展。 所以生成模型的损失函数也就是要最大化这个联合概率p(x,y),即写作 max p(x,y)。 那么为什么我们可以通过最大化它来找到概率分布呢?我们可以把p(x,y)写成p(x,y) = p(x|y) * p(y)。其中p(y)是label的先验,那么p(x|y)即是可以学习到x分布的部分。 所以在我们最大化p(x,y)的同时,我们也是在最大化p(x|y),即给定y之后,x最有可能的分布是什么样子的。 当然我们也可以把损失函数写成 max p(x,y) = p(y|x) * p(x)。此时我们最大化的则变成了 max p(y|x),与判别模型相同。所以我们可以得出一条结论,即 生成模型和判别模型都可以用来做判别,但是判别模型只能用来做判别。

总结

毕竟术业有专攻,如果我们做的任务是分类问题,通常来讲判别模型是要优于生成模型的。但是如果手头的数据量很小,则生成模型会有优于判别模型的可能。