生成式算法和判别式算法的区别是什么?

a 生成和a 生成的区别是什么 有识别力的< / >强算法?

273466 次浏览

假设您有输入数据x,并希望将数据分类为标签y。生成式模型学习联合概率分布p(x,y),判别式模型学习有条件的概率分布p(y|x)——你应该读成"给定#EYZ0 y的概率"

这里有一个非常简单的例子。假设您在(x,y)表单中有以下数据:

# EYZ0

# EYZ0

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

# EYZ0

      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(x,y)也可以用于其他目的。例如,您可以使用p(x,y)生成可能是(x,y)对。

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

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

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

一般来说,机器学习社区有一个惯例,那就是不要学你不想学的东西。例如,考虑一个分类问题,目标是为给定的x输入分配y个标签。如果我们使用生成模型

p(x,y)=p(y|x).p(x)

我们必须为p(x)建模,而p(x)与当前任务无关。像数据稀疏性这样的实际限制将迫使我们用一些较弱的独立性假设来建模p(x)。因此,我们直观地使用判别模型进行分类。

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

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

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

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

第一个是生成方法,第二个是区别的方法。

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

在实践中,模型的使用如下。

有识别力的模型中,要从训练示例x中预测标签y,您必须评估:

enter image description here

它只是选择最可能的类y,考虑x。就像我们在尝试建模类之间的决策边界。这种行为在神经网络中非常明显,其中计算的权重可以被视为一个复杂形状的曲线,将空间中一个类的元素隔离开来。

现在,使用贝叶斯规则,让我们将enter image description here替换为enter image description here。因为你只对arg马克斯感兴趣,你可以擦掉分母,这对每个y都是一样的。所以,你剩下

enter image description here

这就是你在生成模型中使用的方程。

在第一种情况下,您有条件概率分布 p(y|x),它建模了类之间的边界,在第二种情况下,您有联合概率分布 p(x, y),因为p(x | y) p(y) = p(x, y),它是显式地对每个类的实际分布建模

对于联合概率分布函数,给定一个y,你可以计算(“生成”)它各自的x。因此,它们被称为“生成”模型。

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

有识别力的模型生成模型之间的根本区别是:

课间学习(硬或软)边界

生成模型为单个类的分布建模

编辑:

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

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

如。生成模型

  • 朴素贝叶斯模型P(c)P(d|c) -其中c是类,d是特征向量。

    同时,# EYZ0

    因此,某些形式的朴素贝叶斯模型P(c,d)

  • < p >贝叶斯网络

  • < p >马尔可夫网

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

如。关于判别模型:

  • < p >逻辑回归

  • < p >神经网络

  • 条件随机场

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

PS:部分答案来自

下面是CS299的课堂讲稿(作者:Andrew Ng)中与主题相关的最重要的部分,其中真的帮助我理解区别的生成学习算法之间的区别。

假设我们有两类动物,大象(y = 1)和狗(y = 0)。x是动物的特征向量。

给定一个训练集,像逻辑回归或感知器算法这样的算法(基本上)试图找到一条直线——也就是一个决策边界——将大象和狗分开。然后,分类 一种新动物,比如大象或狗,它会检查它的哪一边 决定其所处的边界,并据此做出预测。我们将其命名为判别学习算法.

这里有一个不同的方法。首先,看看大象,我们可以建立一个 大象的模型。然后,看着狗,我们可以建立一个 单独的狗狗模型。最后,为了给一种新动物分类, 我们可以将新动物与大象模型相匹配,并将其与 狗的模型,看看新动物是否更像大象 或者更像我们在训练场上看到的狗。我们将其命名为生成式学习算法.

我的观点是: 歧视性的方法突出了差异 生成方法不关注差异;他们试图建立一个能代表班级的模型。 两者之间有重叠之处。 理想情况下,两种方法都应该使用:一种有助于发现相似之处,另一种有助于发现不同之处。< / p >

生成算法模型将完全从训练数据中学习,并预测响应。

判别算法的工作就是对两种结果进行分类或区分。

不同的模型总结如下表: # EYZ0 < / p >

图片来源:监督学习备考单-斯坦福CS 229(机器学习)

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

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

简短的回答

这里的许多答案都依赖于广泛使用的数学定义[1]:

  • 判别模型直接学习条件预测分布p(y|x)
  • 生成式模型学习联合分布p(x,y)(或者更确切地说,p(x|y)p(y))。
    • 预测分布p(y|x)可以用贝叶斯规则得到。
    • 李< / ul > < / >

尽管非常有用,但是这个狭窄的定义假设有监督设置,在检查无监督或半监督方法时不太方便。它也是并不适用于许多当代的深度生成建模方法。例如,现在我们有隐式生成模型,例如生成式对抗网络(GANs),它是基于采样的,甚至不显式地对概率密度p(x)建模(而是通过判别器网络学习发散度测量)。但我们称其为“生成模型”,因为它们用于生成(高维[10])样本。

更广泛和更基本的定义[2]似乎同样适合这个普遍问题:

    判别模型学习类之间的边界。
    • 所以他们可以在不同类型的数据实例之间使用歧视
    • 李< / ul > < / > 生成模型学习数据的分布。
      • 因此他们可以生成新的数据实例。
      • 李< / ul > < / >

From http://primo.ai/index.php?title=Discriminative_vs._Generative # EYZ0 < / em >


仔细观察

即便如此,这个问题还是暗示了一种错误的二分法。生成判别“二分法”实际上是一个光谱,您甚至可以在[4]之间平滑地插入它。

因此,这种区分变得武断和令人困惑,特别是当许多流行的模型并没有整齐地归入其中一个或另一个时[5,6],或者实际上是混合模型(经典的“判别”和“生成”模型的组合)。

尽管如此,这仍然是一个非常有用和常见的区别。我们可以列出一些生成式和判别式模型的明确例子,既有标准的,也有最近的:

  • 生成:朴素贝叶斯,潜狄利克雷分配(LDA),生成对抗网络(GAN),变分自编码器(VAE),归一化流。
  • 判别:支持向量机(SVM),逻辑回归,大多数深度神经网络。

还有很多有趣的工作深入研究了生成-判别划分[7]和频谱[4,8],甚至将判别模型转换为生成模型[9]。

最后,定义在不断变化,尤其是在这个快速发展的领域:)最好对它们有所保留,甚至可以为自己和他人重新定义它们。


来源

  1. 可能起源于“机器学习-判别和生成”(Tony Jebara, 2004)。
  2. 机器学习速成班by谷歌
  3. 生成-判别谬误 .
  4. "生成和判别模型的原则混合" (Lasserre等人,2006)
  5. @世茂的问题
  6. Binu Jasim的回答
  7. 逻辑回归与朴素贝叶斯比较:

文章帮助我理解了这个概念。

总之,

  • 两者都是概率模型,这意味着它们都使用概率(准确地说,是条件概率)来计算未知数据的类别。
  • 生成式分类器在数据集上应用联合PDF &贝叶斯定理,并使用这些值计算条件概率。
  • 判别分类器直接在数据集上找到条件概率

一些不错的阅读材料:条件概率联合PDF