当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《生成算法和判别算法有什么区别?》经验,为你挑选了8个好方法。

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



1> Stompchicken..:

假设您有输入数据,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

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

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


谢谢你的论文.作者现在是斯坦福大学的教授,并且在http://www.stanford.edu/class/cs229/materials.html上有很好的资源.
当盯着矩阵时,观察到在第一个中,所有条目总和为1.0,而在第二个中,每行总和为1.这将加速启蒙(并减少混乱)
Andrew Ng [这里]的一个很好的解释(http://openclassroom.stanford.edu/MainFolder/VideoPage.php?course=MachineLearning&video=06.1-NaiveBayes-GenerativeLearningAlgorithms&speed=100)
Andrew Ng的一个注释也非常有用:http://cs229.stanford.edu/notes/cs229-notes2.pdf

2> Carlos Rendo..:

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

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


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

3> madCode..:

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

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

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

要么

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

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

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


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

4> Saul Berardo..:

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

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

在此输入图像描述

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

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

在此输入图像描述

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

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

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


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

5> Ghrua..:

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

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

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

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



6> Sriwantha At..:

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

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

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



7> Ravi G..:

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


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

8> Prakhar Agra..:

一个额外的信息点,与上面的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:部分答案来自消息来源

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有