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

时光总嘲笑我的痴心妄想 提交于 2020-02-27 14:10:08

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


#1楼

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

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

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

现在,使用贝叶斯的规则,让我们替换

在等式中

。 由于您只对arg max感兴趣,因此您可以消除分母,这对于每个y都是相同的。 那么,你就离开了

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

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

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


#2楼

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

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


#3楼

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


#4楼

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

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

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

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


#5楼

我的两分钱:歧视性方法强调差异生成方法不关注差异; 他们试图建立一个代表班级的模型。 两者之间存在重叠。 理想情况下,应该使用两种方法:一种方法可用于查找相似性,另一种方法可用于查找不相似性。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!