生成算法和判别算法有什么区别?

unj*_*nj2 558 algorithm machine-learning difference

请帮助我理解生成算法和 判别算法之间的区别,记住我只是一个初学者.

Sto*_*ken 803

假设您有输入数据,x并且您希望将数据分类为标签y.生成模型学习联合概率分布p(x,y),判别模型学习条件概率分布p(y|x)- 您应该将其视为" y给定概率x".

这是一个非常简单的例子.假设您在表单中包含以下数据(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
Run Code Online (Sandbox Code Playgroud)

p(y|x)

      y=0   y=1
     -----------
x=1 | 1     0
x=2 | 1/2   1/2
Run Code Online (Sandbox Code Playgroud)

如果您花几分钟时间盯着这两个矩阵,您将理解两个概率分布之间的差异.

分布p(y|x)是将给定示例分类x为类的自然分布y,这就是为什么直接对其进行建模的算法称为判别算法.生成算法模型p(x,y),可以p(y|x)通过应用贝叶斯规则转换为然后用于分类.但是,该分发p(x,y)也可用于其他目的.例如,你可以使用p(x,y),以产生可能的(x,y)对.

从上面的描述中,您可能会认为生成模型通常更有用,因此更好,但它并不那么简单.本文是一个关于歧视性与生成性分类主题的非常受欢迎的参考文献,但它非常重要.总体要点是,判别模型通常在分类任务中优于生成模型.

  • 谢谢你的论文.作者现在是斯坦福大学的教授,并且在http://www.stanford.edu/class/cs229/materials.html上有很好的资源. (46认同)
  • 当盯着矩阵时,观察到在第一个中,所有条目总和为1.0,而在第二个中,每行总和为1.这将加速启蒙(并减少混乱) (36认同)
  • Andrew Ng [这里]的一个很好的解释(http://openclassroom.stanford.edu/MainFolder/VideoPage.php?course=MachineLearning&video=06.1-NaiveBayes-GenerativeLearningAlgorithms&speed=100) (25认同)
  • Andrew Ng的一个注释也非常有用:http://cs229.stanford.edu/notes/cs229-notes2.pdf (5认同)
  • “这就是为什么直接建模的算法被称为判别算法”,仍然不确定为什么`p(y|x)`意味着对其建模的算法被称为“判别模型”。 (2认同)

Car*_*don 287

一个生成算法模型如何将数据以分类的信号产生.它提出了一个问题:基于我的一代假设,哪个类别最有可能产生这个信号?

一个判别算法不关心是如何产生的数据,它只是分类的给定信号.

  • @mcb生成算法模拟数据是如何"生成"的,所以你问它"这个或那个类生成这个实例的可能性是多少?" 并选择具有更好概率的那个.判别算法使用数据来创建决策边界,因此您会问"此实例的决策边界的哪一侧?" 因此,它不会创建数据生成方式的模型,而是建立了它认为类之间边界的模型. (41认同)
  • 这个答案让我很困惑.两类算法都属于监督学习算法类,其学习标记训练数据的模型以导出预测其他数据的函数.您描述的判别算法听起来好像不会创建模型,这是正确的吗?如果你能在这方面提高答案,我会很高兴的. (6认同)
  • 那么生成模型似乎更适合可解释性? (3认同)

mad*_*ode 152

想象一下,您的任务是将语音分类为语言.

您可以通过以下任一方式完成:

  1. 学习每种语言,然后使用刚刚获得的知识对其进行分类

要么

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

第一个是生成方法,第二个是判别方法.

有关详细信息,请查看此参考:http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf.

  • 不是反过来吗?考虑到你学习了这门语言,你正在进行条件分配,所以它应该是一种歧视性的方法吗? (2认同)

Sau*_*rdo 127

在实践中,模型使用如下.

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

在此输入图像描述

这只是选择y考虑最有可能的课程x.这就像我们试图模拟类之间的决策边界.这种行为在神经网络中非常清楚,其中计算出的权重可以看作是一个复杂形状的曲线,隔离了空间中一个类的元素.

现在,使用贝叶斯的规则,让我们替换 在此输入图像描述 在等式中 在此输入图像描述.由于你只对arg max感兴趣,你可以消灭分母,每个分母都是一样的y.那么,你就离开了

在此输入图像描述

这是你在生成模型中使用的等式.

虽然在第一种情况下你有条件概率分布 p(y|x),它模拟了类之间的边界,但在第二种情况下你有联合概率分布 p(x,y),因为p(x,y)= p(x | y)p (y),它明确地模拟每个类的实际分布.

使用联合概率分布函数,给定a y,可以计算("生成")其各自的x.因此,它们被称为"生成"模型.

  • 通过这种推理,当应用于相同的分布时,生成和判别模型是否相等?为什么分类行为会有差异呢?或者它们在这个最大似然背景中是否相等? (3认同)

Ghr*_*rua 84

这是CS299(Andrew Ng)与该主题相关的讲义中最重要的部分,它真正帮助我理解判别性生成性学习算法之间的区别.

假设我们有两类动物,elephant(y = 1)和dog(y = 0).而x是动物的特征向量.

给定训练集,像逻辑回归或感知器算法(基本上)的算法试图找到一条直线 - 即决策边界 - 将大象和狗分开.然后,为了将新动物分类为大象或狗,它检查决定边界的哪一侧,并相应地进行预测.我们称这些判别性学习算法.

这是一种不同的方法.首先,看大象,我们可以建立一个大象的模型.然后,看着狗,我们可以建立一个单独的模型,看看狗的样子.最后,为了对新动物进行分类,我们可以将新动物与大象模型相匹配,并将其与狗模型相匹配,以查看新动物是否更像大象或更像我们在训练集中看到的狗.我们称这些生成学习算法.


Sri*_*ake 32

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

p(x,y)=p(y|x).p(x)
Run Code Online (Sandbox Code Playgroud)

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


Rav*_*i G 24

不同的模型总结在下表中: 在此输入图像描述

  • 图片是从这里获取的:https://stanford.edu/~shervine/teaching/cs-229/cheatsheet-supervised-learning (2认同)

Pra*_*wal 20

一个额外的信息点,与上面的StompChicken的答案很好.

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

判别模型学习类之间的(硬或软)边界

生成模型模拟各个类的分布

编辑:

生成模型是可以生成数据的模型.它模拟了特征和类(即完整数据).

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

例如.生成模型

  • 朴素贝叶斯模型P(c)P(d|c)- c类在哪里,d是特征向量.

    也, P(c,d) = P(c) * P(d|c)

    因此,Naive Bayes在某些形式的模型中, P(c,d)

  • 贝叶斯网

  • 马尔科夫网队

甲判别模型是只能被用于将一个鉴别/数据点进行分类.您只需要P(y|x)在这种情况下进行建模(即给定特征向量的类概率).

例如.判别模型:

  • 逻辑回归

  • 神经网络

  • 条件随机字段

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

PS:部分答案来自消息来源


Chr*_*nto 20

简短的回答

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

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

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

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

  • 判别模型学习类之间的边界。
    • 因此他们可以区分不同类型的数据实例。
  • 生成模型学习数据的分布。
    • 因此他们可以生成新的数据实例。

来自 http://primo.ai/index.php?title=Discriminative_vs._Generative 图片来源


仔细看看

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

因此,这种区分变得武断和混乱,尤其是当许多流行模型不能完全归入其中 [5,6],或者实际上是混合模型(经典的“判别”和“生成”模型的组合) .

尽管如此,它仍然是一个非常有用和常见的区别。我们可以列出一些典型的和最新的生成模型和判别模型的清晰示例:

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

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

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


来源

  1. 可能源自“机器学习 - 判别和生成”(Tony Jebara,2004)。
  2. 谷歌机器学习速成课程
  3. 生成歧视谬误
  4. “生成模型和判别模型的原理混合”(Lasserre 等人,2006 年)
  5. @shimao 的问题
  6. Binu Jasim 的回答
  7. 比较逻辑回归和朴素贝叶斯:
  8. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/04/DengJaitly2015-ch1-2.pdf
  9. “您的分类器实际上是一个基于能量的模型”(Grathwohl 等人,2019 年)
  10. 斯坦福 CS236 指出:从技术上讲,概率判别模型也是以数据为条件的标签的生成模型。但是,术语生成模型通常保留用于高维数据。

  • 这确实应该得到更多的支持。您是唯一触及我发现的“错误二分法”想法的答案。我的问题与此类似:https://stats.stackexchange.com/questions/408421/is-the-only-difference- Between-conditional-generative-models-and-discriminative (2认同)