可生成式和可生成式的区别是什么 有识别力的算法?


当前回答

假设你有一个输入数据x,你想把数据分类为标签y。生成模型学习联合概率分布p(x,y),判别模型学习条件概率分布p(y|x)——你应该把它理解为“给定x的y的概率”。

这里有一个非常简单的例子。假设你有(x,y)形式的以下数据:

(1,0), (1,0), (2,0), (2, 1)

p (x, y)

      y=0   y=1
     -----------
x=1 | 1/2   0
x=2 | 1/4   1/4

p (y | x)

      y=0   y=1
     -----------
x=1 | 1     0
x=2 | 1/2   1/2

如果你花几分钟时间盯着这两个矩阵看,你就会明白这两个概率分布之间的区别。

分布p(y|x)是将给定示例x分类为y类的自然分布,这就是为什么直接对其建模的算法被称为判别算法。生成算法建模p(x,y),应用贝叶斯规则将p(y|x)转化为p(y|x),用于分类。然而,分布p(x,y)也可以用于其他目的。例如,您可以使用p(x,y)来生成可能的(x,y)对。

从上面的描述中,您可能会认为生成模型更普遍,因此更好,但它并不是那么简单。这篇论文是关于区分分类器和生成分类器的一个非常流行的参考,但它相当沉重。总的要点是,在分类任务中,判别模型通常优于生成模型。

其他回答

想象一下,你的任务是将演讲分类为一种语言。

你可以通过以下任何一种方式:

学习每一种语言,然后用你刚刚学到的知识对它进行分类

or

在不学习语言的情况下确定语言模型的差异,然后对语音进行分类。

第一种是生成方法,第二种是判别方法。

查看参考资料了解更多细节:http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf。

假设你有一个输入数据x,你想把数据分类为标签y。生成模型学习联合概率分布p(x,y),判别模型学习条件概率分布p(y|x)——你应该把它理解为“给定x的y的概率”。

这里有一个非常简单的例子。假设你有(x,y)形式的以下数据:

(1,0), (1,0), (2,0), (2, 1)

p (x, y)

      y=0   y=1
     -----------
x=1 | 1/2   0
x=2 | 1/4   1/4

p (y | x)

      y=0   y=1
     -----------
x=1 | 1     0
x=2 | 1/2   1/2

如果你花几分钟时间盯着这两个矩阵看,你就会明白这两个概率分布之间的区别。

分布p(y|x)是将给定示例x分类为y类的自然分布,这就是为什么直接对其建模的算法被称为判别算法。生成算法建模p(x,y),应用贝叶斯规则将p(y|x)转化为p(y|x),用于分类。然而,分布p(x,y)也可以用于其他目的。例如,您可以使用p(x,y)来生成可能的(x,y)对。

从上面的描述中,您可能会认为生成模型更普遍,因此更好,但它并不是那么简单。这篇论文是关于区分分类器和生成分类器的一个非常流行的参考,但它相当沉重。总的要点是,在分类任务中,判别模型通常优于生成模型。

之前的答案都很好,我想再补充一点。

从生成算法模型中,我们可以推导出任何分布;而我们只能从判别算法模型中得到条件分布P(Y|X)(或者我们可以说它们只对判别Y的标签有用),这就是为什么它被称为判别模型。判别模型不假设X是独立的给定Y($X_i \perp X_{-i} | Y$),因此通常更强大的计算条件分布。

这是一个额外的信息点,与上面StompChicken的回答相吻合。

判别模型和生成模型的根本区别在于:

判别模型学习类之间的(硬的或软的)边界 生成模型为单个类的分布建模

编辑:

生成式模型是可以生成数据的模型。它同时对特征和类(即完整的数据)建模。

如果我们对P(x,y)建模:我可以使用这个概率分布来生成数据点——因此所有建模P(x,y)的算法都是生成的。

如。生成模型

朴素贝叶斯模型P(c)和P(d|c) -其中c是类,d是特征向量。 P(c,d) = P(c) * P(d|c) 因此,某些形式的朴素贝叶斯模型,P(c,d) 贝叶斯网 马尔可夫网

判别模型是指只能用于对数据点进行判别/分类的模型。 你只需要在这种情况下建模P(y|x),(即给定特征向量的类别概率)。

如。关于判别模型:

逻辑回归 神经网络 条件随机场

一般来说,生成式模型比判别式模型需要更多的建模,因此有时不那么有效。事实上,大多数(不确定是否全部)无监督学习算法,如聚类等,可以被称为生成式,因为它们建模P(d)(并且没有类:P)

附言:部分答案来源于原文

生成算法对数据如何生成进行建模,以便对信号进行分类。它提出了一个问题:根据我的世代假设,哪个类别最有可能产生这个信号?

判别算法并不关心数据是如何产生的,它只是对给定的信号进行分类。